{"components":{"parameters":{"IdempotencyKey":{"description":"Optional key that makes a retry of this request return the first response instead of running it again. Replays last 24 hours and are scoped to the credential, method and path.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":200,"type":"string"}},"Cursor":{"description":"Opaque v3 cursor returned as meta.next_cursor from the previous page.","in":"query","name":"cursor","schema":{"type":"string"}},"Limit":{"description":"Maximum items to return. Defaults to 50.","in":"query","name":"limit","schema":{"default":50,"maximum":200,"minimum":1,"type":"integer"}},"ProjectHeader":{"description":"Project public ID (prj_...) targeted by this personal-access-token request. Optional. Selection precedence is: {project_id} path parameter, X-Bisibility-Project header, project query parameter, then inference when the PAT owner belongs to exactly one project. Project API keys and paths that already carry a project ID ignore it.","in":"header","name":"X-Bisibility-Project","required":false,"schema":{"type":"string"}},"ProjectQuery":{"description":"Query-parameter equivalent of the X-Bisibility-Project header for personal-access-token project selection. Optional. Selection precedence is: {project_id} path parameter, X-Bisibility-Project header, project query parameter, then inference when the PAT owner belongs to exactly one project.","in":"query","name":"project","required":false,"schema":{"type":"string"}},"SourceHeader":{"description":"Declares the client that produced the request for usage reporting: sdk, cli or mcp. Optional; any other value counts as api. It never changes authentication or which budget applies (every bearer-authenticated request counts against the API, MCP and SDK budget).","in":"header","name":"X-Bisibility-Source","required":false,"schema":{"enum":["sdk","cli","mcp"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"RequestSource"}}},"schemas":{"AccountAnalyticsConsent":{"type":"object","required":["analytics","decided_at","source","version"],"properties":{"analytics":{"type":"boolean"},"decided_at":{"type":["string","null"],"format":"date-time"},"source":{"type":["string","null"],"enum":["web","ios","api",null],"x-bisibility-enum":"open","x-bisibility-name":"AnalyticsConsentSource"},"version":{"type":"integer","minimum":1}}},"PublicIdV3":{"description":"Opaque v3 public resource ID. Internal database IDs are never accepted or returned.","pattern":"^[a-z]+_[a-z][a-z0-9]{23}$","type":"string"},"CloudImportAlertRule":{"additionalProperties":false,"properties":{"change_pct":{"type":["number","null"]},"channels":{"description":"Delivery channels for alert notifications. Slack tenant delivery is available as an API-only preview. Workspace installation and channel management are not yet exposed in the dashboard. Push sends to the iOS devices that project members registered through /me/push-tokens; alerts from scheduled checks arrive as one summary push per rule. Every fired alert also creates an in-app notification, with or without channels.","items":{"enum":["email","slack","webhook","push"],"type":"string"},"type":"array"},"competitor_domain":{"type":["string","null"]},"condition_type":{"enum":["change_pct","competitor_overtake","ctr_drop","downtrend","enters_top_n","exits_top_n","position_drop","serp_feature","threshold","url_mismatch"],"type":"string"},"drop_positions":{"minimum":1,"type":["integer","null"]},"enabled":{"type":"boolean"},"id":{"pattern":"^alr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"alr"},"name":{"maxLength":120,"minLength":1,"type":"string"},"serp_feature":{"type":["string","null"]},"severity":{"enum":["info","warning","urgent"],"type":"string"},"target_type":{"enum":["all","keyword","tag"],"type":"string"},"targets":{"items":{"$ref":"#/components/schemas/CloudImportAlertRuleTarget"},"maxItems":1000,"type":"array"},"threshold_position":{"minimum":1,"type":["integer","null"]},"top_n":{"minimum":1,"type":["integer","null"]}},"required":["id","name"],"type":"object"},"CloudImportAlertRuleTarget":{"discriminator":{"propertyName":"type"},"oneOf":[{"$ref":"#/components/schemas/CloudImportKeywordAlertTarget"},{"$ref":"#/components/schemas/CloudImportTagAlertTarget"}]},"CloudImportKeywordAlertTarget":{"additionalProperties":false,"properties":{"device":{"enum":["desktop","mobile"],"type":"string"},"keyword":{"maxLength":180,"minLength":1,"type":"string"},"keyword_id":{"pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"location":{"description":"Human-readable source location label. Version 7 identifies the location by location_key.","maxLength":240,"minLength":1,"type":"string"},"location_key":{"description":"Canonical source Location key. Required by version 7 exports.","type":"string"},"type":{"const":"keyword","type":"string"}},"required":["keyword_id","type"],"type":"object"},"CloudImportTagAlertTarget":{"additionalProperties":false,"properties":{"tag":{"maxLength":80,"minLength":1,"type":"string"},"type":{"const":"tag","type":"string"}},"required":["tag","type"],"type":"object"},"CloudImportChunkResponse":{"properties":{"chunk_count":{"minimum":1,"type":"integer"},"chunks_received":{"minimum":0,"type":"integer"},"state":{"enum":["receiving"],"type":"string"}},"required":["state","chunks_received","chunk_count"],"type":"object"},"CloudImportCompatibility":{"properties":{"app_version":{"type":"string"},"latest_migration":{"type":["string","null"]},"schema_versions_supported":{"items":{"enum":[7,6],"type":"integer"},"type":"array"}},"required":["schema_versions_supported","app_version","latest_migration"],"type":"object"},"CloudImportCompetitor":{"additionalProperties":false,"properties":{"domain":{"description":"Canonical lowercase hostname without a scheme, path, www prefix, surrounding whitespace, or trailing dot.","maxLength":253,"minLength":1,"type":"string"},"id":{"pattern":"^cmp_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"cmp"},"label":{"maxLength":80,"type":["string","null"]}},"required":["id","domain"],"type":"object"},"CloudImportCounts":{"additionalProperties":{"type":"integer"},"type":"object"},"CloudImportFinalizeResponse":{"properties":{"counts":{"$ref":"#/components/schemas/CloudImportCounts"},"job_id":{"pattern":"^imp_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"imp"},"state":{"enum":["done"],"type":"string"}},"required":["counts","job_id","state"],"type":"object"},"CloudImportKeyword":{"additionalProperties":false,"properties":{"device":{"enum":["desktop","mobile"],"type":"string"},"id":{"pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"keyword":{"maxLength":180,"minLength":1,"type":"string"},"location":{"description":"Human-readable source location label. Version 7 identifies the location by location_key.","maxLength":240,"minLength":1,"type":"string"},"location_key":{"description":"Canonical source Location key. Required by version 7 exports.","type":"string"},"rankingHistory":{"items":{"$ref":"#/components/schemas/CloudImportRankingHistory"},"maxItems":5000,"type":"array"},"tags":{"items":{"maxLength":48,"minLength":1,"type":"string"},"maxItems":12,"type":"array"},"target_url":{"description":"Absolute URL, path, null, or omitted.","maxLength":500,"type":["string","null"]}},"required":["id","keyword","device","location"],"type":"object"},"CloudImportNotificationPreference":{"additionalProperties":false,"properties":{"alert_email":{"type":"boolean"},"alert_in_app":{"type":"boolean"},"check_email":{"type":"boolean"},"check_in_app":{"type":"boolean"},"import_email":{"type":"boolean"},"import_in_app":{"type":"boolean"},"invite_email":{"type":"boolean"},"invite_in_app":{"type":"boolean"},"report_email":{"type":"boolean"}},"type":"object"},"CloudImportPackage":{"additionalProperties":false,"properties":{"keywords":{"items":{"$ref":"#/components/schemas/CloudImportKeyword"},"maxItems":500,"type":"array"},"project_id":{"pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"scope":{"enum":["current","history"],"type":"string"},"alert_rules":{"items":{"$ref":"#/components/schemas/CloudImportAlertRule"},"maxItems":500,"type":"array"},"competitors":{"items":{"$ref":"#/components/schemas/CloudImportCompetitor"},"maxItems":500,"type":"array"},"notification_preferences":{"items":{"$ref":"#/components/schemas/CloudImportNotificationPreference"},"maxItems":50,"type":"array"},"saved_views":{"items":{"$ref":"#/components/schemas/CloudImportSavedView"},"maxItems":500,"type":"array"},"exported_at":{"format":"date-time","type":"string"},"version":{"description":"Version 7 exports require location_key. Version 6 and metadata-only version 5 remain import-compatible.","enum":[7,6,5],"type":"integer"}},"required":["version","project_id","keywords","alert_rules","competitors","notification_preferences","saved_views"],"type":"object"},"CloudImportRankingHistory":{"additionalProperties":false,"properties":{"checkedAt":{"format":"date-time","type":"string"},"normalizationVersion":{"enum":["v1","v2"],"type":"string"},"position":{"minimum":1,"type":["integer","null"]},"previousPosition":{"minimum":1,"type":["integer","null"]},"provider":{"maxLength":120,"minLength":1,"type":"string"},"rankingUrl":{"description":"Absolute URL, path, null, or omitted.","maxLength":500,"type":["string","null"]},"requestedDepth":{"enum":[10,20,50,100],"type":["integer","null"]}},"required":["checkedAt","normalizationVersion","position","previousPosition","provider","rankingUrl","requestedDepth"],"type":"object"},"CloudImportSavedView":{"additionalProperties":false,"properties":{"config":{},"id":{"pattern":"^viw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"viw"},"name":{"maxLength":120,"minLength":1,"type":"string"},"surface":{"enum":["keywords","competitors"],"type":"string"}},"required":["id","name"],"type":"object"},"CloudImportSessionCreate":{"additionalProperties":false,"properties":{"chunk_count":{"maximum":500,"minimum":1,"type":"integer"},"totals":{"additionalProperties":false,"properties":{"keywords":{"minimum":0,"type":"integer"},"rank_checks":{"minimum":0,"type":"integer"}},"type":"object"},"source_project_id":{"pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"version":{"enum":[7,6],"type":"integer"}},"required":["version","chunk_count","source_project_id"],"type":"object"},"CloudImportSessionCreateResponse":{"properties":{"chunk_limits":{"properties":{"max_body_bytes":{"minimum":1,"type":"integer"},"max_history_rows":{"minimum":1,"type":"integer"},"max_keywords":{"minimum":1,"type":"integer"}},"required":["max_body_bytes","max_history_rows","max_keywords"],"type":"object"},"session_id":{"pattern":"^imp_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"imp"},"state":{"enum":["receiving"],"type":"string"}},"required":["session_id","state","chunk_limits"],"type":"object"},"CloudImportSessionSections":{"additionalProperties":false,"properties":{"alert_rules":{"items":{"$ref":"#/components/schemas/CloudImportAlertRule"},"maxItems":500,"type":"array"},"competitors":{"items":{"$ref":"#/components/schemas/CloudImportCompetitor"},"maxItems":500,"type":"array"},"notification_preferences":{"items":{"$ref":"#/components/schemas/CloudImportNotificationPreference"},"maxItems":50,"type":"array"},"saved_views":{"items":{"$ref":"#/components/schemas/CloudImportSavedView"},"maxItems":500,"type":"array"},"source_keyword_ids":{"additionalProperties":{"$ref":"#/components/schemas/CloudImportSourceKeyword"},"type":"object"}},"type":"object"},"CloudImportSourceKeyword":{"additionalProperties":false,"properties":{"device":{"enum":["desktop","mobile"],"type":"string"},"location":{"description":"Human-readable source location label. Version 7 identifies the location by location_key.","maxLength":240,"minLength":1,"type":"string"},"location_key":{"description":"Canonical source Location key. Required by version 7 exports.","type":"string"},"text":{"type":"string"}},"required":["device","location","text"],"type":"object"},"CloudImportUploadChunk":{"oneOf":[{"additionalProperties":false,"properties":{"checksum":{"pattern":"^sha256:[0-9a-f]{64}$","type":"string"},"kind":{"const":"keywords","type":"string"},"keywords":{"items":{"$ref":"#/components/schemas/CloudImportKeyword"},"maxItems":500,"type":"array"}},"required":["checksum","kind","keywords"],"type":"object"},{"additionalProperties":false,"properties":{"checksum":{"pattern":"^sha256:[0-9a-f]{64}$","type":"string"},"kind":{"const":"sections","type":"string"},"sections":{"$ref":"#/components/schemas/CloudImportSessionSections"}},"required":["checksum","kind","sections"],"type":"object"}]},"KeywordMatch":{"properties":{"keyword_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"latest_position":{"type":["integer","null"]},"matched_text":{"description":"Trimmed, lowercase request text used to match this keyword.","example":"headless cms","type":"string"},"market":{"$ref":"#/components/schemas/KeywordMatchMarket"},"previous_position":{"type":["integer","null"]},"ranking_url":{"description":"Ranking URL from the most recent executed check, or null when that check has no ranking URL or no check exists. Fetch the keyword resource to read latest_successful_check for the most recent completed observation and its coverage.","type":["string","null"]},"text":{"description":"Stored keyword text, which can differ from matched_text in case and whitespace.","example":"Headless CMS","type":"string"}},"required":["keyword_id","matched_text","text","market","latest_position","previous_position","ranking_url"],"type":"object"},"KeywordMatchMarket":{"properties":{"country_code":{"example":"US","type":"string"},"device":{"enum":["desktop","mobile"],"type":"string"},"language_code":{"example":"en","type":"string"},"language_label":{"example":"English","type":"string"},"location":{"example":"United States","type":"string"},"location_key":{"example":"ES/Andalusia/Malaga@en","type":"string"}},"required":["location","location_key","country_code","language_code","language_label","device"],"type":"object"},"KeywordMatchRequest":{"properties":{"texts":{"items":{"maxLength":180,"minLength":1,"type":"string"},"maxItems":50,"minItems":1,"type":"array"}},"required":["texts"],"type":"object"},"KeywordMatchResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/KeywordMatch"},"type":"array"},"meta":{"properties":{"truncated_texts":{"description":"Normalized texts with more than 100 matching markets. Their returned rows are partial.","items":{"type":"string"},"type":"array"}},"required":["truncated_texts"],"type":"object"}},"required":["data","meta"],"type":"object"},"KeywordLatestCheck":{"description":"The most recent executed check of any status. A completed check with `position: null` can have unknown coverage; read `observation_completeness` before inferring absence within the requested depth; `latest_check.status: \"failed\"` means \"unknown, the check did not run to completion\".","properties":{"checked_at":{"format":"date-time","type":"string"},"error":{"type":["string","null"]},"error_code":{"type":["string","null"]},"id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"observation_completeness":{"description":"Persisted coverage, or null when legacy metadata is absent. Only complete coverage supports absence within depth; a valid positive rank remains valid with truncated coverage.","enum":["complete","truncated_by_stop_on_match","unknown",null],"type":["string","null"],"x-bisibility-enum":"open","x-bisibility-name":"ObservationCompleteness"},"position":{"type":["integer","null"]},"run_id":{"example":"rcr_a00000000000000000000000","pattern":"^rcr_[a-z][a-z0-9]{23}$","type":["string","null"],"description":"Rank-check run that produced this check, or null for a legacy row.","x-bisibility-public-id":"rcr"},"status":{"enum":["completed","failed","running"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"RankCheckStatus"}},"required":["checked_at","error","error_code","id","observation_completeness","position","run_id","status"],"type":["object","null"]},"KeywordLatestSuccessfulCheck":{"description":"The most recent completed check. Null position with unknown observation_completeness does not establish absence within depth.","properties":{"checked_at":{"format":"date-time","type":"string"},"id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"observation_completeness":{"description":"Persisted coverage, or null when legacy metadata is absent. Only complete coverage supports absence within depth; a valid positive rank remains valid with truncated coverage.","enum":["complete","truncated_by_stop_on_match","unknown",null],"type":["string","null"],"x-bisibility-enum":"open","x-bisibility-name":"ObservationCompleteness"},"position":{"type":["integer","null"]},"ranking_url":{"type":["string","null"]},"run_id":{"example":"rcr_a00000000000000000000000","pattern":"^rcr_[a-z][a-z0-9]{23}$","type":["string","null"],"description":"Rank-check run that produced this check, or null for a legacy row.","x-bisibility-public-id":"rcr"}},"required":["checked_at","id","observation_completeness","position","ranking_url","run_id"],"type":["object","null"]},"KeywordMetricsRequest":{"properties":{"connection_id":{"pattern":"^conn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"conn"},"estimate_only":{"default":false,"type":"boolean"},"fresh":{"default":false,"type":"boolean"},"include_clickstream":{"default":false,"type":"boolean"},"keywords":{"items":{"maxLength":80,"minLength":1,"type":"string"},"maxItems":700,"minItems":1,"type":"array"},"max_cost_cents":{"minimum":1,"type":"integer"}},"required":["keywords"],"type":"object"},"KeywordMetricsResponse":{"properties":{"cached_count":{"minimum":0,"type":"integer"},"connections":{"items":{"properties":{"id":{"pattern":"^conn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"conn"},"label":{"type":"string"},"provider":{"type":"string"}},"required":["id","label","provider"],"type":"object","x-bisibility-name":"ResearchConnection"},"type":"array"},"cost_cents":{"minimum":0,"type":"number"},"estimate":{"type":"boolean"},"estimated_cost_cents":{"minimum":0,"type":"number"},"fetched_at":{"format":"date-time","type":"string"},"fetched_count":{"minimum":0,"type":"integer"},"fetched_count_estimate":{"minimum":0,"type":"integer"},"provider":{"type":"string"},"rows":{"items":{"properties":{"keyword":{"type":"string"},"competition":{"maximum":1,"minimum":0,"type":["number","null"]},"cpc_cents":{"minimum":0,"type":["integer","null"],"x-bisibility-money":"usd_cents"},"difficulty":{"maximum":100,"minimum":0,"type":["number","null"]},"intent":{"enum":["informational","commercial","transactional","navigational","unknown",null],"x-bisibility-enum":"open","x-bisibility-name":"KeywordIntent"},"monthly_trend":{"items":{"properties":{"month":{"maximum":12,"minimum":1,"type":"integer"},"search_volume":{"type":["number","null"]},"year":{"type":"integer"}},"required":["year","month","search_volume"],"type":"object","x-bisibility-name":"MonthlySearchVolume"},"maxItems":12,"type":"array"},"search_volume":{"minimum":0,"type":["number","null"]}},"required":["keyword","competition","cpc_cents","difficulty","intent","monthly_trend","search_volume"],"type":"object"},"type":"array"},"total_count":{"minimum":0,"type":"integer"}},"required":["rows","total_count","cached_count","fetched_count","cost_cents","fetched_at","provider","connections"],"type":"object"},"KeywordResearchEstimate":{"description":"Free dry run returned for estimate_only=true. It carries per-source cost facts only and never rows, fetch times, or source statuses, so it cannot be mistaken for an empty result.","properties":{"cached":{"description":"Every planned source is cached.","type":"boolean"},"connections":{"items":{"properties":{"id":{"pattern":"^conn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"conn"},"label":{"type":"string"},"provider":{"type":"string"}},"required":["id","label","provider"],"type":"object","x-bisibility-name":"ResearchConnection"},"type":"array"},"cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"estimate":{"const":true,"type":"boolean"},"provider":{"type":"string"},"sources":{"items":{"properties":{"cached":{"type":"boolean"},"cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"source":{"enum":["related","suggestion","idea"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"KeywordResearchSource"}},"required":["source","cost_cents","cached"],"type":"object","x-bisibility-name":"KeywordResearchSourceEstimate"},"type":"array"}},"required":["estimate","sources","cost_cents","cached","provider","connections"],"type":"object"},"KeywordResearchResponse":{"oneOf":[{"$ref":"#/components/schemas/KeywordResearchEstimate"},{"$ref":"#/components/schemas/KeywordResearchResult"}],"x-bisibility-union":{"cases":["estimate","result"],"style":"tagged","tag":"estimate"}},"KeywordResearchResult":{"properties":{"cached":{"type":"boolean"},"connections":{"items":{"properties":{"id":{"pattern":"^conn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"conn"},"label":{"type":"string"},"provider":{"type":"string"}},"required":["id","label","provider"],"type":"object","x-bisibility-name":"ResearchConnection"},"type":"array"},"cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"fetched_at":{"format":"date-time","type":"string"},"provider":{"type":"string"},"rows":{"items":{"properties":{"already_tracked":{"type":"boolean"},"keyword":{"type":"string"},"source":{"enum":["related","suggestion","idea"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"KeywordResearchSource"},"competition":{"maximum":1,"minimum":0,"type":["number","null"]},"cpc_cents":{"minimum":0,"type":["integer","null"],"x-bisibility-money":"usd_cents"},"difficulty":{"maximum":100,"minimum":0,"type":["number","null"]},"intent":{"enum":["informational","commercial","transactional","navigational","unknown",null],"x-bisibility-enum":"open","x-bisibility-name":"KeywordIntent"},"monthly_trend":{"items":{"properties":{"month":{"maximum":12,"minimum":1,"type":"integer"},"search_volume":{"type":["number","null"]},"year":{"type":"integer"}},"required":["year","month","search_volume"],"type":"object","x-bisibility-name":"MonthlySearchVolume"},"maxItems":12,"type":"array"},"search_volume":{"minimum":0,"type":["number","null"]}},"required":["keyword","source","already_tracked","competition","cpc_cents","difficulty","intent","monthly_trend","search_volume"],"type":"object","x-bisibility-name":"KeywordResearchRow"},"type":"array"},"sources":{"items":{"properties":{"cached":{"type":"boolean"},"cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"reason":{"enum":["budget_exhausted","cost_limit","in_progress","needs_reauth","no_source","previous_source_failed","provider_error","rate_limited","result_limit","unsupported_location"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"KeywordResearchSourceReason"},"returned":{"minimum":0,"type":"integer"},"source":{"enum":["related","suggestion","idea"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"KeywordResearchSource"},"status":{"enum":["ok","failed","skipped"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"KeywordResearchSourceStatus"}},"required":["source","status","returned","cost_cents","cached"],"type":"object","x-bisibility-name":"KeywordResearchSourceResult"},"type":"array"},"total_count":{"minimum":0,"type":"integer"}},"required":["rows","sources","total_count","cost_cents","cached","fetched_at","provider","connections"],"type":"object"},"Me":{"properties":{"email":{"format":"email","type":"string"},"id":{"example":"usr_a00000000000000000000000","pattern":"^usr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"usr"},"name":{"type":"string"},"projects":{"items":{"properties":{"domain":{"type":"string"},"id":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"missing_provider_keys":{"description":"Paid capabilities this project cannot run on its own provider keys, each with the providers that would serve it. Empty unless `provider_keys_required` is true. Connect a key in the project's Integrations settings on the web.","items":{"properties":{"capability":{"enum":["rank_check","keyword_research","backlinks","domain_overview","ai_tracking"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"OwnKeyCapability"},"providers":{"items":{"type":"string"},"type":"array"}},"required":["capability","providers"],"type":"object","x-bisibility-name":"MissingProviderKey"},"type":"array"},"name":{"type":"string"},"provider_keys_required":{"description":"True when the project's owner account runs paid provider work only on its own provider keys. A paid request without a usable own key fails with the `byok_required` problem type before any provider call.","type":"boolean"},"role":{"enum":["admin","auditor","member","owner","viewer"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ProjectRole"}},"required":["id","name","domain","role","provider_keys_required","missing_provider_keys"],"type":"object","x-bisibility-name":"MeProject"},"type":"array"},"provider_keys_required":{"description":"True when this account runs paid provider work only on its own provider keys, connected in each project's Integrations settings on the web. Estimates remain free.","type":"boolean"}},"required":["id","email","name","projects","provider_keys_required"],"type":"object"},"DevicePushToken":{"properties":{"bundle_id":{"type":"string"},"created_at":{"format":"date-time","type":"string"},"environment":{"enum":["production","sandbox"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"DevicePushEnvironment"},"id":{"example":"dpt_a00000000000000000000000","pattern":"^dpt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"dpt"},"last_seen_at":{"format":"date-time","type":"string"},"token_suffix":{"description":"Last 8 characters of the token; the token itself is never returned.","type":"string"}},"required":["id","bundle_id","environment","created_at","last_seen_at","token_suffix"],"type":"object"},"DevicePushTokenRegister":{"additionalProperties":false,"properties":{"bundle_id":{"description":"App bundle identifier, for example com.bisibility.app.","minLength":1,"pattern":"^[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)+$","maxLength":155,"type":"string"},"environment":{"description":"APNs environment of the build: sandbox for development builds.","x-bisibility-enum":"closed","x-bisibility-name":"DevicePushEnvironmentInput","enum":["production","sandbox"],"type":"string"},"token":{"description":"APNs device token as hexadecimal.","pattern":"^[0-9A-Fa-f]{32,200}$","type":"string"}},"required":["token","environment","bundle_id"],"type":"object"},"MeDelete":{"additionalProperties":false,"description":"Confirms account deletion with the account's email address.","properties":{"confirm_email":{"maxLength":320,"minLength":3,"type":"string"}},"required":["confirm_email"],"type":"object"},"MeDeleted":{"properties":{"deleted":{"const":true,"type":"boolean"}},"required":["deleted"],"type":"object"},"MePatch":{"properties":{"name":{"maxLength":120,"minLength":1,"type":"string"}},"required":["name"],"type":"object"},"PersonalAccessToken":{"properties":{"created_at":{"format":"date-time","type":"string"},"expires_at":{"format":"date-time","type":["string","null"]},"id":{"example":"pat_a00000000000000000000000","pattern":"^pat_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"pat"},"last_used_at":{"format":"date-time","type":["string","null"]},"name":{"type":"string"},"prefix":{"example":"bsb_pat_live_xxxxxxxx","type":"string"},"revoked_at":{"format":"date-time","type":["string","null"]},"scope":{"enum":["admin","read","write"],"type":"string"}},"required":["id","name","prefix","scope","created_at","expires_at","last_used_at","revoked_at"],"type":"object"},"PersonalAccessTokenCreate":{"properties":{"expires_in_days":{"enum":[30,90,365,null],"type":["integer","null"]},"name":{"maxLength":80,"minLength":1,"type":"string"},"scope":{"default":"read","enum":["admin","read","write"],"type":"string"}},"required":["name"],"type":"object"},"PersonalAccessTokenIssued":{"allOf":[{"$ref":"#/components/schemas/PersonalAccessToken"},{"properties":{"masked_value":{"type":"string"},"token":{"example":"bsb_pat_live_...","type":"string"}},"required":["masked_value","token"],"type":"object"}]},"ProjectCreate":{"properties":{"defaults":{"properties":{"cron_expression":{"type":["string","null"]},"frequency":{"enum":["paused","manual","daily","weekly","monthly","custom_cron"],"type":"string"},"jitter_minutes":{"description":"Whole-minute random delay from 0 to 120. Set 0 to disable jitter.","maximum":120,"minimum":0,"type":"integer","default":60},"timezone":{"description":"IANA time zone that anchors monthly and custom cron wall-clock schedules. Daily and weekly use a stable keyword-specific interval phase that timezone does not move.","type":"string","default":"UTC"}},"required":["frequency"],"type":"object"},"domain":{"type":"string"},"name":{"type":"string"},"tracking_scope":{"enum":["city","country"],"type":"string"}},"required":["name","domain"],"type":"object"},"WebhookEndpoint":{"properties":{"created_at":{"format":"date-time","type":"string"},"description":{"type":["string","null"]},"enabled":{"type":"boolean"},"id":{"example":"we_a00000000000000000000000","pattern":"^we_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"we"},"last_delivery_at":{"format":"date-time","type":["string","null"]},"updated_at":{"format":"date-time","type":"string"},"url":{"format":"uri","type":"string"}},"required":["id","url","description","enabled","last_delivery_at","created_at","updated_at"],"type":"object"},"WebhookEndpointCreate":{"properties":{"description":{"type":["string","null"]},"enabled":{"default":true,"type":"boolean"},"hmac_secret":{"minLength":16,"type":"string","writeOnly":true},"url":{"format":"uri","type":"string"}},"required":["url","hmac_secret"],"type":"object"},"WebhookEndpointPatch":{"properties":{"description":{"type":["string","null"]},"enabled":{"type":"boolean"},"hmac_secret":{"minLength":16,"type":"string","writeOnly":true},"url":{"format":"uri","type":"string"}},"type":"object"},"Signal":{"properties":{"created_at":{"format":"date-time","type":"string"},"happened_at":{"format":"date-time","type":"string"},"id":{"example":"sig_a00000000000000000000000","pattern":"^sig_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"sig"},"keyword_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":["string","null"],"x-bisibility-public-id":"kw"},"payload":{"additionalProperties":true,"description":"JSON object payload. Ingestion rejects serialized payloads above 8KB.","type":["object","null"]},"project_id":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"public_id":{"example":"sig_a00000000000000000000000","pattern":"^sig_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"sig"},"severity":{"enum":["info","warning","critical"],"type":"string"},"source":{"enum":["rank_tracker","search_analytics","url_inspection","sitemap","deploy","cms","search_engine_status","manual","api"],"type":"string"},"type":{"example":"deploy.completed","pattern":"^[a-z_]+\\.[a-z_]+$","type":"string"},"url":{"format":"uri","type":["string","null"]}},"required":["id","public_id","project_id","keyword_id","source","type","severity","url","payload","happened_at","created_at"],"type":"object"},"SignalCreate":{"properties":{"happened_at":{"description":"ISO-8601 date-time when the signal happened. Defaults to now.","format":"date-time","type":"string"},"keyword_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"payload":{"additionalProperties":true,"description":"JSON object payload. Ingestion rejects serialized payloads above 8KB.","type":"object"},"severity":{"default":"info","enum":["info","warning","critical"],"type":"string"},"source":{"enum":["deploy","cms","api"],"type":"string"},"type":{"example":"deploy.completed","pattern":"^[a-z_]+\\.[a-z_]+$","type":"string"},"url":{"format":"uri","type":"string"}},"required":["source","type"],"type":"object"},"AlertRuleInput":{"properties":{"channels":{"description":"Delivery channels for alert notifications. Slack tenant delivery is available as an API-only preview. Workspace installation and channel management are not yet exposed in the dashboard. Push sends to the iOS devices that project members registered through /me/push-tokens; alerts from scheduled checks arrive as one summary push per rule. Every fired alert also creates an in-app notification, with or without channels.","items":{"enum":["email","slack","webhook","push"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"AlertChannelInput"},"type":"array","default":[]},"change_pct":{"maximum":1000,"minimum":0.1,"type":["number","null"]},"competitor_domain":{"maxLength":120,"minLength":1,"type":["string","null"]},"condition_type":{"enum":["threshold","change_pct","ctr_drop","position_drop","downtrend","enters_top_n","exits_top_n","competitor_overtake","serp_feature","url_mismatch"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"AlertConditionTypeInput"},"drop_positions":{"maximum":100,"minimum":1,"type":["integer","null"]},"enabled":{"type":"boolean","default":true},"name":{"maxLength":120,"minLength":2,"type":"string"},"market_ids":{"items":{"pattern":"^pmkt_[a-z][a-z0-9]{23}$","type":"string","minLength":1,"maxLength":120,"x-bisibility-public-id":"pmkt"},"type":"array"},"recipient_ids":{"items":{"pattern":"^usr_[a-z][a-z0-9]{23}$","type":"string","minLength":1,"maxLength":120,"x-bisibility-public-id":"usr"},"type":"array"},"serp_feature":{"maxLength":120,"minLength":1,"type":["string","null"]},"severity":{"enum":["info","warning","urgent"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"AlertSeverityInput"},"target_ids":{"items":{"oneOf":[{"pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","minLength":1,"maxLength":120,"x-bisibility-public-id":"kw"},{"pattern":"^tag_[a-z][a-z0-9]{23}$","type":"string","minLength":1,"maxLength":120,"x-bisibility-public-id":"tag"}],"x-bisibility-union":{"cases":["keyword","tag"],"style":"public_id"},"x-bisibility-name":"AlertRuleTargetIdInput"},"type":"array","default":[]},"target_type":{"enum":["all","keyword","tag"],"type":"string","default":"all","x-bisibility-enum":"closed","x-bisibility-name":"AlertTargetTypeInput"},"threshold_position":{"maximum":100,"minimum":1,"type":["integer","null"]},"top_n":{"maximum":100,"minimum":1,"type":["integer","null"]},"rule_id":{"type":"string","minLength":1,"maxLength":120,"description":"Compatibility form field; ignored on create."}},"required":["name","condition_type"],"type":"object","description":"name and condition_type are required for create and PATCH. Condition-specific fields must be supplied: threshold_position for threshold, change_pct for change_pct/ctr_drop (at most 100 for ctr_drop), drop_positions for position_drop, top_n for enters_top_n/exits_top_n, competitor_domain for competitor_overtake, serp_feature for serp_feature. Non-all targets require target_ids. Nullable condition fields accept null independently of omission."},"AlertRulePatch":{"properties":{"channels":{"description":"Delivery channels for alert notifications. Slack tenant delivery is available as an API-only preview. Workspace installation and channel management are not yet exposed in the dashboard. Push sends to the iOS devices that project members registered through /me/push-tokens; alerts from scheduled checks arrive as one summary push per rule. Every fired alert also creates an in-app notification, with or without channels.","items":{"enum":["email","slack","webhook","push"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"AlertChannelInput"},"type":"array","default":[]},"change_pct":{"maximum":1000,"minimum":0.1,"type":["number","null"]},"competitor_domain":{"maxLength":120,"minLength":1,"type":["string","null"]},"condition_type":{"enum":["threshold","change_pct","ctr_drop","position_drop","downtrend","enters_top_n","exits_top_n","competitor_overtake","serp_feature","url_mismatch"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"AlertConditionTypeInput"},"drop_positions":{"maximum":100,"minimum":1,"type":["integer","null"]},"enabled":{"type":"boolean","default":true},"name":{"maxLength":120,"minLength":2,"type":"string"},"market_ids":{"items":{"pattern":"^pmkt_[a-z][a-z0-9]{23}$","type":"string","minLength":1,"maxLength":120,"x-bisibility-public-id":"pmkt"},"type":"array"},"recipient_ids":{"items":{"pattern":"^usr_[a-z][a-z0-9]{23}$","type":"string","minLength":1,"maxLength":120,"x-bisibility-public-id":"usr"},"type":"array"},"serp_feature":{"maxLength":120,"minLength":1,"type":["string","null"]},"severity":{"enum":["info","warning","urgent"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"AlertSeverityInput"},"target_ids":{"items":{"oneOf":[{"pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","minLength":1,"maxLength":120,"x-bisibility-public-id":"kw"},{"pattern":"^tag_[a-z][a-z0-9]{23}$","type":"string","minLength":1,"maxLength":120,"x-bisibility-public-id":"tag"}],"x-bisibility-union":{"cases":["keyword","tag"],"style":"public_id"},"x-bisibility-name":"AlertRuleTargetIdInput"},"type":"array","default":[]},"target_type":{"enum":["all","keyword","tag"],"type":"string","default":"all","x-bisibility-enum":"closed","x-bisibility-name":"AlertTargetTypeInput"},"threshold_position":{"maximum":100,"minimum":1,"type":["integer","null"]},"top_n":{"maximum":100,"minimum":1,"type":["integer","null"]}},"required":["name","condition_type"],"type":"object","description":"name and condition_type are required for create and PATCH. Condition-specific fields must be supplied: threshold_position for threshold, change_pct for change_pct/ctr_drop (at most 100 for ctr_drop), drop_positions for position_drop, top_n for enters_top_n/exits_top_n, competitor_domain for competitor_overtake, serp_feature for serp_feature. Non-all targets require target_ids. Nullable condition fields accept null independently of omission. Omitted market_ids and recipient_ids preserve scope and recipients; empty arrays clear them. Other defaulted fields retain the form defaults (enabled true, channels/target_ids empty, target_type all)."},"AlertRuleDeleteResult":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"]},"RankCheckRunRead":{"type":"object","properties":{"id":{"example":"rcr_a00000000000000000000000","pattern":"^rcr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"rcr"},"project_id":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"status":{"type":"string","description":"Execution status; readers tolerate future values."},"outcome":{"type":["string","null"]},"terminal":{"type":"boolean"},"polling_state":{"type":"string","description":"terminal, blocked, deferred, active, or unknown; no rank-check row is required."},"trigger":{"type":"string"},"counts_basis":{"type":"string"},"counts":{"x-bisibility-name":"RankCheckRunCounts","type":"object","properties":{"requested":{"minimum":0,"type":"integer"},"total":{"minimum":0,"type":"integer"},"completed":{"minimum":0,"type":"integer"},"failed":{"minimum":0,"type":"integer"},"deferred":{"minimum":0,"type":"integer"},"skipped":{"minimum":0,"type":"integer"},"cancelled":{"minimum":0,"type":"integer"}},"required":["requested","total","completed","failed","deferred","skipped","cancelled"]},"keyword_count":{"minimum":0,"type":"integer"},"target_count":{"minimum":0,"type":"integer"},"planned_for":{"format":"date-time","type":["string","null"]},"launched_at":{"format":"date-time","type":["string","null"]},"started_at":{"format":"date-time","type":["string","null"]},"finished_at":{"format":"date-time","type":["string","null"]},"blocked_reason":{"type":["string","null"]},"parent_run_id":{"example":"rcr_a00000000000000000000000","pattern":"^rcr_[a-z][a-z0-9]{23}$","type":["string","null"],"x-bisibility-public-id":"rcr"},"cost_cents":{"x-bisibility-money":"usd_cents","minimum":0,"type":["number","null"]},"usage":{"x-bisibility-name":"RankCheckRunUsage","type":["object","null"],"properties":{"actual":{"minimum":0,"type":["integer","null"]},"estimated":{"minimum":0,"type":["integer","null"]},"unit":{"type":"string"}},"required":["actual","estimated","unit"]},"native_estimate":{"x-bisibility-name":"RankCheckRunNativeEstimate","type":["object","null"],"properties":{"provider_id":{"type":["string","null"]},"unit":{"type":["string","null"]},"quantity":{"minimum":0,"type":["number","null"]},"unknown_targets":{"minimum":0,"type":"integer"}},"required":["provider_id","unit","quantity","unknown_targets"]}},"required":["id","project_id","status","outcome","terminal","polling_state","trigger","counts","counts_basis","keyword_count","target_count","planned_for","launched_at","started_at","finished_at","blocked_reason","parent_run_id","cost_cents","usage","native_estimate"]},"RankCheckRunReadList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RankCheckRunRead"}},"meta":{"x-bisibility-name":"RankCheckRunListMeta","type":"object","properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"]}},"required":["data","meta"]},"AlertRule":{"anyOf":[{"properties":{"channels":{"description":"Delivery channels for alert notifications. Slack tenant delivery is available as an API-only preview. Workspace installation and channel management are not yet exposed in the dashboard. Push sends to the iOS devices that project members registered through /me/push-tokens; alerts from scheduled checks arrive as one summary push per rule. Every fired alert also creates an in-app notification, with or without channels.","items":{"enum":["email","slack","webhook","push"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertChannel"},"type":"array"},"change_pct":{"maximum":1000,"minimum":0.1,"type":["number","null"]},"competitor_domain":{"maxLength":120,"minLength":1,"type":["string","null"]},"condition_type":{"enum":["threshold","change_pct","ctr_drop","position_drop","downtrend","enters_top_n","exits_top_n","competitor_overtake","serp_feature","url_mismatch"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertConditionType"},"drop_positions":{"maximum":100,"minimum":1,"type":["integer","null"]},"enabled":{"type":"boolean"},"name":{"maxLength":120,"minLength":2,"type":"string"},"market_ids":{"items":{"pattern":"^pmkt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"pmkt"},"type":"array"},"recipient_ids":{"items":{"pattern":"^usr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"usr"},"type":"array"},"serp_feature":{"maxLength":120,"minLength":1,"type":["string","null"]},"severity":{"enum":["info","warning","urgent"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertSeverity"},"target_ids":{"items":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"type":"array"},"target_type":{"const":"keyword","type":"string"},"threshold_position":{"maximum":100,"minimum":1,"type":["integer","null"]},"top_n":{"maximum":100,"minimum":1,"type":["integer","null"]},"channel":{"description":"Display label for the delivery channels.","type":"string"},"condition":{"description":"Display sentence for the rule condition.","type":"string"},"fires":{"description":"Display count of triggers in the last seven days.","type":"string"},"id":{"example":"alr_a00000000000000000000000","pattern":"^alr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"alr"},"market_scope":{"description":"Display label for the market scope.","type":"string"},"period":{"description":"Display label for the evaluation period.","type":"string"},"scope":{"description":"Display label for the targeted keywords or tags.","type":"string"},"status":{"enum":["active","learning","paused","setup"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertRuleStatus"}},"required":["change_pct","channel","channels","competitor_domain","condition","condition_type","drop_positions","enabled","fires","id","market_ids","name","period","recipient_ids","scope","serp_feature","severity","status","target_ids","target_type","threshold_position","top_n"],"type":"object","x-bisibility-name":"KeywordAlertRule"},{"properties":{"channels":{"description":"Delivery channels for alert notifications. Slack tenant delivery is available as an API-only preview. Workspace installation and channel management are not yet exposed in the dashboard. Push sends to the iOS devices that project members registered through /me/push-tokens; alerts from scheduled checks arrive as one summary push per rule. Every fired alert also creates an in-app notification, with or without channels.","items":{"enum":["email","slack","webhook","push"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertChannel"},"type":"array"},"change_pct":{"maximum":1000,"minimum":0.1,"type":["number","null"]},"competitor_domain":{"maxLength":120,"minLength":1,"type":["string","null"]},"condition_type":{"enum":["threshold","change_pct","ctr_drop","position_drop","downtrend","enters_top_n","exits_top_n","competitor_overtake","serp_feature","url_mismatch"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertConditionType"},"drop_positions":{"maximum":100,"minimum":1,"type":["integer","null"]},"enabled":{"type":"boolean"},"name":{"maxLength":120,"minLength":2,"type":"string"},"market_ids":{"items":{"pattern":"^pmkt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"pmkt"},"type":"array"},"recipient_ids":{"items":{"pattern":"^usr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"usr"},"type":"array"},"serp_feature":{"maxLength":120,"minLength":1,"type":["string","null"]},"severity":{"enum":["info","warning","urgent"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertSeverity"},"target_ids":{"items":{"example":"tag_a00000000000000000000000","pattern":"^tag_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"tag"},"type":"array"},"target_type":{"const":"tag","type":"string"},"threshold_position":{"maximum":100,"minimum":1,"type":["integer","null"]},"top_n":{"maximum":100,"minimum":1,"type":["integer","null"]},"channel":{"description":"Display label for the delivery channels.","type":"string"},"condition":{"description":"Display sentence for the rule condition.","type":"string"},"fires":{"description":"Display count of triggers in the last seven days.","type":"string"},"id":{"example":"alr_a00000000000000000000000","pattern":"^alr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"alr"},"market_scope":{"description":"Display label for the market scope.","type":"string"},"period":{"description":"Display label for the evaluation period.","type":"string"},"scope":{"description":"Display label for the targeted keywords or tags.","type":"string"},"status":{"enum":["active","learning","paused","setup"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertRuleStatus"}},"required":["change_pct","channel","channels","competitor_domain","condition","condition_type","drop_positions","enabled","fires","id","market_ids","name","period","recipient_ids","scope","serp_feature","severity","status","target_ids","target_type","threshold_position","top_n"],"type":"object","x-bisibility-name":"TagAlertRule"},{"properties":{"channels":{"description":"Delivery channels for alert notifications. Slack tenant delivery is available as an API-only preview. Workspace installation and channel management are not yet exposed in the dashboard. Push sends to the iOS devices that project members registered through /me/push-tokens; alerts from scheduled checks arrive as one summary push per rule. Every fired alert also creates an in-app notification, with or without channels.","items":{"enum":["email","slack","webhook","push"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertChannel"},"type":"array"},"change_pct":{"maximum":1000,"minimum":0.1,"type":["number","null"]},"competitor_domain":{"maxLength":120,"minLength":1,"type":["string","null"]},"condition_type":{"enum":["threshold","change_pct","ctr_drop","position_drop","downtrend","enters_top_n","exits_top_n","competitor_overtake","serp_feature","url_mismatch"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertConditionType"},"drop_positions":{"maximum":100,"minimum":1,"type":["integer","null"]},"enabled":{"type":"boolean"},"name":{"maxLength":120,"minLength":2,"type":"string"},"market_ids":{"items":{"pattern":"^pmkt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"pmkt"},"type":"array"},"recipient_ids":{"items":{"pattern":"^usr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"usr"},"type":"array"},"serp_feature":{"maxLength":120,"minLength":1,"type":["string","null"]},"severity":{"enum":["info","warning","urgent"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertSeverity"},"target_ids":{"maxItems":0,"items":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"type":"array"},"target_type":{"const":"all","type":"string"},"threshold_position":{"maximum":100,"minimum":1,"type":["integer","null"]},"top_n":{"maximum":100,"minimum":1,"type":["integer","null"]},"channel":{"description":"Display label for the delivery channels.","type":"string"},"condition":{"description":"Display sentence for the rule condition.","type":"string"},"fires":{"description":"Display count of triggers in the last seven days.","type":"string"},"id":{"example":"alr_a00000000000000000000000","pattern":"^alr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"alr"},"market_scope":{"description":"Display label for the market scope.","type":"string"},"period":{"description":"Display label for the evaluation period.","type":"string"},"scope":{"description":"Display label for the targeted keywords or tags.","type":"string"},"status":{"enum":["active","learning","paused","setup"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertRuleStatus"}},"required":["change_pct","channel","channels","competitor_domain","condition","condition_type","drop_positions","enabled","fires","id","market_ids","name","period","recipient_ids","scope","serp_feature","severity","status","target_ids","target_type","threshold_position","top_n"],"type":"object","x-bisibility-name":"AllKeywordsAlertRule"},{"properties":{"channels":{"description":"Delivery channels for alert notifications. Slack tenant delivery is available as an API-only preview. Workspace installation and channel management are not yet exposed in the dashboard. Push sends to the iOS devices that project members registered through /me/push-tokens; alerts from scheduled checks arrive as one summary push per rule. Every fired alert also creates an in-app notification, with or without channels.","items":{"enum":["email","slack","webhook","push"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertChannel"},"type":"array"},"change_pct":{"maximum":1000,"minimum":0.1,"type":["number","null"]},"competitor_domain":{"maxLength":120,"minLength":1,"type":["string","null"]},"condition_type":{"enum":["threshold","change_pct","ctr_drop","position_drop","downtrend","enters_top_n","exits_top_n","competitor_overtake","serp_feature","url_mismatch"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertConditionType"},"drop_positions":{"maximum":100,"minimum":1,"type":["integer","null"]},"enabled":{"type":"boolean"},"name":{"maxLength":120,"minLength":2,"type":"string"},"market_ids":{"items":{"pattern":"^pmkt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"pmkt"},"type":"array"},"recipient_ids":{"items":{"pattern":"^usr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"usr"},"type":"array"},"serp_feature":{"maxLength":120,"minLength":1,"type":["string","null"]},"severity":{"enum":["info","warning","urgent"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertSeverity"},"target_ids":{"items":{"oneOf":[{"pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},{"pattern":"^tag_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"tag"}],"x-bisibility-union":{"cases":["keyword","tag"],"style":"public_id"},"x-bisibility-name":"AlertRuleTargetId"},"type":"array"},"target_type":{"enum":["all","keyword","tag"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertTargetType"},"threshold_position":{"maximum":100,"minimum":1,"type":["integer","null"]},"top_n":{"maximum":100,"minimum":1,"type":["integer","null"]},"channel":{"description":"Display label for the delivery channels.","type":"string"},"condition":{"description":"Display sentence for the rule condition.","type":"string"},"fires":{"description":"Display count of triggers in the last seven days.","type":"string"},"id":{"example":"alr_a00000000000000000000000","pattern":"^alr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"alr"},"market_scope":{"description":"Display label for the market scope.","type":"string"},"period":{"description":"Display label for the evaluation period.","type":"string"},"scope":{"description":"Display label for the targeted keywords or tags.","type":"string"},"status":{"enum":["active","learning","paused","setup"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertRuleStatus"}},"required":["change_pct","channel","channels","competitor_domain","condition","condition_type","drop_positions","enabled","fires","id","market_ids","name","period","recipient_ids","scope","serp_feature","severity","status","target_ids","target_type","threshold_position","top_n"],"type":"object","x-bisibility-name":"OtherAlertRule"}],"description":"An alert rule. target_ids follow target_type: keyword IDs, tag IDs, or empty for all keywords.","x-bisibility-union":{"cases":["keyword","tag","all","other"],"style":"tagged","tag":"target_type"}},"Capability":{"description":"One operation in the public capability catalog.","properties":{"description":{"type":"string"},"input_schema":{"additionalProperties":true,"description":"JSON Schema for the operation input.","type":"object"},"mcp_tool":{"description":"MCP tool name, or null when no MCP tool exposes the operation.","type":["string","null"]},"name":{"type":"string"},"operationId":{"type":"string"}},"required":["description","input_schema","mcp_tool","name","operationId"],"type":"object"},"Competitor":{"properties":{"domain":{"type":"string"},"id":{"example":"cmp_a00000000000000000000000","pattern":"^cmp_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"cmp"},"label":{"type":["string","null"]}},"required":["id","domain"],"type":"object"},"CompetitorCreate":{"properties":{"domain":{"type":"string"},"label":{"type":"string"}},"required":["domain"],"type":"object"},"CompetitorMarket":{"properties":{"quality":{"type":"object","x-bisibility-name":"CompetitorMarketQuality","properties":{"metric_id":{"type":"string","enum":["competitor_share_of_voice_top10"],"x-bisibility-enum":"open","x-bisibility-name":"CompetitorQualityMetric"},"definition_version":{"type":"string","enum":["bisibility-sov-top10-v2"],"x-bisibility-enum":"open","x-bisibility-name":"CompetitorQualityDefinition"},"domain_set":{"type":"array","items":{"type":"string"}},"expected":{"type":"integer"},"measured":{"type":"integer"},"unknown":{"type":"integer"},"stale":{"type":"integer"},"data_coverage":{"type":["number","null"]},"observed_coverage":{"type":["number","null"]},"imputed_weight_share":{"type":["number","null"]}},"required":["metric_id","definition_version","domain_set","expected","measured","unknown","stale","data_coverage","observed_coverage","imputed_weight_share"]},"checked_keyword_count":{"description":"Number of tracked keywords with a completed check in this market.","type":"integer"},"country":{"description":"Resolved location display name.","type":"string"},"data_state":{"description":"Why the matrix looks the way it does: ranked, quality_unknown, no_volume_data, completed_unranked, no_completed_checks, or filter_excludes_all.","enum":["ranked","quality_unknown","no_volume_data","completed_unranked","no_completed_checks","filter_excludes_all"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"CompetitorMarketDataState"},"device":{"enum":["Desktop","Mobile"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"CompetitorMarketDevice"},"domains":{"items":{"properties":{"domain":{"type":"string"},"managed":{"description":"True for tracked competitors.","type":"boolean"}},"required":["domain","managed"],"type":"object","x-bisibility-name":"CompetitorMarketDomain"},"type":"array"},"engine":{"type":"string"},"id":{"description":"Market key: location, device, and engine.","type":"string"},"measured_at":{"description":"Check date of the newest completed observation, when any exist.","format":"date-time","type":["string","null"]},"observations":{"items":{"properties":{"checked_at":{"description":"Check date that produced the ranks, when the check completed.","format":"date-time","type":["string","null"]},"completed":{"type":"boolean"},"id":{"type":"string"},"keyword":{"type":"string"},"keyword_id":{"type":"string"},"ranked":{"type":"boolean"},"ranks":{"additionalProperties":{"type":["integer","null"]},"description":"Best rank per domain in the latest completed check.","type":"object"},"tags":{"items":{"type":"string"},"type":"array"}},"required":["id","keyword","keyword_id","completed","ranked","tags","checked_at","ranks"],"type":"object","x-bisibility-name":"CompetitorMarketObservation"},"type":"array"},"shared_keyword_count":{"description":"Completed keywords where a tracked competitor ranks.","type":"integer"},"shares":{"items":{"properties":{"domain":{"type":"string"},"share_of_voice":{"description":"Exact Top10 SoV fraction using shared median weights for unknown volume and the same qualified keyword cohort across selected domains. Null when the score denominator is zero.","type":["number","null"]},"shared_keywords":{"type":"integer"}},"required":["domain","shared_keywords","share_of_voice"],"type":"object","x-bisibility-name":"CompetitorShare"},"type":"array"}},"required":["id","country","device","engine","data_state","checked_keyword_count","shared_keyword_count","measured_at","domains","observations","shares"],"type":"object"},"CompetitorSuggestion":{"properties":{"domain":{"type":"string"},"overlap":{"description":"Keywords where the domain appears in results.","type":"integer"}},"required":["domain","overlap"],"type":"object"},"CostEstimate":{"anyOf":[{"properties":{"billing_units_per_check":{"minimum":0,"type":"number"},"checks_per_run":{"minimum":0,"type":"number"},"depth":{"minimum":1,"type":"integer"},"effective_cost_per_check_cents":{"minimum":0,"type":["number","null"],"x-bisibility-money":"usd_cents"},"exceeds_largest_plan":{"type":"boolean"},"exceeds_selected_plan":{"type":"boolean"},"monthly_billing_units":{"minimum":0,"type":["number","null"]},"monthly_checks":{"minimum":0,"type":["number","null"]},"monthly_cost_cents":{"minimum":0,"type":["number","null"],"x-bisibility-money":"usd_cents"},"monthly_cost_usd":{"minimum":0,"type":["number","null"],"x-bisibility-money":"usd_number"},"pricing_model":{"const":"flat","type":"string"},"provider_id":{"type":"string"},"rate_checked_at":{"type":"string"},"rate_source_url":{"type":"string"},"result_pages_per_run":{"minimum":0,"type":"number"},"runs_per_month":{"minimum":0,"type":["number","null"]},"selected_option":{"properties":{"additional_page_cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"additional_page_cost_usd":{"minimum":0,"type":"number","x-bisibility-money":"usd_number"},"key":{"type":"string"},"label":{"type":"string"},"short_label":{"type":"string"},"top_100_check_cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"top_100_check_cost_usd":{"minimum":0,"type":"number","x-bisibility-money":"usd_number"},"turnaround":{"type":"string"},"unit_cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"unit_cost_usd":{"minimum":0,"type":"number","x-bisibility-money":"usd_number"}},"required":["additional_page_cost_cents","additional_page_cost_usd","key","label","short_label","top_100_check_cost_cents","top_100_check_cost_usd","turnaround","unit_cost_cents","unit_cost_usd"],"type":"object","x-bisibility-name":"CostEstimateOption"}},"required":["billing_units_per_check","checks_per_run","depth","effective_cost_per_check_cents","exceeds_largest_plan","exceeds_selected_plan","monthly_billing_units","monthly_checks","monthly_cost_cents","monthly_cost_usd","pricing_model","provider_id","rate_checked_at","rate_source_url","result_pages_per_run","runs_per_month"],"type":"object","x-bisibility-name":"FlatCostEstimate"},{"properties":{"billing_units_per_check":{"minimum":0,"type":"number"},"checks_per_run":{"minimum":0,"type":"number"},"depth":{"minimum":1,"type":"integer"},"effective_cost_per_check_cents":{"minimum":0,"type":["number","null"],"x-bisibility-money":"usd_cents"},"exceeds_largest_plan":{"type":"boolean"},"exceeds_selected_plan":{"type":"boolean"},"monthly_billing_units":{"minimum":0,"type":["number","null"]},"monthly_checks":{"minimum":0,"type":["number","null"]},"monthly_cost_cents":{"minimum":0,"type":["number","null"],"x-bisibility-money":"usd_cents"},"monthly_cost_usd":{"minimum":0,"type":["number","null"],"x-bisibility-money":"usd_number"},"pricing_model":{"const":"plan","type":"string"},"provider_id":{"type":"string"},"rate_checked_at":{"type":"string"},"rate_source_url":{"type":"string"},"result_pages_per_run":{"minimum":0,"type":"number"},"runs_per_month":{"minimum":0,"type":["number","null"]},"selected_plan":{"properties":{"included_checks":{"minimum":0,"type":"number"},"label":{"type":"string"},"monthly_price_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"monthly_price_usd":{"minimum":0,"type":"number","x-bisibility-money":"usd_number"},"plan_key":{"type":"string"}},"required":["included_checks","label","monthly_price_cents","monthly_price_usd","plan_key"],"type":"object","x-bisibility-name":"CostEstimatePlan"}},"required":["billing_units_per_check","checks_per_run","depth","effective_cost_per_check_cents","exceeds_largest_plan","exceeds_selected_plan","monthly_billing_units","monthly_checks","monthly_cost_cents","monthly_cost_usd","pricing_model","provider_id","rate_checked_at","rate_source_url","result_pages_per_run","runs_per_month"],"type":"object","x-bisibility-name":"PlanCostEstimate"},{"properties":{"billing_units_per_check":{"minimum":0,"type":"number"},"checks_per_run":{"minimum":0,"type":"number"},"depth":{"minimum":1,"type":"integer"},"effective_cost_per_check_cents":{"minimum":0,"type":["number","null"],"x-bisibility-money":"usd_cents"},"exceeds_largest_plan":{"type":"boolean"},"exceeds_selected_plan":{"type":"boolean"},"monthly_billing_units":{"minimum":0,"type":["number","null"]},"monthly_checks":{"minimum":0,"type":["number","null"]},"monthly_cost_cents":{"minimum":0,"type":["number","null"],"x-bisibility-money":"usd_cents"},"monthly_cost_usd":{"minimum":0,"type":["number","null"],"x-bisibility-money":"usd_number"},"pricing_model":{"type":"string"},"provider_id":{"type":"string"},"rate_checked_at":{"type":"string"},"rate_source_url":{"type":"string"},"result_pages_per_run":{"minimum":0,"type":"number"},"runs_per_month":{"minimum":0,"type":["number","null"]}},"required":["billing_units_per_check","checks_per_run","depth","effective_cost_per_check_cents","exceeds_largest_plan","exceeds_selected_plan","monthly_billing_units","monthly_checks","monthly_cost_cents","monthly_cost_usd","pricing_model","provider_id","rate_checked_at","rate_source_url","result_pages_per_run","runs_per_month"],"type":"object","x-bisibility-name":"OtherCostEstimate"}],"description":"Estimated rank-check volume and provider spend for a keyword portfolio.","x-bisibility-union":{"cases":["flat","plan","other"],"style":"tagged","tag":"pricing_model"}},"MigrationToken":{"properties":{"created_at":{"format":"date-time","type":"string"},"expires_at":{"format":"date-time","type":"string"},"id":{"example":"mig_a00000000000000000000000","pattern":"^mig_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"mig"},"token":{"description":"Returned only when the token is minted.","type":"string"}},"required":["id","expires_at"],"type":"object"},"NotificationPreferences":{"properties":{"alert_email":{"type":"boolean"},"alert_in_app":{"type":"boolean"},"alert_push":{"description":"Mobile push for fired alerts on this member's registered devices.","type":"boolean"},"alert_slack":{"type":"boolean"},"alert_webhook":{"type":"boolean"},"check_email":{"type":"boolean"},"check_in_app":{"type":"boolean"},"import_email":{"type":"boolean"},"import_in_app":{"type":"boolean"},"invite_email":{"type":"boolean"},"invite_in_app":{"type":"boolean"}},"required":["alert_email","alert_in_app","alert_push","alert_slack","alert_webhook","check_email","check_in_app","import_email","import_in_app","invite_email","invite_in_app"],"type":"object"},"OpenApiDocument":{"additionalProperties":true,"description":"OpenAPI 3 document for REST API v1.","type":"object"},"ProviderConnect":{"additionalProperties":true,"properties":{"credentials":{"additionalProperties":{"type":"string"},"type":"object"},"primary":{"type":"boolean"}},"type":"object"},"ProviderRateCard":{"additionalProperties":true,"properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id"],"type":"object"},"ProviderTestResult":{"properties":{"message":{"type":"string"},"ok":{"type":"boolean"}},"required":["ok"],"type":"object"},"SavedView":{"properties":{"can_delete":{"type":"boolean"},"created_at":{"format":"date-time","type":"string"},"definition":{"anyOf":[{"type":"object","properties":{"filters":{"type":"object","properties":{"change":{"default":"any","type":"string","enum":["any","up","down","new","lost"]},"contains":{"default":"","type":"string","maxLength":80},"intents":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"last_check":{"default":"any","type":"string","enum":["any","completed","failed","not_checked","running"]},"position":{"default":[],"maxItems":4,"type":"array","items":{"type":"string","enum":["top3","top10","11-50","51-100"]}},"serp":{"default":[],"maxItems":8,"type":"array","items":{"type":"string","enum":["featured","paa","sitelinks","image","video","ai"]}},"tags":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"topics":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"url_changed":{"default":false,"type":"boolean"},"vol_max":{"default":50,"type":"number","minimum":0,"maximum":50},"vol_min":{"default":0,"type":"number","minimum":0,"maximum":50},"wrong_url":{"default":false,"type":"boolean"}},"required":["change","contains","intents","last_check","position","serp","tags","topics","url_changed","vol_max","vol_min","wrong_url"],"additionalProperties":false},"lens":{"type":"object","properties":{"device":{"default":"all","type":"string","enum":["all","desktop","mobile"]},"location_id":{"default":null,"nullable":true,"type":"string","minLength":1}},"required":["device","location_id"],"additionalProperties":false},"search":{"default":"","type":"string","maxLength":120},"surface":{"default":"keywords","type":"string","enum":["keywords"]},"version":{"default":1,"type":"number","enum":[1]}},"required":["filters","lens","search","surface","version"],"additionalProperties":false},{"type":"object","properties":{"filters":{"default":{"excludedKeywordIds":[],"position":"all","tag":null},"type":"object","properties":{"excluded_keyword_ids":{"default":[],"maxItems":10000,"type":"array","items":{"type":"string","minLength":1}},"position":{"default":"all","type":"string","enum":["all","top3","top10"]},"tag":{"default":null,"nullable":true,"type":"string","minLength":1,"maxLength":40}},"required":["excluded_keyword_ids","position","tag"],"additionalProperties":false},"scope":{"type":"object","properties":{"device":{"type":"string","enum":["desktop","mobile"]},"engine":{"type":"string","enum":["google"]},"location_id":{"type":"string","minLength":1}},"required":["device","engine","location_id"],"additionalProperties":false},"surface":{"type":"string","enum":["competitors"]},"version":{"type":"number","enum":[1]}},"required":["filters","scope","surface","version"],"additionalProperties":false},{"type":"object","properties":{"report_scope":{"default":{"view":"general","subject":null,"comparisonDays":7,"asOf":null},"type":"object","properties":{"view":{"type":"string","enum":["general","local"]},"subject":{"nullable":true,"type":"object","properties":{"scope":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["keyword"]},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["market"]},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false}]},"location_id":{"type":"string"},"identity_revision_id":{"type":"string","minLength":1,"maxLength":256},"assignment_revision":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":2147483647}},"required":["scope","location_id","identity_revision_id","assignment_revision"],"additionalProperties":false},"comparison_days":{"anyOf":[{"type":"number","enum":[7]},{"type":"number","enum":[28]},{"type":"number","enum":[90]}]},"as_of":{"nullable":true,"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"}},"required":["view","subject","comparison_days","as_of"],"additionalProperties":false},"filters":{"type":"object","properties":{"change":{"default":"any","type":"string","enum":["any","up","down","new","lost"]},"contains":{"default":"","type":"string","maxLength":80},"intents":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"last_check":{"default":"any","type":"string","enum":["any","completed","failed","not_checked","running"]},"position":{"default":[],"maxItems":4,"type":"array","items":{"type":"string","enum":["top3","top10","11-50","51-100"]}},"serp":{"default":[],"maxItems":8,"type":"array","items":{"type":"string","enum":["featured","paa","sitelinks","image","video","ai"]}},"tags":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"topics":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"url_changed":{"default":false,"type":"boolean"},"vol_max":{"default":50,"type":"number","minimum":0,"maximum":50},"vol_min":{"default":0,"type":"number","minimum":0,"maximum":50},"wrong_url":{"default":false,"type":"boolean"}},"required":["change","contains","intents","last_check","position","serp","tags","topics","url_changed","vol_max","vol_min","wrong_url"],"additionalProperties":false},"grouped":{"type":"boolean"},"lens":{"type":"object","properties":{"device":{"type":"string","enum":["all","desktop","mobile"]},"location_id":{"nullable":true,"type":"string","minLength":1,"maxLength":128}},"required":["device","location_id"],"additionalProperties":false},"page_size":{"anyOf":[{"type":"number","enum":[25]},{"type":"number","enum":[50]},{"type":"number","enum":[100]}]},"presentation":{"type":"object","properties":{"column_order":{"default":[],"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"registry_version":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"sizing":{"default":{},"type":"object","additionalProperties":{"type":"number","minimum":16,"maximum":4096}},"version":{"type":"number","enum":[1]},"visibility":{"default":{},"type":"object","additionalProperties":{"type":"boolean"}}},"required":["column_order","registry_version","sizing","version","visibility"],"additionalProperties":false},"search":{"type":"string","maxLength":120},"sort":{"type":"object","properties":{"direction":{"type":"string","enum":["asc","desc"]},"field":{"type":"string","enum":["keyword","device","position","change","volume","difficulty","sparkline","clicks","impressions","ctr","lastChecked","frequency","location","targetRanking","tags","topic","intent"]}},"required":["direction","field"],"additionalProperties":false},"surface":{"type":"string","enum":["keywords"]},"version":{"type":"number","enum":[2]}},"required":["report_scope","filters","grouped","lens","page_size","presentation","search","sort","surface","version"],"additionalProperties":false},{"type":"object","properties":{"filters":{"type":"object","properties":{"excluded_keyword_ids":{"default":[],"maxItems":10000,"type":"array","items":{"type":"string","minLength":1}},"position":{"default":"all","type":"string","enum":["all","top3","top10"]},"tag":{"default":null,"nullable":true,"type":"string","minLength":1,"maxLength":40}},"required":["excluded_keyword_ids","position","tag"],"additionalProperties":false},"grouped":{"type":"boolean"},"page_size":{"anyOf":[{"type":"number","enum":[25]},{"type":"number","enum":[50]},{"type":"number","enum":[100]}]},"presentation":{"type":"object","properties":{"column_order":{"default":[],"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"registry_version":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"sizing":{"default":{},"type":"object","additionalProperties":{"type":"number","minimum":16,"maximum":4096}},"version":{"type":"number","enum":[1]},"visibility":{"default":{},"type":"object","additionalProperties":{"type":"boolean"}}},"required":["column_order","registry_version","sizing","version","visibility"],"additionalProperties":false},"scope":{"type":"object","properties":{"device":{"type":"string","enum":["desktop","mobile"]},"engine":{"type":"string","enum":["google"]},"location_id":{"type":"string","minLength":1,"maxLength":128}},"required":["device","engine","location_id"],"additionalProperties":false},"sort":{"type":"object","properties":{"direction":{"type":"string","enum":["asc","desc"]},"field":{"type":"string","minLength":1,"maxLength":128}},"required":["direction","field"],"additionalProperties":false},"surface":{"type":"string","enum":["competitors"]},"version":{"type":"number","enum":[2]}},"required":["filters","grouped","page_size","presentation","scope","sort","surface","version"],"additionalProperties":false}]},"revision":{"maximum":2147483647,"minimum":1,"type":"integer"},"visibility":{"enum":["project"],"type":"string"},"config":{"additionalProperties":true,"type":"object"},"id":{"example":"viw_a00000000000000000000000","pattern":"^viw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"viw"},"name":{"type":"string"},"surface":{"enum":["keywords","competitors"],"type":"string"}},"required":["config","id","name","surface","created_at","can_delete","definition","revision","visibility"],"type":"object"},"SavedViewInput":{"properties":{"config":{"additionalProperties":true,"type":"object"},"name":{"maxLength":48,"minLength":1,"type":"string"},"surface":{"enum":["keywords","competitors"],"type":"string"}},"required":["config","name"],"type":"object"},"TeamInvite":{"properties":{"email":{"format":"email","type":"string"},"expires_at":{"format":"date-time","type":"string"},"id":{"example":"inv_a00000000000000000000000","pattern":"^inv_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"inv"},"role":{"enum":["admin","member","viewer"],"type":"string"}},"required":["id","email","role"],"type":"object"},"TeamInviteCreate":{"properties":{"email":{"format":"email","type":"string"},"role":{"enum":["admin","member","viewer"],"type":"string"}},"required":["email","role"],"type":"object"},"TeamMember":{"properties":{"email":{"format":"email","type":"string"},"id":{"example":"mbr_a00000000000000000000000","pattern":"^mbr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"mbr"},"role":{"enum":["admin","member","owner","viewer"],"type":"string"}},"required":["id","email","role"],"type":"object"},"TriggeredAlert":{"description":"One fired alert as the project alert feed shows it (lib/alerts/alert-data.ts TriggeredAlertView).","properties":{"action":{"type":"string"},"ctas":{"items":{"type":"string"},"type":"array"},"current":{"type":"string"},"delivery_attempts":{"items":{"properties":{"channel":{"enum":["email","slack","webhook","push"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertChannel"},"error":{"type":["string","null"]},"status":{"type":"string"},"webhook_endpoint_id":{"example":"we_a00000000000000000000000","pattern":"^we_[a-z][a-z0-9]{23}$","type":["string","null"],"x-bisibility-public-id":"we"},"webhook_endpoint_label":{"type":["string","null"]},"when":{"type":"string"}},"required":["channel","error","status","webhook_endpoint_id","webhook_endpoint_label","when"],"type":"object","x-bisibility-name":"AlertDeliveryAttempt"},"type":"array"},"delivery_state":{"enum":["dead_letter","delivered","delivering","digest_pending","digested","digesting","pending","skipped","suppressed"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertDeliveryState"},"feed_meta":{"properties":{"engine":{"type":"string"},"language":{"type":"string"},"market":{"properties":{"id":{"type":"string"},"label":{"type":"string"}},"required":["id","label"],"type":"object","x-bisibility-name":"AlertFeedMarket"},"module":{"type":"string"},"severity":{"type":"string"},"source":{"type":"string"}},"type":"object","x-bisibility-name":"AlertFeedMeta"},"headline":{"type":"string"},"id":{"example":"al_a00000000000000000000000","pattern":"^al_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"al"},"keyword":{"type":"string"},"previous":{"type":"string"},"ranking_url":{"type":["string","null"]},"rule":{"type":"string"},"severity":{"enum":["info","warning","urgent"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"AlertSeverity"},"target_url":{"type":["string","null"]},"unread":{"type":"boolean"},"when":{"type":"string"}},"required":["action","ctas","current","delivery_attempts","delivery_state","headline","id","keyword","previous","rule","severity","unread","when"],"type":"object"},"ApiKey":{"properties":{"created_at":{"format":"date-time","type":"string"},"expires_at":{"format":"date-time","type":["string","null"]},"id":{"example":"key_a00000000000000000000000","pattern":"^key_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"key"},"last_used_at":{"type":["string","null"],"format":"date-time"},"name":{"type":"string"},"prefix":{"example":"bsb_key_live_xxxxxxxx","type":"string"},"revoked_at":{"type":["string","null"],"format":"date-time"},"scope":{"enum":["read","write","admin"],"type":"string"}},"required":["id","name","prefix","created_at","expires_at","last_used_at","revoked_at","scope"],"type":"object"},"ApiKeyCreate":{"properties":{"expires_in_days":{"description":"Lifetime in days. Use null for no expiry.","enum":[30,90,365,null],"type":["integer","null"]},"name":{"maxLength":80,"minLength":1,"type":"string"},"scope":{"default":"admin","description":"Access tier. When omitted, defaults to admin for backward compatibility.","enum":["read","write","admin"],"type":"string"}},"required":["name"],"type":"object"},"ApiKeyIssued":{"allOf":[{"$ref":"#/components/schemas/ApiKey"},{"properties":{"masked_value":{"type":"string"},"token":{"example":"bsb_key_live_...","type":"string"}},"required":["masked_value","token"],"type":"object"}]},"Keyword":{"properties":{"country":{"description":"Resolved keyword location display name.","example":"Austin, Texas, United States","type":"string"},"created_at":{"format":"date-time","type":"string"},"device":{"enum":["desktop","mobile"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"Device"},"id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"intent":{"type":["string","null"]},"latest_check":{"$ref":"#/components/schemas/KeywordLatestCheck"},"latest_position":{"description":"`latest_position` = `latest_check.position`; it is `null` for failed checks, unknown observation coverage, or absence within the requested depth. Agents that need \"the last known ranking\" must read `latest_successful_check.position`.","type":["integer","null"]},"latest_successful_check":{"$ref":"#/components/schemas/KeywordLatestSuccessfulCheck"},"language_code":{"example":"en","type":"string"},"language_label":{"example":"English","type":"string"},"location":{"description":"Resolved keyword location display name.","example":"Austin, Texas, United States","type":"string"},"location_key":{"description":"Canonical country, region, or city key, optionally qualified with @language. The default language normalizes to the unqualified key.","example":"ES/Andalusia/Malaga@en","type":"string"},"previous_position":{"description":"`previous_position` = the position recorded on `latest_check` as its predecessor.","type":["integer","null"]},"project_id":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"ranking_url":{"type":["string","null"]},"schedule":{"properties":{"cron_expression":{"type":["string","null"]},"frequency":{"enum":["paused","manual","daily","weekly","monthly","custom_cron"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ScheduleFrequency"},"jitter_minutes":{"description":"Whole-minute random delay from 0 to 120. Set 0 to disable jitter.","maximum":120,"minimum":0,"type":"integer"},"last_checked_at":{"format":"date-time","type":["string","null"]},"next_check_at":{"format":"date-time","type":["string","null"]},"source":{"description":"Whether these schedule values come from the keyword's own row or from the project defaults.","enum":["keyword","project_default"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ScheduleSource"},"timezone":{"description":"IANA time zone that anchors monthly and custom cron wall-clock schedules. Daily and weekly use a stable keyword-specific interval phase that timezone does not move.","type":"string"}},"required":["frequency","cron_expression","timezone","jitter_minutes","last_checked_at","next_check_at","source"],"type":["object","null"],"x-bisibility-name":"KeywordSchedule"},"tags":{"items":{"type":"string"},"type":"array"},"target_url":{"type":["string","null"]},"text":{"example":"rank tracker api","type":"string"},"topic":{"type":["string","null"]},"updated_at":{"format":"date-time","type":"string"}},"required":["id","project_id","text","country","location","device","latest_check","latest_position","latest_successful_check","language_code","language_label","location_key","previous_position","ranking_url","schedule","tags","target_url","topic","intent","created_at","updated_at"],"type":"object"},"KeywordCreateItem":{"properties":{"city":{"type":["string","null"],"deprecated":true,"description":"City name resolved within country when location_key is omitted. Deprecated legacy market input: send location_key instead. Still accepted for compatibility; no removal version is scheduled."},"country":{"enum":["United States","United Kingdom","Canada","Australia","Germany","France","Spain","Italy","Netherlands","Sweden","Poland","Ireland","Portugal","Belgium","Switzerland","Austria","Denmark","Norway","Finland","Brazil","Mexico","India","Japan","Singapore","New Zealand","South Africa","United Arab Emirates"],"example":"United States","type":"string","deprecated":true,"description":"Country market name used when location_key is omitted. Deprecated legacy market input: send location_key instead. Still accepted for compatibility; no removal version is scheduled."},"device":{"enum":["desktop","mobile"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"Device"},"intent":{"type":["string","null"]},"keyword":{"example":"rank tracker api","type":"string"},"language":{"example":"en","type":"string","deprecated":true,"description":"SERP UI language code combined with country when location_key is omitted; use the @language qualifier on location_key instead. Deprecated legacy market input: send location_key instead. Still accepted for compatibility; no removal version is scheduled."},"location":{"enum":["United States","United Kingdom","Canada","Australia","Germany","France","Spain","Italy","Netherlands","Sweden","Poland","Ireland","Portugal","Belgium","Switzerland","Austria","Denmark","Norway","Finland","Brazil","Mexico","India","Japan","Singapore","New Zealand","South Africa","United Arab Emirates"],"example":"United States","type":"string","deprecated":true,"description":"Backward-compatible alias for country. Deprecated legacy market input: send location_key instead. Still accepted for compatibility; no removal version is scheduled."},"location_key":{"description":"Primary location reference: canonical country, region, or city key, optionally qualified with @language. Takes precedence over the deprecated country, language, location, and city fields.","example":"ES/Andalusia/Malaga@en","type":"string"},"schedule":{"properties":{"cron_expression":{"type":["string","null"]},"frequency":{"enum":["paused","manual","daily","weekly","monthly","custom_cron"],"type":"string"},"jitter_minutes":{"description":"Whole-minute random delay from 0 to 120. Set 0 to disable jitter.","maximum":120,"minimum":0,"type":"integer","default":60},"timezone":{"description":"IANA time zone that anchors monthly and custom cron wall-clock schedules. Daily and weekly use a stable keyword-specific interval phase that timezone does not move.","type":"string","default":"UTC"}},"required":["frequency"],"type":"object"},"tags":{"items":{"type":"string"},"type":"array"},"target_url":{"type":["string","null"]},"topic":{"type":["string","null"]}},"required":["keyword"],"type":"object"},"KeywordCreateResponse":{"properties":{"created":{"type":"integer"},"results":{"items":{"properties":{"keyword":{"$ref":"#/components/schemas/Keyword"},"status":{"enum":["created","skipped"],"type":"string"},"warning":{"type":"string"}},"required":["status","keyword"],"type":"object"},"type":"array"},"skipped":{"type":"integer"},"warnings":{"items":{"type":"string"},"type":"array"}},"required":["created","skipped","results"],"type":"object"},"KeywordPatch":{"properties":{"city":{"type":["string","null"],"deprecated":true,"description":"Keyword identity field. A value that resolves to a market different from the stored market is rejected with 409; a value that resolves to the same market is accepted. Deprecated legacy market input: send location_key instead. Still accepted for compatibility; no removal version is scheduled."},"country":{"enum":["United States","United Kingdom","Canada","Australia","Germany","France","Spain","Italy","Netherlands","Sweden","Poland","Ireland","Portugal","Belgium","Switzerland","Austria","Denmark","Norway","Finland","Brazil","Mexico","India","Japan","Singapore","New Zealand","South Africa","United Arab Emirates"],"example":"United States","type":"string","deprecated":true,"description":"Keyword identity field. A value that resolves to a market different from the stored market is rejected with 409; a value that resolves to the same market is accepted. Deprecated legacy market input: send location_key instead. Still accepted for compatibility; no removal version is scheduled."},"device":{"description":"Keyword identity field. A value different from the stored device is rejected with 409; the same value is accepted.","enum":["desktop","mobile"],"type":"string"},"frequency":{"enum":["paused","manual","daily","weekly","monthly","custom_cron"],"type":"string"},"intent":{"type":["string","null"]},"keyword":{"description":"Keyword identity field. A value different from the stored term is rejected with 409; the same value is accepted.","example":"rank tracker docs","type":"string"},"location":{"enum":["United States","United Kingdom","Canada","Australia","Germany","France","Spain","Italy","Netherlands","Sweden","Poland","Ireland","Portugal","Belgium","Switzerland","Austria","Denmark","Norway","Finland","Brazil","Mexico","India","Japan","Singapore","New Zealand","South Africa","United Arab Emirates"],"example":"United States","type":"string","deprecated":true,"description":"Backward-compatible alias for country. Keyword identity field. A value that resolves to a market different from the stored market is rejected with 409; a value that resolves to the same market is accepted. Deprecated legacy market input: send location_key instead. Still accepted for compatibility; no removal version is scheduled."},"location_key":{"description":"Primary location reference: canonical country, region, or city key, optionally qualified with @language. The default language normalizes to the unqualified key. Keyword identity field. A value that resolves to a market different from the stored market is rejected with 409; a value that resolves to the same market is accepted.","example":"ES/Andalusia/Malaga@en","type":"string"},"schedule":{"properties":{"cron_expression":{"type":["string","null"]},"frequency":{"enum":["paused","manual","daily","weekly","monthly","custom_cron"],"type":"string"},"jitter_minutes":{"description":"Whole-minute random delay from 0 to 120. Set 0 to disable jitter.","maximum":120,"minimum":0,"type":"integer","default":60},"timezone":{"description":"IANA time zone that anchors monthly and custom cron wall-clock schedules. Daily and weekly use a stable keyword-specific interval phase that timezone does not move.","type":"string","default":"UTC"}},"required":["frequency"],"type":"object"},"tags":{"items":{"type":"string"},"type":"array"},"target_url":{"type":["string","null"]},"topic":{"type":["string","null"]}},"required":[],"type":"object"},"Problem":{"properties":{"detail":{"type":"string"},"details":{"additionalProperties":true,"type":"object"},"docs_url":{"type":"string"},"errors":{},"instance":{"type":"string"},"status":{"type":"integer"},"title":{"type":"string"},"type":{"type":"string"}},"required":["type","title","status","detail","instance","docs_url"],"type":"object"},"MeDeletionForbidden":{"properties":{"detail":{"type":"string"},"details":{"description":"Present when the app must sign in again; absent for insufficient scope.","properties":{"code":{"const":"reauthentication_required","type":"string"},"max_age_seconds":{"const":600,"type":"integer"}},"required":["code","max_age_seconds"],"type":"object","x-bisibility-name":"MeDeletionReauthenticationDetails"},"docs_url":{"type":"string"},"errors":{},"instance":{"type":"string"},"status":{"type":"integer"},"title":{"type":"string"},"type":{"type":"string"}},"required":["type","title","status","detail","instance","docs_url"],"type":"object"},"ProviderBudgets":{"description":"Monthly budgets of one provider connection. Own keys and credits have separate budgets and separate usage; only the source the connection runs on today is enforced.","properties":{"connection_id":{"pattern":"^conn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"conn"},"credential_source":{"description":"The source the connection runs on today: own keys or credits (hosted).","enum":["own","hosted"],"type":"string"},"credits":{"additionalProperties":false,"properties":{"app":{"description":"App and schedules. Monthly budget on credits, in cents of credits spent. Null means no budget.","oneOf":[{"additionalProperties":false,"properties":{"amount_per_month":{"maximum":2147483647,"minimum":1,"type":"integer"},"unit":{"enum":["cents"],"type":"string"}},"required":["amount_per_month","unit"],"type":"object"},{"type":"null"}]},"programmatic":{"description":"API, MCP, SDK and CLI. Monthly budget on credits, in cents of credits spent. Null means no budget.","oneOf":[{"additionalProperties":false,"properties":{"amount_per_month":{"maximum":2147483647,"minimum":1,"type":"integer"},"unit":{"enum":["cents"],"type":"string"}},"required":["amount_per_month","unit"],"type":"object"},{"type":"null"}]}},"required":["app","programmatic"],"type":"object"},"own":{"additionalProperties":false,"properties":{"app":{"description":"App and schedules. Monthly budget on the project's own keys, in the provider unit: cents of provider charges or native units (searches). Null means no budget.","oneOf":[{"additionalProperties":false,"properties":{"amount_per_month":{"maximum":2147483647,"minimum":1,"type":"integer"},"unit":{"enum":["cents","units"],"type":"string"}},"required":["amount_per_month","unit"],"type":"object"},{"type":"null"}]},"programmatic":{"description":"API, MCP, SDK and CLI. Monthly budget on the project's own keys, in the provider unit: cents of provider charges or native units (searches). Null means no budget.","oneOf":[{"additionalProperties":false,"properties":{"amount_per_month":{"maximum":2147483647,"minimum":1,"type":"integer"},"unit":{"enum":["cents","units"],"type":"string"}},"required":["amount_per_month","unit"],"type":"object"},{"type":"null"}]}},"required":["app","programmatic"],"type":"object"},"provider":{"description":"Natural provider catalog ID.","type":"string"},"source":{"description":"Where the own-keys budget comes from: the connection or none.","enum":["connection","none"],"type":"string"}},"required":["connection_id","credential_source","credits","own","provider","source"],"type":"object"},"ProviderBudgetsUpdate":{"additionalProperties":false,"description":"Omitted fields keep their stored budget; null clears a budget.","properties":{"credits":{"additionalProperties":false,"properties":{"app":{"description":"App and schedules. Monthly budget on credits, in cents of credits spent. Null means no budget.","oneOf":[{"additionalProperties":false,"properties":{"amount_per_month":{"maximum":2147483647,"minimum":1,"type":"integer"},"unit":{"enum":["cents"],"type":"string"}},"required":["amount_per_month","unit"],"type":"object"},{"type":"null"}]},"programmatic":{"description":"API, MCP, SDK and CLI. Monthly budget on credits, in cents of credits spent. Null means no budget.","oneOf":[{"additionalProperties":false,"properties":{"amount_per_month":{"maximum":2147483647,"minimum":1,"type":"integer"},"unit":{"enum":["cents"],"type":"string"}},"required":["amount_per_month","unit"],"type":"object"},{"type":"null"}]}},"type":"object"},"own":{"additionalProperties":false,"properties":{"app":{"description":"App and schedules. Monthly budget on the project's own keys, in the provider unit: cents of provider charges or native units (searches). Null means no budget.","oneOf":[{"additionalProperties":false,"properties":{"amount_per_month":{"maximum":2147483647,"minimum":1,"type":"integer"},"unit":{"enum":["cents","units"],"type":"string"}},"required":["amount_per_month","unit"],"type":"object"},{"type":"null"}]},"programmatic":{"description":"API, MCP, SDK and CLI. Monthly budget on the project's own keys, in the provider unit: cents of provider charges or native units (searches). Null means no budget.","oneOf":[{"additionalProperties":false,"properties":{"amount_per_month":{"maximum":2147483647,"minimum":1,"type":"integer"},"unit":{"enum":["cents","units"],"type":"string"}},"required":["amount_per_month","unit"],"type":"object"},{"type":"null"}]}},"type":"object"}},"type":"object"},"Provider":{"properties":{"capabilities":{"description":"Provider-implemented features; true only while the connection is connected and enabled.","properties":{"backlinks":{"type":"boolean"},"domain_overview":{"type":"boolean"},"keyword_metrics":{"type":"boolean"},"keyword_research":{"type":"boolean"},"rank_checks":{"type":"boolean"},"search_performance":{"type":"boolean"}},"required":["backlinks","domain_overview","keyword_metrics","keyword_research","rank_checks","search_performance"],"type":"object"},"category_id":{"enum":["serp","analytics"],"type":"string"},"category_title":{"type":"string"},"connected":{"description":"Credentials on file are valid; enabled may still be false.","type":"boolean"},"connection_id":{"pattern":"^conn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"conn"},"connection_status":{"enum":["connected","needs_reauth","not_connected"],"type":"string"},"enabled":{"type":"boolean"},"id":{"description":"Natural provider catalog ID.","type":"string"},"kind":{"enum":["serp","analytics"],"type":"string"},"last_used_at":{"format":"date-time","type":["string","null"]},"name":{"type":"string"},"primary":{"type":"boolean"},"priority":{"type":"integer"},"status":{"description":"catalog state of the integration, not the connection; read connection_status","type":"string"}},"required":["category_id","category_title","id","kind","name","status","connection_status","connected","capabilities","last_used_at"],"type":"object"},"RankHistoryReportRecord":{"oneOf":[{"type":"object","properties":{"checked_at":{"type":"string","format":"date-time"},"check_recorded_at":{"type":"string","format":"date-time"},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"recorded_at":{"type":"string","format":"date-time"},"requested_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"comparison_digest":{"anyOf":[{"type":"string"},{"type":"null"}]},"complete_through":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"completeness":{"type":"string"},"configured_scope":{"anyOf":[{"type":"object","properties":{"device":{"type":"string"},"engine":{"type":"string"},"identity_revision":{"anyOf":[{"type":"string"},{"type":"null"}]},"language":{"type":"string"},"location":{"type":"string"},"policy_revision":{"anyOf":[{"type":"string"},{"type":"null"}]},"rank_scale":{"type":"string"},"result_kind":{"type":"string"},"surface":{"type":"string"},"target_revision":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["device","engine","identity_revision","language","location","policy_revision","rank_scale","result_kind","surface","target_revision"]},{"type":"null"}]},"effective_scope":{"anyOf":[{"type":"object","properties":{"device":{"type":"string"},"engine":{"type":"string"},"identity_revision":{"anyOf":[{"type":"string"},{"type":"null"}]},"language":{"type":"string"},"location":{"type":"string"},"policy_revision":{"anyOf":[{"type":"string"},{"type":"null"}]},"rank_scale":{"type":"string"},"result_kind":{"type":"string"},"surface":{"type":"string"},"target_revision":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["device","engine","identity_revision","language","location","policy_revision","rank_scale","result_kind","surface","target_revision"]},{"type":"null"}]},"evidence":{"type":"string"},"expected_url_at_check":{"anyOf":[{"type":"string"},{"type":"null"}]},"freshness":{"type":"string"},"freshness_as_of":{"type":"string","format":"date-time"},"freshness_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"keyword_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"keyword":{"type":"string"},"normalization_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"provider":{"anyOf":[{"type":"string"},{"type":"null"}]},"ranking_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"reported_position":{"anyOf":[{"type":"number"},{"type":"null"}]},"requested_depth":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"normalized_items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"check_id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"keyword_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"checked_at":{"type":"string","format":"date-time"},"check_recorded_at":{"type":"string","format":"date-time"},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"recorded_at":{"type":"string","format":"date-time"},"requested_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"source_observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"block_position":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"business_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"cid":{"anyOf":[{"type":"string"},{"type":"null"}]},"domain":{"anyOf":[{"type":"string"},{"type":"null"}]},"maps_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"ordinal":{"type":"integer","minimum":0},"place_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"position_in_block":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"rank_absolute":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"rank_group":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"rank_scale":{"anyOf":[{"type":"string"},{"type":"null"}]},"promotion":{"anyOf":[{"type":"string"},{"type":"null"}]},"source_page":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"source_block_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"source_ordinal":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"result_kind":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","check_id","keyword_id","checked_at","check_recorded_at","observed_at","recorded_at","requested_at","source_observed_at","block_position","business_name","cid","domain","maps_url","ordinal","place_id","position_in_block","rank_absolute","rank_group","rank_scale","promotion","source_page","source_block_id","source_ordinal","result_kind","title","url"]}},"normalized_item_count":{"type":"integer","minimum":0}},"required":["checked_at","check_recorded_at","observed_at","recorded_at","requested_at","comparison_digest","complete_through","completeness","configured_scope","effective_scope","evidence","expected_url_at_check","freshness","freshness_as_of","freshness_reason","id","keyword_id","keyword","normalization_version","position","provider","ranking_url","reason","reported_position","requested_depth","normalized_items","normalized_item_count"]},{"type":"object","properties":{"checked_at":{"type":"string","format":"date-time"},"check_recorded_at":{"type":"string","format":"date-time"},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"recorded_at":{"type":"string","format":"date-time"},"requested_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"deferred_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"keyword_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"keyword":{"type":"string"},"kind":{"const":"logical_rank_check","type":"string"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}]},"reported_provider_attempt_count":{"type":"integer","minimum":0},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"status":{"type":"string"}},"required":["checked_at","check_recorded_at","observed_at","recorded_at","requested_at","deferred_reason","error_code","finished_at","id","keyword_id","keyword","kind","provider","reported_provider_attempt_count","started_at","status"]},{"type":"object","properties":{"recorded_at":{"type":"string","format":"date-time"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"status":{"type":"string"},"blocked_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"run_id":{"example":"rcr_a00000000000000000000000","pattern":"^rcr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"rcr"},"rank_check_state":{"const":"not_attached","type":"string"},"kind":{"const":"rank_check_run_item","type":"string"},"id":{"type":"string","description":"Opaque retained run-item ID, identical to the run-items API."},"keyword_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"keyword":{"type":"string"},"not_before":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"run_status":{"type":"string"},"run_outcome":{"anyOf":[{"type":"string"},{"type":"null"}]},"scope_membership":{"const":"persisted_run_item","type":"string"}},"required":["recorded_at","started_at","finished_at","status","blocked_reason","run_id","rank_check_state","kind","id","keyword_id","keyword","not_before","run_status","run_outcome","scope_membership"]},{"type":"object","properties":{"recorded_at":{"type":"string","format":"date-time"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"status":{"type":"string"},"blocked_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"run_id":{"example":"rcr_a00000000000000000000000","pattern":"^rcr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"rcr"},"rank_check_state":{"const":"not_attached","type":"string"},"kind":{"const":"rank_check_run","type":"string"},"id":{"example":"rcr_a00000000000000000000000","pattern":"^rcr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"rcr"},"planned_for":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"launched_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"outcome":{"anyOf":[{"type":"string"},{"type":"null"}]},"trigger":{"type":"string"},"selection_kind":{"type":"string"},"scope_membership":{"enum":["persisted_run_items","project_only"],"type":"string"},"counts":{"type":"object","properties":{"requested":{"type":"integer","minimum":0},"total":{"type":"integer","minimum":0},"completed":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"deferred":{"type":"integer","minimum":0},"skipped":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0}},"required":["requested","total","completed","failed","deferred","skipped","cancelled"]}},"required":["recorded_at","started_at","finished_at","status","blocked_reason","run_id","rank_check_state","kind","id","planned_for","launched_at","outcome","trigger","selection_kind","scope_membership","counts"]}]},"RankHistoryReportMetadata":{"type":"object","properties":{"version":{"const":2,"type":"integer"},"aggregation":{"const":"none","type":"string"},"as_of":{"type":"string","format":"date-time"},"window":{"type":"object","properties":{"basis":{"enum":["observed_at","recorded_at"],"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}},"required":["basis","from","to"]},"summary_basis":{"const":"current_definition_as_of_registered_baseline","type":"string"},"definition_version":{"type":"string"},"metric_id":{"type":"string"},"selection_digest":{"type":"string"},"total_count":{"type":"integer","minimum":0},"excluded_unknown_time":{"type":"integer","minimum":0},"unresolved_membership_count":{"type":"integer","minimum":0,"description":"No-check runs omitted from a selected/filtered export because retained keyword membership cannot be proved. Project-only runs remain in full-project exports."},"normalized_items":{"type":"object","properties":{"total_count":{"type":"integer","minimum":0},"completeness":{"const":"retained_only","type":"string"},"is_truncated":{"const":false,"type":"boolean"},"capacity":{"type":"integer","minimum":0},"paging":{"const":"observation_pages_only","type":"string"}},"required":["total_count","completeness","is_truncated","capacity","paging"]},"membership":{"type":"string","description":"Explicit membership policy: full project retained history, explicit selected retained history, or current active filtered query."},"summary":{"type":"object","properties":{"comparison":{"type":"string"},"metric":{"type":"object","properties":{"metric_id":{"type":"string"},"definition_version":{"type":"string"},"as_of":{"type":"string","format":"date-time"},"value":{"anyOf":[{"type":"number"},{"type":"null"}]},"delta":{"anyOf":[{"type":"number"},{"type":"null"}]},"counts":{"type":"object","properties":{"expected":{"type":"integer","minimum":0},"measured":{"type":"integer","minimum":0},"metric_eligible":{"type":"integer","minimum":0},"ranked":{"type":"integer","minimum":0},"known_absent":{"type":"integer","minimum":0},"unknown":{"type":"integer","minimum":0},"never_checked":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"stale":{"type":"integer","minimum":0},"unsupported":{"type":"integer","minimum":0},"fresh_determinate":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"unknown_freshness":{"type":"integer","minimum":0},"comparable":{"type":"integer","minimum":0}},"required":["expected","measured","metric_eligible","ranked","known_absent","unknown","never_checked","failed","stale","unsupported","fresh_determinate","unknown_freshness","comparable"]},"data_coverage":{"anyOf":[{"type":"number"},{"type":"null"}]},"observed_coverage":{"anyOf":[{"type":"number"},{"type":"null"}]},"freshness":{"type":"string"},"freshness_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"imputed_weight_share":{"anyOf":[{"type":"number"},{"type":"null"}]},"contributions":{"type":"array","items":{"type":"object","properties":{"target_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"weight":{"type":"number"},"value":{"anyOf":[{"type":"number"},{"type":"null"}]},"delta":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["target_id","weight","value","delta"]}},"exclusions":{"type":"array","items":{"type":"object","properties":{"target_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"reason":{"type":"string"}},"required":["target_id","reason"]}},"added":{"anyOf":[{"type":"array","items":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"}},{"type":"null"}]},"removed":{"anyOf":[{"type":"array","items":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"}},{"type":"null"}]},"composition_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"weight_provenance":{"type":"object","properties":{"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"period":{"anyOf":[{"type":"string"},{"type":"null"}]},"market":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["source","period","market"]},"included_count":{"type":"integer","minimum":0},"eligible_total":{"type":"integer","minimum":0},"is_truncated":{"type":"boolean"}},"required":["metric_id","definition_version","as_of","value","delta","counts","data_coverage","observed_coverage","freshness","freshness_reason","imputed_weight_share","contributions","exclusions","added","removed","composition_reason","weight_provenance","included_count","eligible_total","is_truncated"]},"movement_counts":{"anyOf":[{"type":"object","properties":{"improved":{"type":"integer","minimum":0},"declined":{"type":"integer","minimum":0},"entered":{"type":"integer","minimum":0},"exited":{"type":"integer","minimum":0},"first":{"type":"integer","minimum":0},"moved":{"type":"integer","minimum":0},"re_entered":{"type":"integer","minimum":0},"steady":{"type":"integer","minimum":0},"unknown":{"type":"integer","minimum":0}},"required":["improved","declined","entered","exited","first","moved","re_entered","steady","unknown"]},{"type":"null"}]},"retained_history":{"type":"object","properties":{"checks":{"type":"integer","minimum":0},"completeness":{"const":"retained_only","type":"string"},"targets":{"type":"integer","minimum":0}},"required":["checks","completeness","targets"]},"selection_digest":{"type":"string"},"time_basis":{"type":"object","properties":{"as_of":{"type":"string","format":"date-time"},"baseline":{"anyOf":[{"type":"object","properties":{"before":{"type":"string","format":"date-time"},"not_before":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["before","not_before"]},{"type":"null"}]},"current_not_before":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["as_of","baseline","current_not_before"]}},"required":["comparison","metric","movement_counts","retained_history","selection_digest","time_basis"]},"resolutions":{"type":"array","items":{"type":"object","properties":{"baseline":{"anyOf":[{"type":"object","properties":{"comparison_digest":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence":{"type":"string"},"freshness":{"type":"string"},"freshness_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"normalization_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"provider":{"anyOf":[{"type":"string"},{"type":"null"}]},"ranking_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"recorded_at":{"type":"string","format":"date-time"},"reported_position":{"anyOf":[{"type":"number"},{"type":"null"}]},"requested_depth":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]}},"required":["comparison_digest","evidence","freshness","freshness_reason","id","normalization_version","observed_at","position","provider","ranking_url","reason","recorded_at","reported_position","requested_depth"]},{"type":"null"}]},"comparison":{"type":"string"},"comparison_boundary":{"anyOf":[{"type":"object","properties":{"point":{"anyOf":[{"type":"object","properties":{"comparison_digest":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence":{"type":"string"},"freshness":{"type":"string"},"freshness_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"normalization_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"provider":{"anyOf":[{"type":"string"},{"type":"null"}]},"ranking_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"recorded_at":{"type":"string","format":"date-time"},"reported_position":{"anyOf":[{"type":"number"},{"type":"null"}]},"requested_depth":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]}},"required":["comparison_digest","evidence","freshness","freshness_reason","id","normalization_version","observed_at","position","provider","ranking_url","reason","recorded_at","reported_position","requested_depth"]},{"type":"null"}]},"reason":{"type":"string"}},"required":["point","reason"]},{"type":"null"}]},"comparison_window":{"anyOf":[{"type":"object","properties":{"before":{"type":"string","format":"date-time"},"not_before":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["before","not_before"]},{"type":"null"}]},"comparison_unavailable_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"current":{"anyOf":[{"type":"object","properties":{"comparison_digest":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence":{"type":"string"},"freshness":{"type":"string"},"freshness_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"normalization_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"provider":{"anyOf":[{"type":"string"},{"type":"null"}]},"ranking_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"recorded_at":{"type":"string","format":"date-time"},"reported_position":{"anyOf":[{"type":"number"},{"type":"null"}]},"requested_depth":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]}},"required":["comparison_digest","evidence","freshness","freshness_reason","id","normalization_version","observed_at","position","provider","ranking_url","reason","recorded_at","reported_position","requested_depth"]},{"type":"null"}]},"event":{"anyOf":[{"type":"string"},{"type":"null"}]},"keyword_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"last_success":{"anyOf":[{"type":"object","properties":{"comparison_digest":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence":{"type":"string"},"freshness":{"type":"string"},"freshness_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"normalization_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"provider":{"anyOf":[{"type":"string"},{"type":"null"}]},"ranking_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"recorded_at":{"type":"string","format":"date-time"},"reported_position":{"anyOf":[{"type":"number"},{"type":"null"}]},"requested_depth":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]}},"required":["comparison_digest","evidence","freshness","freshness_reason","id","normalization_version","observed_at","position","provider","ranking_url","reason","recorded_at","reported_position","requested_depth"]},{"type":"null"}]},"latest_attempt":{"anyOf":[{"type":"object","properties":{"id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"measurement_recorded_at":{"type":"string","format":"date-time"},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"recorded_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"status":{"type":"string"}},"required":["id","measurement_recorded_at","observed_at","recorded_at","status"]},{"type":"null"}]},"movement":{"anyOf":[{"type":"number"},{"type":"null"}]},"current_scope_state":{"type":"string"},"last_known":{"type":"object","properties":{"baseline":{"anyOf":[{"type":"object","properties":{"comparison_digest":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence":{"type":"string"},"freshness":{"type":"string"},"freshness_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"normalization_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"provider":{"anyOf":[{"type":"string"},{"type":"null"}]},"ranking_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"recorded_at":{"type":"string","format":"date-time"},"reported_position":{"anyOf":[{"type":"number"},{"type":"null"}]},"requested_depth":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]}},"required":["comparison_digest","evidence","freshness","freshness_reason","id","normalization_version","observed_at","position","provider","ranking_url","reason","recorded_at","reported_position","requested_depth"]},{"type":"null"}]},"comparison":{"type":"string"},"comparison_boundary":{"anyOf":[{"type":"object","properties":{"point":{"anyOf":[{"type":"object","properties":{"comparison_digest":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence":{"type":"string"},"freshness":{"type":"string"},"freshness_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"normalization_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"provider":{"anyOf":[{"type":"string"},{"type":"null"}]},"ranking_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"recorded_at":{"type":"string","format":"date-time"},"reported_position":{"anyOf":[{"type":"number"},{"type":"null"}]},"requested_depth":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]}},"required":["comparison_digest","evidence","freshness","freshness_reason","id","normalization_version","observed_at","position","provider","ranking_url","reason","recorded_at","reported_position","requested_depth"]},{"type":"null"}]},"reason":{"type":"string"}},"required":["point","reason"]},{"type":"null"}]},"comparison_window":{"anyOf":[{"type":"object","properties":{"before":{"type":"string","format":"date-time"},"not_before":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["before","not_before"]},{"type":"null"}]},"comparison_unavailable_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"current":{"anyOf":[{"type":"object","properties":{"comparison_digest":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence":{"type":"string"},"freshness":{"type":"string"},"freshness_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"normalization_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"provider":{"anyOf":[{"type":"string"},{"type":"null"}]},"ranking_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"recorded_at":{"type":"string","format":"date-time"},"reported_position":{"anyOf":[{"type":"number"},{"type":"null"}]},"requested_depth":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]}},"required":["comparison_digest","evidence","freshness","freshness_reason","id","normalization_version","observed_at","position","provider","ranking_url","reason","recorded_at","reported_position","requested_depth"]},{"type":"null"}]},"event":{"anyOf":[{"type":"string"},{"type":"null"}]},"keyword_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"last_success":{"anyOf":[{"type":"object","properties":{"comparison_digest":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence":{"type":"string"},"freshness":{"type":"string"},"freshness_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"normalization_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"provider":{"anyOf":[{"type":"string"},{"type":"null"}]},"ranking_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"recorded_at":{"type":"string","format":"date-time"},"reported_position":{"anyOf":[{"type":"number"},{"type":"null"}]},"requested_depth":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]}},"required":["comparison_digest","evidence","freshness","freshness_reason","id","normalization_version","observed_at","position","provider","ranking_url","reason","recorded_at","reported_position","requested_depth"]},{"type":"null"}]},"latest_attempt":{"anyOf":[{"type":"object","properties":{"id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"measurement_recorded_at":{"type":"string","format":"date-time"},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"recorded_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"status":{"type":"string"}},"required":["id","measurement_recorded_at","observed_at","recorded_at","status"]},{"type":"null"}]},"movement":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["baseline","comparison","comparison_boundary","comparison_window","comparison_unavailable_reason","current","event","keyword_id","last_success","latest_attempt","movement"]}},"required":["baseline","comparison","comparison_boundary","comparison_window","comparison_unavailable_reason","current","event","keyword_id","last_success","latest_attempt","movement","current_scope_state","last_known"]}}},"required":["version","aggregation","as_of","window","summary_basis","definition_version","metric_id","selection_digest","total_count","excluded_unknown_time","unresolved_membership_count","normalized_items","membership","summary","resolutions"]},"RankHistoryReportResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RankHistoryReportRecord"}},"meta":{"type":"object","properties":{"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"report":{"$ref":"#/components/schemas/RankHistoryReportMetadata"}},"required":["next_cursor","report"]}},"required":["data","meta"]},"RankHistoryExportResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/RankHistoryExportRow"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object"}},"required":["data","meta"],"type":"object"},"RankHistoryExportRow":{"properties":{"checked_at":{"format":"date-time","type":"string"},"id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"keyword":{"type":"string"},"keyword_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"normalization_version":{"type":["string","null"]},"position":{"type":["integer","null"]},"previous_position":{"type":["integer","null"]},"provider":{"type":["string","null"]},"ranking_url":{"type":["string","null"]},"requested_depth":{"minimum":1,"type":["integer","null"]}},"required":["id","keyword_id","keyword","checked_at","position","previous_position","ranking_url"],"type":"object"},"SitemapMonitor":{"properties":{"enabled":{"type":"boolean"},"id":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"latest_snapshot":{"properties":{"fetched_at":{"format":"date-time","type":"string"},"sitemap_url":{"format":"uri","type":"string"},"url_count":{"minimum":0,"type":"integer"}},"required":["sitemap_url","url_count","fetched_at"],"type":["object","null"]},"project_id":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"sitemap_url":{"format":"uri","type":["string","null"]},"status":{"enum":["active","disabled","pending"],"type":"string"}},"required":["id","project_id","enabled","status","sitemap_url","latest_snapshot"],"type":"object"},"SitemapMonitorList":{"properties":{"data":{"items":{"$ref":"#/components/schemas/SitemapMonitor"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object"}},"required":["data","meta"],"type":"object"},"SitemapMonitorPatch":{"properties":{"enabled":{"type":"boolean"}},"required":["enabled"],"type":"object"},"TriggeredAlertMuteResult":{"properties":{"muted":{"const":true,"type":"boolean"},"snoozed_until":{"format":"date-time","type":["string","null"]}},"required":["muted","snoozed_until"],"type":"object"},"TriggeredAlertsReadResult":{"properties":{"updated":{"minimum":0,"type":"integer"}},"required":["updated"],"type":"object"},"SearchPerformanceQueryStat":{"properties":{"clicks":{"minimum":0,"type":"integer"},"ctr":{"minimum":0,"type":"number"},"impressions":{"minimum":0,"type":"integer"},"page":{"type":["string","null"]},"position":{"minimum":0,"type":"number"},"query":{"type":"string"}},"required":["query","clicks","impressions","ctr","position"],"type":"object"},"SearchPerformanceQueryStatsResponse":{"description":"Rows are the provider's aggregate over all countries and devices for the range; filter by query is exact match unless query_match=contains.","properties":{"connection":{"$ref":"#/components/schemas/AnalyticsConnection"},"result":{"x-bisibility-name":"SearchPerformanceQueryResult","properties":{"row_cap":{"description":"Maximum number of rows this request can return.","type":"integer"},"rows_returned":{"description":"Rows carried in this response after all filters.","type":"integer"},"sort":{"description":"Rows are ordered by clicks, highest first.","enum":["clicks_desc"],"x-bisibility-enum":"open","x-bisibility-name":"SearchPerformanceSort","type":"string"},"truncated":{"description":"True exactly when this response carries row_cap rows; more matching rows may exist. clicks_min, impressions_min and position_max are applied after the source cap, so when they are set a false value does not prove that no further matching rows exist.","type":"boolean"}},"required":["row_cap","rows_returned","truncated","sort"],"type":"object"},"rows":{"items":{"$ref":"#/components/schemas/SearchPerformanceQueryStat"},"type":"array"},"scope":{"x-bisibility-name":"SearchPerformanceQueryScope","properties":{"country":{"description":"Always null. Rows are the provider's aggregate over all countries and devices for the range.","type":"null"},"device":{"description":"Always null. Rows are the provider's aggregate over all countries and devices for the range.","type":"null"},"dimensions":{"description":"Dimensions the source grouped rows by: query, or query and page when page_path is set.","items":{"enum":["query","page"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"SearchPerformanceDimension"},"type":"array"},"end_date":{"format":"date","type":"string"},"page_path":{"description":"Page path filter applied, or null when none was requested.","type":["string","null"]},"query_match":{"description":"Match semantics applied to the query filter: exact match unless query_match=contains.","enum":["equals","contains"],"x-bisibility-enum":"open","x-bisibility-name":"SearchPerformanceQueryMatch","type":"string"},"start_date":{"format":"date","type":"string"}},"required":["start_date","end_date","dimensions","query_match","page_path","country","device"],"type":"object"}},"required":["connection","rows","scope","result"],"type":"object"},"AnalyticsConnection":{"properties":{"id":{"pattern":"^conn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"conn"},"label":{"type":"string"},"provider":{"type":"string"}},"required":["id","label","provider"],"type":"object"},"PageTrafficSnapshot":{"properties":{"bounce_rate":{"type":["number","null"]},"created_at":{"format":"date-time","type":"string"},"date":{"format":"date","type":"string"},"engagement_rate":{"type":["number","null"]},"key_events":{"type":["number","null"]},"path":{"type":"string"},"provider":{"type":"string"},"scroll_depth":{"type":["number","null"]},"sessions":{"minimum":0,"type":"integer"},"updated_at":{"format":"date-time","type":"string"},"visit_duration_seconds":{"type":["number","null"]},"visitors":{"minimum":0,"type":["integer","null"]},"window_days":{"minimum":1,"type":"integer"}},"required":["provider","path","date","window_days","sessions","visitors","engagement_rate","bounce_rate","visit_duration_seconds","key_events","scroll_depth","created_at","updated_at"],"type":"object"},"PageTrafficSnapshotsResponse":{"properties":{"offset":{"minimum":0,"type":"integer"},"rows":{"items":{"$ref":"#/components/schemas/PageTrafficSnapshot"},"type":"array"},"total_count":{"minimum":0,"type":"integer"}},"required":["rows","total_count","offset"],"type":"object"},"TrafficSyncRun":{"properties":{"connection_id":{"pattern":"^conn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"conn"},"error":{"type":"string"},"error_class":{"type":"string"},"provider":{"type":"string"},"status":{"enum":["succeeded_with_data","succeeded_empty","deferred_rate_limit","failed","not_applicable"],"type":"string"},"rows_fetched":{"minimum":0,"type":"integer"},"rows_matched":{"minimum":0,"type":"integer"},"rows_upserted":{"minimum":0,"type":"integer"},"truncated":{"type":"boolean"}},"required":["connection_id","provider","status","rows_fetched","rows_matched","rows_upserted","truncated"],"type":"object"},"TrafficSyncSummary":{"properties":{"connections":{"minimum":0,"type":"integer"},"keyword_snapshots":{"minimum":0,"type":"integer"},"page_snapshots":{"minimum":0,"type":"integer"},"project_id":{"pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"runs":{"items":{"$ref":"#/components/schemas/TrafficSyncRun"},"type":"array"},"skipped":{"items":{"properties":{"provider":{"type":"string"},"reason":{"enum":["no_capability","rate_limited"],"type":"string"}},"required":["provider","reason"],"type":"object"},"type":"array"}},"required":["connections","keyword_snapshots","page_snapshots","project_id","runs","skipped"],"type":"object"},"LocationSuggestion":{"properties":{"city_name":{"type":["string","null"]},"country_code":{"minLength":2,"type":"string"},"display_name":{"type":"string"},"hl":{"type":"string"},"kind":{"enum":["country","region","city"],"type":"string"},"language_code":{"type":"string"},"language_label":{"type":"string"},"location_key":{"example":"ES/Andalusia/Malaga@en","type":"string"},"region_code":{"type":["string","null"]},"region_name":{"type":["string","null"]}},"required":["kind","display_name","country_code","region_code","region_name","city_name","location_key","hl","language_code","language_label"],"type":"object"},"LocationSuggestionsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/LocationSuggestion"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object"}},"required":["data","meta"],"type":"object"},"RankedKeywordConnection":{"properties":{"id":{"pattern":"^conn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"conn"},"label":{"type":"string"},"provider":{"enum":["dataforseo"],"type":"string"}},"required":["id","label","provider"],"type":"object"},"RankedKeywordSuggestion":{"properties":{"already_tracked":{"type":"boolean"},"estimated_traffic":{"minimum":0,"type":["number","null"]},"keyword":{"type":"string"},"position":{"minimum":1,"type":["integer","null"]},"search_volume":{"minimum":0,"type":["number","null"]}},"required":["keyword","position","search_volume","estimated_traffic","already_tracked"],"type":"object"},"RankedKeywordSuggestionsResponse":{"properties":{"cached":{"type":"boolean"},"connections":{"items":{"$ref":"#/components/schemas/RankedKeywordConnection"},"type":"array"},"cost_cents":{"minimum":0,"type":"number"},"fetched_at":{"format":"date-time","type":"string"},"offset":{"minimum":0,"type":"integer"},"rows":{"items":{"$ref":"#/components/schemas/RankedKeywordSuggestion"},"type":"array"},"total_count":{"minimum":0,"type":["integer","null"]}},"required":["rows","total_count","offset","cost_cents","cached","fetched_at","connections"],"type":"object"},"TeamInviteResendResult":{"properties":{"expires_at":{"format":"date-time","type":"string"},"id":{"example":"inv_a00000000000000000000000","pattern":"^inv_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"inv"},"invite_link":{"format":"uri","type":"string"}},"required":["id","expires_at","invite_link"],"type":"object"},"TeamMemberMutationResult":{"properties":{"id":{"example":"mbr_a00000000000000000000000","pattern":"^mbr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"mbr"}},"required":["id"],"type":"object"},"TeamMemberRolePatch":{"properties":{"role":{"enum":["admin","member","viewer"],"type":"string"}},"required":["role"],"type":"object"},"TeamMemberRoleResult":{"properties":{"id":{"example":"mbr_a00000000000000000000000","pattern":"^mbr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"mbr"},"role":{"enum":["admin","member","viewer"],"type":"string"}},"required":["id","role"],"type":"object"},"ProjectDefaultsReview":{"type":"object","additionalProperties":false,"properties":{"expected_source_hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"expected_revision":{"type":"string","pattern":"^(0|[1-9][0-9]*)$"},"preview_token":{"type":"string","minLength":1,"maxLength":8192},"idempotency_key":{"type":"string","minLength":8,"maxLength":128},"confirmed":{"type":"boolean","const":true}},"required":["expected_source_hash","expected_revision","preview_token","idempotency_key","confirmed"]},"ProjectDefaultsPreview":{"type":"object","additionalProperties":false,"properties":{"request":{"type":"object","additionalProperties":false,"properties":{"kind":{"const":"patch","type":"string"},"values":{"allOf":[{"$ref":"#/components/schemas/ProjectDefaultsPatch"},{"properties":{"project_id":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"}},"required":["project_id"],"type":"object"}]}},"required":["kind","values"]},"draft":{"allOf":[{"$ref":"#/components/schemas/ProjectDefaultsPatch"},{"properties":{"project_id":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"}},"required":["project_id","country","device","location_key","frequency","timezone","jitter_minutes","serp_depth","serp_stop_on_match"],"type":"object"}]},"expected_source_hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"expected_revision":{"type":"string","pattern":"^(0|[1-9][0-9]*)$"},"preview_token":{"type":"string","minLength":1,"maxLength":8192},"expires_at":{"type":"string","format":"date-time"},"resolved":{"type":"object","additionalProperties":false,"properties":{"location_key":{"type":"string"},"label":{"type":"string"},"language_code":{"type":"string"},"device":{"type":"string","enum":["desktop","mobile"]}},"required":["location_key","label","language_code","device"]},"impact":{"type":"object","additionalProperties":false,"properties":{"existing_target_retargets":{"type":"integer","const":0},"new_targets":{"type":"integer","const":0},"inherited_depth_targets":{"type":"integer","minimum":0},"recurring_estimate":{"type":"string","enum":["unchanged","unknown"]},"scope_changed":{"type":"boolean"},"cadence_changed":{"type":"boolean"}},"required":["existing_target_retargets","new_targets","inherited_depth_targets","recurring_estimate","scope_changed","cadence_changed"]},"policy_ready":{"type":"boolean"}},"required":["request","draft","expected_source_hash","expected_revision","preview_token","expires_at","resolved","impact","policy_ready"]},"Project":{"properties":{"created_at":{"format":"date-time","type":"string"},"domain":{"type":"string"},"id":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"name":{"type":"string"},"readiness":{"description":"Present on get_project responses; summarizes what the current credential can do on the project.","properties":{"backlinks":{"properties":{"available":{"type":"boolean"},"reason":{"description":"Closed reason enum; null when the area is available.","enum":["provider_not_connected","provider_disabled","needs_reauth","project_read_only","token_read_only",null],"type":["string","null"],"x-bisibility-enum":"open","x-bisibility-name":"ReadinessReason"}},"required":["available","reason"],"type":"object","x-bisibility-name":"ReadinessArea"},"domain_overview":{"properties":{"available":{"type":"boolean"},"reason":{"description":"Closed reason enum; null when the area is available.","enum":["provider_not_connected","provider_disabled","needs_reauth","project_read_only","token_read_only",null],"type":["string","null"],"x-bisibility-enum":"open","x-bisibility-name":"ReadinessReason"}},"required":["available","reason"],"type":"object","x-bisibility-name":"ReadinessArea"},"keyword_research":{"properties":{"available":{"type":"boolean"},"reason":{"description":"Closed reason enum; null when the area is available.","enum":["provider_not_connected","provider_disabled","needs_reauth","project_read_only","token_read_only",null],"type":["string","null"],"x-bisibility-enum":"open","x-bisibility-name":"ReadinessReason"}},"required":["available","reason"],"type":"object","x-bisibility-name":"ReadinessArea"},"search_performance":{"properties":{"available":{"type":"boolean"},"reason":{"description":"Closed reason enum; null when the area is available.","enum":["provider_not_connected","provider_disabled","needs_reauth","project_read_only","token_read_only",null],"type":["string","null"],"x-bisibility-enum":"open","x-bisibility-name":"ReadinessReason"}},"required":["available","reason"],"type":"object","x-bisibility-name":"ReadinessArea"},"serp":{"properties":{"available":{"type":"boolean"},"primary_provider":{"description":"Rank-data provider that would serve checks, regardless of availability.","type":["string","null"]},"reason":{"description":"Closed reason enum; null when the area is available.","enum":["provider_not_connected","provider_disabled","needs_reauth","project_read_only","token_read_only",null],"type":["string","null"],"x-bisibility-enum":"open","x-bisibility-name":"ReadinessReason"}},"required":["available","reason","primary_provider"],"type":"object","x-bisibility-name":"SerpReadiness"},"token_scope":{"description":"What this credential may do: read or write.","enum":["read","write"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"TokenScope"},"write_mode":{"enum":["active","migration_hold","migrated"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ProjectWriteMode"}},"required":["token_scope","write_mode","serp","backlinks","domain_overview","keyword_research","search_performance"],"type":"object","x-bisibility-name":"ProjectReadiness"},"updated_at":{"format":"date-time","type":"string"},"write_mode":{"enum":["active","migration_hold","migrated"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ProjectWriteMode"}},"required":["id","name","domain","created_at","updated_at","write_mode"],"type":"object"},"ProjectDefaults":{"properties":{"city":{"type":["string","null"]},"country":{"description":"Persisted default country for new keywords.","example":"United States","type":"string"},"cron_expression":{"type":["string","null"]},"device":{"enum":["desktop","mobile"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"Device","description":"Persisted default device for new keywords and moved default-market keywords."},"frequency":{"enum":["paused","manual","daily","weekly","monthly","custom_cron"],"type":"string"},"jitter_minutes":{"description":"Whole-minute random delay from 0 to 120. Set 0 to disable jitter.","maximum":120,"minimum":0,"type":"integer"},"last_checked_at":{"format":"date-time","type":["string","null"]},"location_key":{"example":"ES/Andalusia/Malaga@en","type":"string","description":"Persisted canonical location key for the default market."},"next_check_at":{"format":"date-time","type":["string","null"]},"project_id":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"serp_depth":{"enum":[10,20,50,100],"type":"integer"},"serp_stop_on_match":{"description":"Stops a SERP crawl after the tracked domain is found.","type":"boolean"},"source":{"description":"How the effective default market was selected.","enum":["derived","explicit","fallback"],"type":"string"},"timezone":{"description":"IANA time zone that anchors monthly and custom cron wall-clock schedules. Daily and weekly use a stable keyword-specific interval phase that timezone does not move.","type":"string"},"updated_at":{"format":"date-time","type":["string","null"]}},"required":["project_id","country","city","device","frequency","cron_expression","timezone","jitter_minutes","last_checked_at","location_key","next_check_at","serp_depth","serp_stop_on_match","source"],"type":"object"},"ProjectDefaultsPatch":{"properties":{"review":{"$ref":"#/components/schemas/ProjectDefaultsReview"},"city":{"type":["string","null"],"deprecated":true,"description":"Optional city name resolved within country when location_key is omitted. Deprecated legacy market input: send location_key instead. Still accepted for compatibility; no removal version is scheduled."},"country":{"enum":["United States","United Kingdom","Canada","Australia","Germany","France","Spain","Italy","Netherlands","Sweden","Poland","Ireland","Portugal","Belgium","Switzerland","Austria","Denmark","Norway","Finland","Brazil","Mexico","India","Japan","Singapore","New Zealand","South Africa","United Arab Emirates"],"example":"United States","type":"string","deprecated":true,"description":"Optional country selector when location_key is omitted. Provide together with device. Deprecated legacy market input: send location_key instead. Still accepted for compatibility; no removal version is scheduled."},"cron_expression":{"type":["string","null"]},"device":{"enum":["desktop","mobile"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"Device","description":"Optional device selector. Provide with country when location_key is omitted; with location_key it overrides the current default device."},"frequency":{"enum":["paused","manual","daily","weekly","monthly","custom_cron"],"type":"string"},"jitter_minutes":{"description":"Whole-minute random delay from 0 to 120. Set 0 to disable jitter.","maximum":120,"minimum":0,"type":"integer"},"location_key":{"example":"ES/Andalusia/Malaga@en","type":"string","description":"Primary location reference: canonical country, region, or city key, optionally qualified with @language. Updates the default market from a canonical location key. Country and city are resolved from the location catalog; device defaults to the current default device when omitted."},"serp_depth":{"description":"Default number of SERP results scanned per rank check. Omitted keeps the stored depth.","enum":[10,20,50,100],"type":"integer"},"serp_stop_on_match":{"description":"Set false to fetch the full configured depth for competitor snapshots.","type":"boolean"},"timezone":{"description":"IANA time zone that anchors monthly and custom cron wall-clock schedules. Daily and weekly use a stable keyword-specific interval phase that timezone does not move.","type":"string"}},"required":[],"type":"object"},"ProjectOverview":{"properties":{"average_position":{"description":"Mean current position among keywords with ranked observations.","type":["number","null"]},"average_position_delta":{"description":"Previous mean position minus current mean position.","type":["number","null"]},"keywords_added_this_month":{"minimum":0,"type":"integer"},"last_check_at":{"format":"date-time","type":["string","null"]},"next_check_at":{"format":"date-time","type":["string","null"]},"position_distribution":{"items":{"properties":{"count":{"minimum":0,"type":["integer","null"]},"max":{"minimum":1,"type":"integer"},"min":{"minimum":1,"type":"integer"}},"required":["min","max","count"],"type":"object","x-bisibility-name":"PositionBucket"},"type":"array"},"project_id":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"top_3_count":{"minimum":0,"type":["integer","null"]},"top_10_count":{"minimum":0,"type":["integer","null"]},"top_10_delta":{"type":["integer","null"]},"top_100_count":{"minimum":0,"type":["integer","null"]},"tracked_keyword_count":{"minimum":0,"type":"integer"},"visibility":{"description":"Visibility measures volume-weighted ranking strength in Google's Top 20. 100 means every measured keyword ranks #1. Rankings below #20 do not add Visibility. Shallow or failed checks are not treated as lost rankings.","maximum":100,"minimum":0,"type":["number","null"]},"visibility_delta":{"description":"Visibility change in percentage points.","type":["number","null"]}},"required":["project_id","tracked_keyword_count","keywords_added_this_month","average_position","average_position_delta","top_3_count","top_10_count","top_10_delta","top_100_count","visibility","visibility_delta","position_distribution","last_check_at","next_check_at"],"type":"object"},"RankCheck":{"properties":{"usage":{"description":"Confirmed provider usage; null quantity means unconfirmed and is never inferred from requested depth. Costs may take up to 15 minutes to update.","properties":{"quantity":{"minimum":0,"type":["number","null"]},"status":{"enum":["confirmed","unconfirmed"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"UsageStatus"},"unit":{"enum":["operations","cents"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"UsageUnit"}},"required":["quantity","status","unit"],"type":"object","x-bisibility-name":"RankCheckUsage"},"attempts":{"description":"Provider fallback attempts recorded before the final rank-check status.","items":{"properties":{"message":{"type":"string"},"provider":{"type":"string"}},"required":["provider","message"],"type":"object","x-bisibility-name":"RankCheckAttempt"},"type":["array","null"]},"checked_at":{"format":"date-time","type":"string"},"cost_cents":{"type":["number","null"],"x-bisibility-money":"usd_cents"},"error":{"type":["string","null"]},"error_code":{"description":"Stable failure code for this check, or null for rows older than the code taxonomy.","type":["string","null"]},"id":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"},"keyword_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"observation_completeness":{"description":"Persisted coverage, or null when legacy metadata is absent. Only complete coverage supports absence within depth; a valid positive rank remains valid with truncated coverage.","enum":["complete","truncated_by_stop_on_match","unknown",null],"type":["string","null"],"x-bisibility-enum":"open","x-bisibility-name":"ObservationCompleteness"},"position":{"type":["integer","null"]},"previous_position":{"type":["integer","null"]},"provider":{"type":"string"},"ranking_url":{"type":["string","null"]},"run":{"description":"The run that produced this result, or null for a legacy row.","properties":{"finished_at":{"format":"date-time","type":["string","null"]},"id":{"example":"rcr_a00000000000000000000000","pattern":"^rcr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"rcr"},"started_at":{"format":"date-time","type":["string","null"]},"status":{"type":"string"},"trigger":{"type":"string"}},"required":["id","status","trigger","started_at","finished_at"],"type":["object","null"],"x-bisibility-name":"RankCheckRunReference"},"run_id":{"example":"rcr_a00000000000000000000000","pattern":"^rcr_[a-z][a-z0-9]{23}$","type":["string","null"],"description":"Rank-check run that produced this result, or null for a legacy row.","x-bisibility-public-id":"rcr"},"status":{"enum":["completed","failed","running"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"RankCheckStatus"}},"required":["id","keyword_id","checked_at","position","observation_completeness","previous_position","provider","ranking_url","run_id","run","cost_cents","attempts","error","error_code","status"],"type":"object"},"RankCheckRunQueued":{"properties":{"id":{"example":"rcr_a00000000000000000000000","pattern":"^rcr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"rcr"},"status":{"enum":["queued"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"RankCheckQueuedStatus"}},"required":["id","status"],"type":"object"},"BacklinksRowsEstimate":{"description":"Upper bound for the next page at the requested limit. Zero when that page is already retained. No provider request or snapshot mutation occurs.","properties":{"cached":{"description":"An unexpired snapshot exists, so the paid call would cost nothing.","type":"boolean"},"cached_until":{"description":"Expiry of that snapshot; null when there is none.","format":"date-time","type":["string","null"]},"cost_cents":{"description":"0 when cached, otherwise equal to estimated_cost_cents.","minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"estimate":{"const":true,"type":"boolean"},"estimated_cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"include_subdomains":{"type":"boolean"},"provider":{"type":"string"},"target":{"type":"string"},"target_scope":{"enum":["site","page"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"BacklinksTargetScope"}},"required":["target","target_scope","include_subdomains","cached","cached_until","provider","cost_cents","estimate","estimated_cost_cents"],"type":"object"},"BacklinksRowsResponse":{"type":"object","required":["data"],"properties":{"data":{"oneOf":[{"$ref":"#/components/schemas/BacklinksRowsEstimate"},{"$ref":"#/components/schemas/BacklinksSnapshot"}],"x-bisibility-name":"BacklinksRowsResult","x-bisibility-union":{"cases":["estimate","snapshot"],"style":"tagged","tag":"estimate"}}}},"BacklinksRowsRequest":{"properties":{"estimate_only":{"type":"boolean","description":"Return the next-page estimate without provider I/O or changing the snapshot."},"max_cost_cents":{"type":"integer","minimum":0,"x-bisibility-money":"usd_cents","description":"Optional upper bound on the admitted next-page cost estimate."},"snapshot_ref":{"minLength":1,"maxLength":32768,"type":"string","description":"Opaque snapshot_ref from the report being extended. Missing or stale references return snapshot_expired before paid I/O."},"include_subdomains":{"type":"boolean"},"limit":{"maximum":1000,"minimum":100,"multipleOf":100,"type":"integer"},"target":{"minLength":1,"type":"string"},"target_scope":{"enum":["site","page"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"BacklinksRowsTargetScope"}},"required":["target","target_scope","include_subdomains","limit"],"type":"object"},"BacklinksFailedSummaryProblem":{"allOf":[{"$ref":"#/components/schemas/Problem"},{"properties":{"details":{"additionalProperties":false,"description":"Failed current request evidence. Total cost is unknown; the completed summary is not a reusable snapshot.","properties":{"cost_cents":{"type":"null"},"known_summary_cost_cents":{"minimum":0,"type":"number"},"history_failure":{"additionalProperties":false,"properties":{"code":{"enum":["provider_usage_unconfirmed","provider_transient","unexpected_error"],"type":"string"},"phase":{"enum":["admission","request","response_body","measurement","settlement","unknown",null],"type":["string","null"]}},"required":["code","phase"],"type":"object"},"history_status":{"const":"failed","type":"string"},"include_subdomains":{"type":"boolean"},"ok":{"const":false,"type":"boolean"},"provider":{"type":"string"},"reason":{"const":"history_failed","type":"string"},"rows_status":{"const":"not_requested","type":"string"},"status":{"const":"failed","type":"string"},"summary":{"properties":{"backlinks_total":{"minimum":0,"type":"integer"},"broken_backlinks":{"minimum":0,"type":"integer"},"broken_pages":{"minimum":0,"type":"integer"},"dofollow_pct":{"maximum":100,"minimum":0,"type":"number"},"domain_rank":{"maximum":100,"minimum":0,"type":"integer"},"lost_backlinks":{"description":"Provider-lifetime count.","minimum":0,"type":"integer"},"lost_referring_domains":{"description":"Provider-lifetime count.","minimum":0,"type":"integer"},"new_backlinks":{"description":"Provider-lifetime count.","minimum":0,"type":"integer"},"new_referring_domains":{"description":"Provider-lifetime count.","minimum":0,"type":"integer"},"referring_domains_total":{"minimum":0,"type":"integer"},"referring_pages":{"minimum":0,"type":"integer"},"spam_score":{"minimum":0,"type":"number"}},"required":["backlinks_total","referring_domains_total","domain_rank","spam_score","dofollow_pct","referring_pages","broken_backlinks","broken_pages","new_backlinks","lost_backlinks","new_referring_domains","lost_referring_domains"],"type":"object","x-bisibility-name":"BacklinksFailedSummary","additionalProperties":false},"target":{"type":"string"},"target_scope":{"enum":["site","page"],"type":"string"}},"required":["cost_cents","known_summary_cost_cents","history_failure","history_status","include_subdomains","ok","provider","reason","rows_status","status","summary","target","target_scope"],"type":"object"}},"required":["details"],"type":"object"}]},"BacklinksEstimate":{"description":"Free dry run returned for estimate_only=true. It carries cost facts only and never report fields, so it cannot be mistaken for an empty backlink profile.","properties":{"cached":{"description":"An unexpired snapshot exists, so the paid call would cost nothing.","type":"boolean"},"cached_until":{"description":"Expiry of that snapshot; null when there is none.","format":"date-time","type":["string","null"]},"cost_cents":{"description":"0 when cached, otherwise equal to estimated_cost_cents.","minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"estimate":{"const":true,"type":"boolean"},"estimated_cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"include_subdomains":{"type":"boolean"},"provider":{"type":"string"},"target":{"type":"string"},"target_scope":{"enum":["site","page"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"BacklinksTargetScope"}},"required":["target","target_scope","include_subdomains","cached","cached_until","provider","cost_cents","estimate","estimated_cost_cents"],"type":"object"},"BacklinksResponse":{"properties":{"data":{"oneOf":[{"$ref":"#/components/schemas/BacklinksEstimate"},{"$ref":"#/components/schemas/BacklinksSnapshot"}],"x-bisibility-union":{"cases":["estimate","snapshot"],"style":"tagged","tag":"estimate"},"x-bisibility-name":"BacklinksResult"}},"required":["data"],"type":"object"},"BacklinksSnapshot":{"oneOf":[{"properties":{"history":{"maxItems":12},"history_unavailable":{"const":false},"target_scope":{"const":"site"}},"required":["target_scope"]},{"properties":{"history":{"maxItems":0},"history_unavailable":{"const":true}},"required":["history_unavailable"]},{"properties":{"history":{"maxItems":0},"history_unavailable":{"const":false},"target_scope":{"const":"page"}},"required":["target_scope"]}],"x-bisibility-union":{"style":"constraint"},"properties":{"snapshot_ref":{"minLength":1,"maxLength":32768,"type":"string","description":"Opaque reference for extending this exact snapshot revision."},"cached":{"type":"boolean"},"cached_until":{"format":"date-time","type":"string"},"cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"fetched_at":{"format":"date-time","type":"string"},"fetched_row_count":{"minimum":0,"type":"integer"},"history":{"items":{"properties":{"lost_links":{"minimum":0,"type":"integer"},"month":{"pattern":"^\\d{4}-(0[1-9]|1[0-2])$","type":"string"},"new_links":{"minimum":0,"type":"integer"}},"required":["month","new_links","lost_links"],"type":"object","x-bisibility-name":"BacklinksHistoryMonth"},"maxItems":12,"type":"array"},"history_unavailable":{"type":"boolean","description":"True only with empty history when the optional history request failed with a confirmed cost. Successful site history can contain zero to twelve returned months; page scope does not request history. Summary and links remain available."},"include_subdomains":{"type":"boolean"},"provider":{"type":"string"},"rows":{"items":{"properties":{"anchor":{"type":"string"},"domain_authority":{"description":"Referring domain authority from provider domain_from_rank.","maximum":100,"minimum":0,"type":"integer"},"first_seen":{"format":"date","type":"string"},"flags":{"description":"sitewide is derived from a links_count heuristic.","items":{"enum":["nofollow","ugc","sponsored","image","sitewide"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"BacklinkFlag"},"type":"array","uniqueItems":true},"links_count":{"minimum":0,"type":"integer"},"lost_at":{"description":"Provider lost_date, verbatim.","format":"date","type":["string","null"]},"source_domain":{"type":"string"},"source_url":{"type":"string"},"spam_score":{"minimum":0,"type":"number"},"status":{"description":"Derived from provider is_new and is_lost.","enum":["active","new","lost"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"BacklinkStatus"},"target_url":{"type":"string"}},"required":["source_domain","source_url","anchor","target_url","flags","domain_authority","spam_score","links_count","first_seen","lost_at","status"],"type":"object","x-bisibility-name":"BacklinkRow"},"type":"array"},"summary":{"properties":{"backlinks_total":{"minimum":0,"type":"integer"},"broken_backlinks":{"minimum":0,"type":"integer"},"broken_pages":{"minimum":0,"type":"integer"},"dofollow_pct":{"maximum":100,"minimum":0,"type":"number"},"domain_rank":{"maximum":100,"minimum":0,"type":"integer"},"lost_backlinks":{"description":"Provider-lifetime count.","minimum":0,"type":"integer"},"lost_referring_domains":{"description":"Provider-lifetime count.","minimum":0,"type":"integer"},"new_backlinks":{"description":"Provider-lifetime count.","minimum":0,"type":"integer"},"new_referring_domains":{"description":"Provider-lifetime count.","minimum":0,"type":"integer"},"referring_domains_total":{"minimum":0,"type":"integer"},"referring_pages":{"minimum":0,"type":"integer"},"spam_score":{"minimum":0,"type":"number"}},"required":["backlinks_total","referring_domains_total","domain_rank","spam_score","dofollow_pct","referring_pages","broken_backlinks","broken_pages","new_backlinks","lost_backlinks","new_referring_domains","lost_referring_domains"],"type":"object","x-bisibility-name":"BacklinksSummary"},"target":{"type":"string"},"target_scope":{"enum":["site","page"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"BacklinksTargetScope"},"total_rows_available":{"minimum":0,"type":"integer"}},"required":["target","target_scope","include_subdomains","cached","fetched_at","cached_until","provider","cost_cents","summary","history","rows","fetched_row_count","total_rows_available"],"type":"object"},"BacklinksSnapshotResponse":{"properties":{"data":{"$ref":"#/components/schemas/BacklinksSnapshot"}},"required":["data"],"type":"object"},"DomainOverviewAnalyzeRequest":{"additionalProperties":false,"anyOf":[{"properties":{"estimate_only":{"const":true}},"required":["estimate_only"]},{"properties":{"estimate_only":{"const":false}},"required":["max_cost_cents"]}],"x-bisibility-union":{"style":"constraint"},"properties":{"fresh":{"default":false,"type":"boolean"},"language_code":{"maxLength":12,"minLength":2,"type":"string"},"location_code":{"minimum":1,"type":"integer"},"scope_override":{"enum":["root","subdomain"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"DomainOverviewScopeOverride"},"target":{"maxLength":253,"minLength":1,"type":"string"},"estimate_only":{"default":false,"type":"boolean"},"keyword_limit":{"default":100,"maximum":100,"minimum":1,"type":"integer"},"max_cost_cents":{"description":"Required for paid analysis; estimate_only may omit it.","minimum":0,"type":"integer","x-bisibility-money":"usd_cents"},"page_limit":{"default":100,"maximum":1000,"minimum":1,"type":"integer"}},"required":["target","location_code","language_code"],"type":"object"},"DomainOverviewAnalyzeResponse":{"properties":{"data":{"oneOf":[{"$ref":"#/components/schemas/DomainOverviewEstimate"},{"$ref":"#/components/schemas/DomainOverviewReport"}],"x-bisibility-union":{"cases":["estimate","report"],"style":"tagged","tag":"estimate"},"x-bisibility-name":"DomainOverviewAnalyzeResult"}},"required":["data"],"type":"object"},"DomainOverviewEstimate":{"properties":{"cached":{"type":"boolean"},"estimate":{"const":true,"type":"boolean"},"estimated_cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"fresh_estimated_cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"history_estimated_cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"history_mode":{"const":"lazy","type":"string"},"keyword_limit":{"description":"Requested page size, echoed from the analyze request.","minimum":1,"type":"integer"},"keyword_page_estimated_cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"language_code":{"type":"string"},"location_code":{"type":"integer"},"page_limit":{"description":"Requested page size, echoed from the analyze request.","minimum":1,"type":"integer"},"page_page_estimated_cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"provider":{"type":"string"},"scope":{"enum":["root","subdomain"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"DomainOverviewScope"},"target":{"type":"string"}},"required":["cached","estimate","estimated_cost_cents","fresh_estimated_cost_cents","history_estimated_cost_cents","history_mode","keyword_page_estimated_cost_cents","page_page_estimated_cost_cents","provider","target","scope","location_code","language_code"],"type":"object"},"DomainOverviewHistoryRequest":{"additionalProperties":false,"properties":{"fresh":{"default":false,"type":"boolean"},"language_code":{"maxLength":12,"minLength":2,"type":"string"},"location_code":{"minimum":1,"type":"integer"},"scope_override":{"enum":["root","subdomain"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"DomainOverviewScopeOverride"},"target":{"maxLength":253,"minLength":1,"type":"string"},"max_cost_cents":{"minimum":0,"type":"integer","x-bisibility-money":"usd_cents"}},"required":["target","location_code","language_code","max_cost_cents"],"type":"object"},"DomainOverviewHistoryResponse":{"properties":{"data":{"x-bisibility-name":"DomainOverviewHistoryModule","properties":{"cached":{"type":"boolean"},"cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"data":{"items":{"$ref":"#/components/schemas/DomainOverviewHistoricalRow"},"type":"array"},"fetched_at":{"format":"date-time","type":["string","null"]}},"required":["cached","cost_cents","data","fetched_at"],"type":"object"}},"required":["data"],"type":"object"},"DomainOverviewHistoricalRow":{"properties":{"metrics":{"$ref":"#/components/schemas/DomainOverviewMetrics"},"month":{"maximum":12,"minimum":1,"type":"integer"},"year":{"type":"integer"}},"required":["year","month","metrics"],"type":"object"},"DomainOverviewKeywordsData":{"properties":{"cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"rows":{"items":{"properties":{"cpc_cents":{"type":["number","null"],"x-bisibility-money":"usd_cents"},"difficulty":{"type":["number","null"]},"estimated_traffic":{"type":["number","null"]},"intent":{"enum":["informational","navigational","commercial","transactional",null],"type":["string","null"],"x-bisibility-enum":"open","x-bisibility-name":"DomainOverviewKeywordIntent"},"keyword":{"type":"string"},"position":{"type":["number","null"]},"rank_absolute":{"type":["number","null"]},"rank_absolute_delta":{"type":["number","null"]},"ranking_url":{"type":["string","null"]},"search_volume":{"type":["number","null"]},"serp_features":{"items":{"type":"string"},"type":"array"}},"required":["keyword","position","search_volume","estimated_traffic","cpc_cents","difficulty","intent","ranking_url","serp_features","rank_absolute_delta","rank_absolute"],"type":"object","x-bisibility-name":"DomainOverviewKeywordRow"},"type":"array"},"total_count":{"type":["integer","null"]}},"required":["rows","total_count","cost_cents"],"type":"object"},"DomainOverviewKeywordsResponse":{"properties":{"data":{"properties":{"cached":{"type":"boolean"},"cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"data":{"$ref":"#/components/schemas/DomainOverviewKeywordsData"},"fetched_at":{"format":"date-time","type":["string","null"]}},"required":["cached","cost_cents","data","fetched_at"],"type":"object","x-bisibility-name":"DomainOverviewKeywordsPageModule"}},"required":["data"],"type":"object"},"DomainOverviewMetrics":{"properties":{"count":{"type":["integer","null"]},"estimated_traffic_cost_cents":{"type":["number","null"],"x-bisibility-money":"usd_cents"},"etv":{"type":["number","null"]},"is_down":{"minimum":0,"type":"integer"},"is_lost":{"minimum":0,"type":"integer"},"is_new":{"minimum":0,"type":"integer"},"is_up":{"minimum":0,"type":"integer"},"pos1":{"minimum":0,"type":"integer"},"pos2_3":{"minimum":0,"type":"integer"},"pos4_10":{"minimum":0,"type":"integer"},"pos11_20":{"minimum":0,"type":"integer"},"pos21_30":{"minimum":0,"type":"integer"},"pos31_40":{"minimum":0,"type":"integer"},"pos41_50":{"minimum":0,"type":"integer"},"pos51_60":{"minimum":0,"type":"integer"},"pos61_70":{"minimum":0,"type":"integer"},"pos71_80":{"minimum":0,"type":"integer"},"pos81_90":{"minimum":0,"type":"integer"},"pos91_100":{"minimum":0,"type":"integer"}},"required":["count","estimated_traffic_cost_cents","etv","is_down","is_lost","is_new","is_up","pos1","pos2_3","pos4_10","pos11_20","pos21_30","pos31_40","pos41_50","pos51_60","pos61_70","pos71_80","pos81_90","pos91_100"],"type":"object"},"DomainOverviewKeywordsRequest":{"additionalProperties":false,"properties":{"fresh":{"default":false,"type":"boolean"},"language_code":{"maxLength":12,"minLength":2,"type":"string"},"location_code":{"minimum":1,"type":"integer"},"scope_override":{"enum":["root","subdomain"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"DomainOverviewScopeOverride"},"target":{"maxLength":253,"minLength":1,"type":"string"},"limit":{"maximum":100,"minimum":1,"type":"integer"},"max_cost_cents":{"minimum":0,"type":"integer","x-bisibility-money":"usd_cents"},"offset":{"minimum":0,"type":"integer"}},"required":["target","location_code","language_code","limit","offset","max_cost_cents"],"type":"object"},"DomainOverviewPagesRequest":{"additionalProperties":false,"properties":{"fresh":{"default":false,"type":"boolean"},"language_code":{"maxLength":12,"minLength":2,"type":"string"},"location_code":{"minimum":1,"type":"integer"},"scope_override":{"enum":["root","subdomain"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"DomainOverviewScopeOverride"},"target":{"maxLength":253,"minLength":1,"type":"string"},"limit":{"maximum":1000,"minimum":1,"type":"integer"},"max_cost_cents":{"minimum":0,"type":"integer","x-bisibility-money":"usd_cents"},"offset":{"minimum":0,"type":"integer"}},"required":["target","location_code","language_code","limit","offset","max_cost_cents"],"type":"object"},"DomainOverviewPagesData":{"properties":{"cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"rows":{"items":{"properties":{"etv":{"type":["number","null"]},"etv_delta_pct":{"type":["number","null"]},"keyword_count":{"type":["integer","null"]},"path":{"type":"string"},"top_keyword":{"type":["string","null"]},"top_keyword_position":{"type":["number","null"]}},"required":["path","etv","etv_delta_pct","keyword_count","top_keyword","top_keyword_position"],"type":"object","x-bisibility-name":"DomainOverviewPageRow"},"type":"array"},"total_count":{"minimum":0,"type":"integer"}},"required":["rows","total_count","cost_cents"],"type":"object"},"DomainOverviewPagesResponse":{"properties":{"data":{"properties":{"cached":{"type":"boolean"},"cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"data":{"$ref":"#/components/schemas/DomainOverviewPagesData"},"fetched_at":{"format":"date-time","type":["string","null"]}},"required":["cached","cost_cents","data","fetched_at"],"type":"object","x-bisibility-name":"DomainOverviewPagesPageModule"}},"required":["data"],"type":"object"},"DomainOverviewModuleFailure":{"properties":{"cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"ok":{"const":false,"type":"boolean"},"reason":{"enum":["budget_exhausted","cost_limit_exceeded","in_progress","lookup_failed","needs_reauth","no_source","rate_limited","snapshot_expired","unsupported_location"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"DomainOverviewFailureReason"},"reset_at":{"type":"number"}},"required":["ok","reason","cost_cents"],"type":"object"},"DomainOverviewProblem":{"allOf":[{"$ref":"#/components/schemas/Problem"},{"properties":{"errors":{"properties":{"cost_cents":{"minimum":0,"type":"number"},"reason":{"type":"string"},"reset_at":{"type":["number","null"]}},"required":["reason","cost_cents"],"type":"object"}},"required":["errors"],"type":"object"}]},"DomainOverviewReport":{"properties":{"cached":{"type":"boolean"},"cached_until":{"format":"date-time","type":"string"},"cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"fetched_at":{"format":"date-time","type":"string"},"history_mode":{"const":"lazy","type":"string"},"keyword_limit":{"description":"Requested page size, echoed from the analyze request.","minimum":1,"type":"integer"},"keywords":{"oneOf":[{"properties":{"cached":{"type":"boolean"},"cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"data":{"$ref":"#/components/schemas/DomainOverviewKeywordsData"},"fetched_at":{"format":"date-time","type":["string","null"]},"ok":{"const":true,"type":"boolean"}},"required":["ok","cached","cost_cents","data","fetched_at"],"type":"object","x-bisibility-name":"DomainOverviewKeywordsModuleSuccess"},{"$ref":"#/components/schemas/DomainOverviewModuleFailure"}],"x-bisibility-union":{"cases":["success","failure"],"style":"tagged","tag":"ok"},"x-bisibility-name":"DomainOverviewKeywordsModule"},"language_code":{"type":"string"},"location_code":{"type":"integer"},"overview":{"oneOf":[{"$ref":"#/components/schemas/DomainOverviewMetrics"},{"type":"null"}]},"page_limit":{"description":"Requested page size, echoed from the analyze request.","minimum":1,"type":"integer"},"pages":{"oneOf":[{"properties":{"cached":{"type":"boolean"},"cost_cents":{"minimum":0,"type":"number","x-bisibility-money":"usd_cents"},"data":{"$ref":"#/components/schemas/DomainOverviewPagesData"},"fetched_at":{"format":"date-time","type":["string","null"]},"ok":{"const":true,"type":"boolean"}},"required":["ok","cached","cost_cents","data","fetched_at"],"type":"object","x-bisibility-name":"DomainOverviewPagesModuleSuccess"},{"$ref":"#/components/schemas/DomainOverviewModuleFailure"}],"x-bisibility-union":{"cases":["success","failure"],"style":"tagged","tag":"ok"},"x-bisibility-name":"DomainOverviewPagesModule"},"previous_fetched_at":{"format":"date-time","type":["string","null"]},"previous_overview":{"oneOf":[{"$ref":"#/components/schemas/DomainOverviewMetrics"},{"type":"null"}]},"previous_source_snapshot_at":{"format":"date-time","type":["string","null"]},"provider":{"type":"string"},"scope":{"enum":["root","subdomain"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"DomainOverviewScope"},"source_snapshot_at":{"format":"date-time","type":["string","null"]},"state":{"enum":["no_data","ok","partial"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"DomainOverviewReportState"},"target":{"type":"string"}},"required":["cached","cached_until","cost_cents","fetched_at","history_mode","keywords","language_code","location_code","overview","pages","previous_fetched_at","previous_overview","previous_source_snapshot_at","provider","scope","source_snapshot_at","state","target"],"type":"object"},"StoredBacklinksReport":{"allOf":[{"$ref":"#/components/schemas/BacklinksSnapshot"},{"properties":{"fresh_until":{"format":"date-time","type":"string","description":"fresh_until is authoritative: a report is fresh while now is before fresh_until, and the window is 30 days counted from the earliest successful source fetch, which can be earlier than saved_at."},"saved_at":{"format":"date-time","type":"string"},"stale":{"type":"boolean"},"state":{"description":"fresh_until is authoritative: a report is fresh while now is before fresh_until, and the window is 30 days counted from the earliest successful source fetch, which can be earlier than saved_at.","enum":["fresh","stale"],"type":"string"}},"required":["saved_at","fresh_until","stale","state"],"type":"object"}]},"StoredDomainOverviewReport":{"properties":{"cached":{"type":"boolean"},"cost_cents":{"minimum":0,"type":"number"},"country_code":{"type":["string","null"]},"data_state":{"description":"the stored report outcome, the same value GET /projects/{project_id}/domain-overview returns as state","enum":["no_data","ok","partial"],"type":"string"},"fetched_at":{"format":"date-time","type":"string"},"fresh_until":{"format":"date-time","type":"string","description":"fresh_until is authoritative: a report is fresh while now is before fresh_until, and the window is 30 days counted from the earliest successful source fetch, which can be earlier than saved_at."},"history":{"anyOf":[{"items":{"$ref":"#/components/schemas/DomainOverviewHistoricalRow"},"type":"array"},{"type":"null"}]},"keywords":{"anyOf":[{"$ref":"#/components/schemas/DomainOverviewKeywordsData"},{"type":"null"}]},"language_code":{"type":"string"},"location_code":{"type":"integer"},"overview":{"anyOf":[{"$ref":"#/components/schemas/DomainOverviewMetrics"},{"type":"null"}]},"pages":{"anyOf":[{"$ref":"#/components/schemas/DomainOverviewPagesData"},{"type":"null"}]},"partial":{"type":"boolean"},"previous_fetched_at":{"format":"date-time","type":["string","null"]},"previous_overview":{"anyOf":[{"$ref":"#/components/schemas/DomainOverviewMetrics"},{"type":"null"}]},"previous_source_snapshot_at":{"format":"date-time","type":["string","null"]},"provider":{"type":"string"},"saved_at":{"format":"date-time","type":"string"},"scope":{"enum":["root","subdomain"],"type":"string"},"source_snapshot_at":{"format":"date-time","type":["string","null"]},"stale":{"type":"boolean"},"state":{"description":"fresh_until is authoritative: a report is fresh while now is before fresh_until, and the window is 30 days counted from the earliest successful source fetch, which can be earlier than saved_at. This is report freshness, not the data outcome; data_state carries the no_data/ok/partial value that GET /projects/{project_id}/domain-overview returns as state.","enum":["fresh","stale"],"type":"string"},"target":{"type":"string"}},"required":["cached","cost_cents","country_code","data_state","fetched_at","fresh_until","history","keywords","language_code","location_code","overview","pages","partial","previous_fetched_at","previous_overview","previous_source_snapshot_at","provider","saved_at","scope","source_snapshot_at","stale","state","target"],"type":"object"},"StoredKeywordResearchReport":{"properties":{"cached":{"type":"boolean"},"cost_cents":{"minimum":0,"type":"number"},"country_code":{"type":"string"},"fetched_at":{"format":"date-time","type":"string"},"fresh_until":{"format":"date-time","type":"string","description":"fresh_until is authoritative: a report is fresh while now is before fresh_until, and the window is 30 days counted from the earliest successful source fetch, which can be earlier than saved_at."},"include_clickstream":{"type":"boolean"},"language_code":{"type":"string"},"mode":{"type":"string"},"partial":{"type":"boolean"},"provider":{"type":"string"},"request_key":{"type":"string"},"result_limit":{"minimum":1,"type":"integer"},"rows":{"items":{"properties":{"already_saved":{"type":"boolean"},"already_tracked":{"type":"boolean"},"keyword":{"type":"string"},"source":{"enum":["related","suggestion","idea"],"type":"string"},"competition":{"maximum":1,"minimum":0,"type":["number","null"]},"cpc_cents":{"minimum":0,"type":["integer","null"]},"difficulty":{"maximum":100,"minimum":0,"type":["integer","null"]},"intent":{"enum":["informational","commercial","transactional","navigational","unknown",null],"type":"string"},"monthly_trend":{"items":{"properties":{"month":{"maximum":12,"minimum":1,"type":"integer"},"search_volume":{"type":["number","null"]},"year":{"type":"integer"}},"required":["year","month","search_volume"],"type":"object"},"maxItems":12,"type":"array"},"search_volume":{"minimum":0,"type":["number","null"]}},"required":["keyword","source","already_saved","already_tracked","competition","cpc_cents","difficulty","intent","monthly_trend","search_volume"],"type":"object"},"type":"array"},"saved_at":{"format":"date-time","type":"string"},"seed":{"type":"string"},"sources":{"items":{"properties":{"cached":{"type":"boolean"},"cost_cents":{"minimum":0,"type":"number"},"reason":{"enum":["budget_exhausted","cost_limit","in_progress","needs_reauth","no_source","previous_source_failed","provider_error","rate_limited","result_limit","unsupported_location"],"type":"string"},"returned":{"minimum":0,"type":"integer"},"source":{"enum":["related","suggestion","idea"],"type":"string"},"status":{"enum":["ok","failed","skipped"],"type":"string"}},"required":["cached","cost_cents","returned","source","status"],"type":"object"},"type":"array"},"stale":{"type":"boolean"},"state":{"description":"fresh_until is authoritative: a report is fresh while now is before fresh_until, and the window is 30 days counted from the earliest successful source fetch, which can be earlier than saved_at.","enum":["fresh","stale"],"type":"string"}},"required":["cached","cost_cents","country_code","fetched_at","fresh_until","include_clickstream","language_code","mode","partial","provider","request_key","result_limit","rows","saved_at","seed","sources","stale","state"],"type":"object"},"StoredResearchReportSummary":{"properties":{"country_code":{"type":"string"},"fresh_until":{"format":"date-time","type":"string","description":"fresh_until is authoritative: a report is fresh while now is before fresh_until, and the window is 30 days counted from the earliest successful source fetch, which can be earlier than saved_at."},"include_clickstream":{"type":"boolean"},"include_subdomains":{"type":"boolean"},"kind":{"enum":["backlinks","domain_overview","keyword_research"],"type":"string"},"language_code":{"type":"string"},"location_code":{"type":"integer"},"mode":{"type":"string"},"result_limit":{"type":"integer"},"saved_at":{"format":"date-time","type":"string"},"seed":{"type":"string"},"state":{"description":"fresh_until is authoritative: a report is fresh while now is before fresh_until, and the window is 30 days counted from the earliest successful source fetch, which can be earlier than saved_at.","enum":["fresh","stale"],"type":"string"},"target":{"type":"string"},"target_scope":{"description":"site or page for backlinks, root or subdomain for domain overviews.","type":"string"}},"required":["kind","saved_at","fresh_until","state"],"type":"object"},"StoredResearchReportsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/StoredResearchReportSummary"},"type":"array"},"meta":{"properties":{"freshness_days":{"description":"fresh_until is authoritative: a report is fresh while now is before fresh_until, and the window is 30 days counted from the earliest successful source fetch, which can be earlier than saved_at.","type":"integer"}},"required":["freshness_days"],"type":"object"}},"required":["data","meta"],"type":"object"},"StoredResearchReportResponse":{"properties":{"data":{"oneOf":[{"$ref":"#/components/schemas/StoredBacklinksReport"},{"$ref":"#/components/schemas/StoredDomainOverviewReport"},{"$ref":"#/components/schemas/StoredKeywordResearchReport"}]}},"required":["data"],"type":"object"},"LocalMonitorRunResult":{"type":"object","properties":{"data":{"type":"object","properties":{"version":{"type":"integer","const":1},"project_id":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"monitor_id":{"example":"lmn_a00000000000000000000000","pattern":"^lmn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmn"},"run_id":{"example":"lmr_a00000000000000000000000","pattern":"^lmr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmr"},"as_of":{"type":"string","format":"date-time"},"definition_revision_id":{"type":"string"},"identity_revision_id":{"type":"string"},"subject":{"type":"string"},"protocol":{"type":"object","properties":{"geometry":{"type":"string"},"matcher":{"type":"string"},"normalizer_versions":{"type":"array","items":{"type":"string"},"maxItems":100},"metric_definition":{"type":"string"}},"required":["geometry","matcher","normalizer_versions","metric_definition"]},"financial_basis":{"type":"string","const":"current_accounting_state"},"freshness_policy":{"anyOf":[{"type":"object","properties":{"basis":{"anyOf":[{"type":"string","enum":["manual_ttl","captured_calendar"]},{"type":"null"}]},"fresh_for_ms":{"anyOf":[{"type":"number"},{"type":"null"}]},"freshness_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"policy_epoch":{"anyOf":[{"type":"string"},{"type":"null"}]},"configuration_revision":{"anyOf":[{"type":"string"},{"type":"null"}]},"semantics":{"type":"string","const":"current_project_policy_with_original_intent"}},"required":["basis","fresh_for_ms","freshness_reason","policy_epoch","configuration_revision","semantics"]},{"type":"null"}]},"points":{"type":"array","items":{"type":"object","properties":{"id":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"},"keyword_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"keyword":{"type":"string"},"ordinal":{"type":"integer","minimum":0},"row":{"type":"integer","minimum":0},"column":{"type":"integer","minimum":0},"latitude":{"type":"string","pattern":"^-?[0-9]{1,3}\\.[0-9]{7}$"},"longitude":{"type":"string","pattern":"^-?[0-9]{1,3}\\.[0-9]{7}$"},"surface":{"type":"string"},"cutoff":{"type":"integer","minimum":0},"zoom":{"anyOf":[{"type":"number"},{"type":"null"}]},"language":{"type":"string"},"device":{"type":"string"},"operating_system":{"anyOf":[{"type":"string"},{"type":"null"}]},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"recorded_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"observed_position":{"anyOf":[{"type":"number"},{"type":"null"}]},"evidence":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"freshness":{"type":"string"},"freshness_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"identity_match":{"type":"string"},"scope_class":{"type":"string"},"receipt":{"type":"object","properties":{"target_id":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"},"status":{"type":"string"},"version":{"type":"integer","minimum":0},"acceptance":{"anyOf":[{"type":"string"},{"type":"null"}]},"known_accepted_task_count":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"collected":{"type":"boolean"},"cancellation_requested":{"type":"boolean"},"financial_state":{"anyOf":[{"type":"string"},{"type":"null"}]},"owner_retained":{"type":"boolean"},"resolution":{"type":"string"},"accounting_pending":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"reconciliation_reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["target_id","status","version","acceptance","known_accepted_task_count","collected","cancellation_requested","financial_state","owner_retained","resolution","accounting_pending","reconciliation_reason"]}},"required":["id","keyword_id","keyword","ordinal","row","column","latitude","longitude","surface","cutoff","zoom","language","device","operating_system","observed_at","recorded_at","position","observed_position","evidence","reason","freshness","freshness_reason","identity_match","scope_class","receipt"]},"maxItems":100},"grids":{"type":"array","items":{"type":"object","properties":{"keyword_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"keyword":{"type":"string"},"grid_revision_key":{"type":"string"},"identity_revision_id":{"type":"string"},"top_n":{"type":"integer","minimum":0},"size":{"type":"integer","enum":[1,3,5,7]},"point_ids":{"type":"array","items":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"},"maxItems":49},"expected":{"type":"integer","minimum":0},"observed_rate":{"anyOf":[{"type":"number"},{"type":"null"}]},"observed_coverage":{"anyOf":[{"type":"number"},{"type":"null"}]},"data_coverage":{"anyOf":[{"type":"number"},{"type":"null"}]},"sample_bounds":{"anyOf":[{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2},{"type":"null"}]},"counts":{"type":"object","properties":{"expected":{"type":"integer","minimum":0},"measured":{"type":"integer","minimum":0},"metric_eligible":{"type":"integer","minimum":0},"ranked":{"type":"integer","minimum":0},"known_absent":{"type":"integer","minimum":0},"unknown":{"type":"integer","minimum":0},"never_checked":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"stale":{"type":"integer","minimum":0},"unsupported":{"type":"integer","minimum":0},"fresh_determinate":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"unknown_freshness":{"type":"integer","minimum":0},"comparable":{"type":"integer","minimum":0}},"required":["expected","measured","metric_eligible","ranked","known_absent","unknown","never_checked","failed","stale","unsupported","fresh_determinate","unknown_freshness","comparable"]},"freshness":{"type":"string"},"comparison":{"type":"string","const":"unavailable"},"scope":{"type":"string","const":"sampled_points"},"reason":{"type":"string","enum":["matcher_version_mixed"],"description":"Ranking aggregate unavailable across matcher versions; point evidence and coverage remain readable."}},"required":["keyword_id","keyword","grid_revision_key","identity_revision_id","top_n","size","point_ids","expected","observed_rate","observed_coverage","data_coverage","sample_bounds","counts","freshness","comparison","scope"]},"maxItems":100},"created_at":{"type":"string","format":"date-time"},"definition_revision":{"type":"integer","minimum":0},"receipt":{"type":"object","properties":{"id":{"example":"lmr_a00000000000000000000000","pattern":"^lmr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmr"},"version":{"type":"integer","minimum":0},"cancellation_requested":{"type":"boolean"},"expected_count":{"type":"integer","minimum":0},"items":{"type":"array","items":{"type":"object","properties":{"target_id":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"},"status":{"type":"string"},"version":{"type":"integer","minimum":0},"acceptance":{"anyOf":[{"type":"string"},{"type":"null"}]},"known_accepted_task_count":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"collected":{"type":"boolean"},"cancellation_requested":{"type":"boolean"},"financial_state":{"anyOf":[{"type":"string"},{"type":"null"}]},"owner_retained":{"type":"boolean"},"resolution":{"type":"string"},"accounting_pending":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"reconciliation_reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["target_id","status","version","acceptance","known_accepted_task_count","collected","cancellation_requested","financial_state","owner_retained","resolution","accounting_pending","reconciliation_reason"]},"maxItems":100},"counts":{"type":"object","properties":{"items":{"type":"integer","minimum":0},"complete":{"type":"integer","minimum":0},"acceptance_unresolved":{"type":"integer","minimum":0},"accounting_pending":{"type":"integer","minimum":0},"unavailable":{"type":"integer","minimum":0},"retained_owners":{"type":"integer","minimum":0}},"required":["items","complete","acceptance_unresolved","accounting_pending","unavailable","retained_owners"]}},"required":["id","version","cancellation_requested","expected_count","items","counts"]}},"required":["version","project_id","monitor_id","run_id","as_of","definition_revision_id","identity_revision_id","subject","protocol","financial_basis","freshness_policy","points","grids","created_at","definition_revision","receipt"]}},"required":["data"]},"LocalMonitorRunHistory":{"type":"object","properties":{"data":{"type":"object","properties":{"version":{"type":"integer","const":1},"project_id":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"monitor_id":{"example":"lmn_a00000000000000000000000","pattern":"^lmn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmn"},"as_of":{"type":"string","format":"date-time"},"window":{"anyOf":[{"type":"object","properties":{"from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"to":{"type":"string","format":"date-time"},"time_basis":{"type":"string","const":"occurrence_created_at"}},"required":["from","to","time_basis"]},{"type":"null"}]},"eligible_total":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"next_cursor":{"anyOf":[{"type":"string","minLength":1,"maxLength":8000},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"run_id":{"example":"lmr_a00000000000000000000000","pattern":"^lmr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmr"},"created_at":{"type":"string","format":"date-time"},"definition_revision":{"type":"integer","minimum":0},"mode":{"type":"string"}},"required":["run_id","created_at","definition_revision","mode"]},"maxItems":20}},"required":["version","project_id","monitor_id","as_of","window","eligible_total","next_cursor","items"]}},"required":["data"]},"LocalMonitorPointHistory":{"type":"object","properties":{"data":{"type":"object","properties":{"version":{"type":"integer","const":1},"as_of":{"type":"string","format":"date-time"},"target_id":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"},"scope":{"type":"string","const":"exact_captured_target"},"limit":{"type":"integer","const":20},"has_more":{"type":"boolean"},"window":{"anyOf":[{"type":"object","properties":{"from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"to":{"type":"string","format":"date-time"},"time_basis":{"type":"string","const":"occurrence_created_at"}},"required":["from","to","time_basis"]},{"type":"null"}]},"eligible_total":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"next_cursor":{"anyOf":[{"type":"string","minLength":1,"maxLength":8000},{"type":"null"}]},"policy_epoch":{"anyOf":[{"type":"string"},{"type":"null"}]},"freshness_configuration_revision":{"anyOf":[{"type":"string"},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"run_id":{"example":"lmr_a00000000000000000000000","pattern":"^lmr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmr"},"created_at":{"type":"string","format":"date-time"},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"evidence":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"freshness":{"anyOf":[{"type":"string"},{"type":"null"}]},"freshness_reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","run_id","created_at","observed_at","position","evidence","reason","freshness","freshness_reason"]},"maxItems":20}},"required":["version","as_of","target_id","scope","limit","has_more","window","eligible_total","next_cursor","policy_epoch","freshness_configuration_revision","items"]}},"required":["data"]},"LocalMonitorPointListings":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"rank_group":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"rank_absolute":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"promotion":{"type":"string"},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"matched":{"type":"string"},"cid":{"anyOf":[{"type":"string"},{"type":"null"}]},"place_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"source_page":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"source_block_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"source_ordinal":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"rank_scale":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","rank_group","rank_absolute","promotion","observed_at","matched","cid","place_id","source_page","source_block_id","source_ordinal","rank_scale"]},"maxItems":700}},"required":["data"]},"LocalMonitorPointReport":{"type":"object","properties":{"version":{"type":"integer","const":1},"projectId":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"monitorId":{"example":"lmn_a00000000000000000000000","pattern":"^lmn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmn"},"runId":{"example":"lmr_a00000000000000000000000","pattern":"^lmr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmr"},"asOf":{"type":"string","format":"date-time"},"definitionRevisionId":{"type":"string"},"identityRevisionId":{"type":"string"},"subject":{"type":"string"},"protocol":{"type":"object","properties":{"geometry":{"type":"string"},"matcher":{"type":"string"},"normalizerVersions":{"type":"array","items":{"type":"string"},"maxItems":100},"metricDefinition":{"type":"string"}},"required":["geometry","matcher","normalizerVersions","metricDefinition"]},"financialBasis":{"type":"string","const":"current_accounting_state"},"freshnessPolicy":{"anyOf":[{"type":"object","properties":{"basis":{"anyOf":[{"type":"string","enum":["manual_ttl","captured_calendar"]},{"type":"null"}]},"freshForMs":{"anyOf":[{"type":"number"},{"type":"null"}]},"freshnessReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"policyEpoch":{"anyOf":[{"type":"string"},{"type":"null"}]},"configurationRevision":{"anyOf":[{"type":"string"},{"type":"null"}]},"semantics":{"type":"string","const":"current_project_policy_with_original_intent"}},"required":["basis","freshForMs","freshnessReason","policyEpoch","configurationRevision","semantics"]},{"type":"null"}]},"points":{"type":"array","items":{"type":"object","properties":{"id":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"},"keywordId":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"keyword":{"type":"string"},"ordinal":{"type":"integer","minimum":0},"row":{"type":"integer","minimum":0},"column":{"type":"integer","minimum":0},"latitude":{"type":"string","pattern":"^-?[0-9]{1,3}\\.[0-9]{7}$"},"longitude":{"type":"string","pattern":"^-?[0-9]{1,3}\\.[0-9]{7}$"},"surface":{"type":"string"},"cutoff":{"type":"integer","minimum":0},"zoom":{"anyOf":[{"type":"number"},{"type":"null"}]},"language":{"type":"string"},"device":{"type":"string"},"operatingSystem":{"anyOf":[{"type":"string"},{"type":"null"}]},"observedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"recordedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"observedPosition":{"anyOf":[{"type":"number"},{"type":"null"}]},"evidence":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"freshness":{"type":"string"},"freshnessReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"identityMatch":{"type":"string"},"scopeClass":{"type":"string"},"receipt":{"type":"object","properties":{"targetId":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"},"status":{"type":"string"},"version":{"type":"integer","minimum":0},"acceptance":{"anyOf":[{"type":"string"},{"type":"null"}]},"knownAcceptedTaskCount":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"collected":{"type":"boolean"},"cancellationRequested":{"type":"boolean"},"financialState":{"anyOf":[{"type":"string"},{"type":"null"}]},"ownerRetained":{"type":"boolean"},"resolution":{"type":"string"},"accountingPending":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"reconciliationReason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["targetId","status","version","acceptance","knownAcceptedTaskCount","collected","cancellationRequested","financialState","ownerRetained","resolution","accountingPending","reconciliationReason"]}},"required":["id","keywordId","keyword","ordinal","row","column","latitude","longitude","surface","cutoff","zoom","language","device","operatingSystem","observedAt","recordedAt","position","observedPosition","evidence","reason","freshness","freshnessReason","identityMatch","scopeClass","receipt"]},"maxItems":100},"grids":{"type":"array","items":{"type":"object","properties":{"keywordId":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"keyword":{"type":"string"},"gridRevisionKey":{"type":"string"},"identityRevisionId":{"type":"string"},"topN":{"type":"integer","minimum":0},"size":{"type":"integer","enum":[1,3,5,7]},"pointIds":{"type":"array","items":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"},"maxItems":49},"expected":{"type":"integer","minimum":0},"observedRate":{"anyOf":[{"type":"number"},{"type":"null"}]},"observedCoverage":{"anyOf":[{"type":"number"},{"type":"null"}]},"dataCoverage":{"anyOf":[{"type":"number"},{"type":"null"}]},"sampleBounds":{"anyOf":[{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2},{"type":"null"}]},"counts":{"type":"object","properties":{"expected":{"type":"integer","minimum":0},"measured":{"type":"integer","minimum":0},"metricEligible":{"type":"integer","minimum":0},"ranked":{"type":"integer","minimum":0},"knownAbsent":{"type":"integer","minimum":0},"unknown":{"type":"integer","minimum":0},"neverChecked":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"stale":{"type":"integer","minimum":0},"unsupported":{"type":"integer","minimum":0},"freshDeterminate":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"unknownFreshness":{"type":"integer","minimum":0},"comparable":{"type":"integer","minimum":0}},"required":["expected","measured","metricEligible","ranked","knownAbsent","unknown","neverChecked","failed","stale","unsupported","freshDeterminate","unknownFreshness","comparable"]},"freshness":{"type":"string"},"comparison":{"type":"string","const":"unavailable"},"scope":{"type":"string","const":"sampled_points"},"reason":{"type":"string","enum":["matcher_version_mixed"],"description":"Ranking aggregate unavailable across matcher versions; point evidence and coverage remain readable."}},"required":["keywordId","keyword","gridRevisionKey","identityRevisionId","topN","size","pointIds","expected","observedRate","observedCoverage","dataCoverage","sampleBounds","counts","freshness","comparison","scope"]},"maxItems":100},"report":{"type":"string","const":"local-point-report-v1"},"scope":{"type":"string","const":"sampled_points"},"coordinateProof":{"type":"string","const":"acknowledged_query_seed_or_unknown"},"comparison":{"type":"string","const":"unavailable"}},"required":["version","projectId","monitorId","runId","asOf","definitionRevisionId","identityRevisionId","subject","protocol","financialBasis","freshnessPolicy","points","grids","report","scope","coordinateProof","comparison"]},"createAiTrackingSchedule___schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"$ref":"#/components/schemas/createAiTrackingSchedule___schema0"}},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/createAiTrackingSchedule___schema0"}}]},"updateAiTrackingSchedule___schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"$ref":"#/components/schemas/updateAiTrackingSchedule___schema0"}},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/updateAiTrackingSchedule___schema0"}}]},"retryAiTrackingRun___schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"$ref":"#/components/schemas/retryAiTrackingRun___schema0"}},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/retryAiTrackingRun___schema0"}}]},"AiTrackingRawEvidence":{"type":["object","string","null"],"additionalProperties":true,"description":"Bounded provider evidence containing arbitrary provider JSON fields and nested values. Usually an object with status_code and result; oversized evidence can be a JSON text preview or an object with truncated and preview. Null when unavailable. Provider keys and values are preserved without case conversion."},"AiTrackingPrompt":{"type":"object","properties":{"id":{"type":"string","pattern":"^aip_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"aip"},"topic_id":{"oneOf":[{"type":"string","pattern":"^ait_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ait"},{"type":"null"}]},"label":{"type":["string","null"]},"archived_at":{"type":["string","null"],"format":"date-time"},"paused_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"revisions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^apr_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"apr"},"category":{"type":"string","enum":["neutral","comparative","branded"],"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingPromptCategory"},"ordinal":{"type":"integer","minimum":1},"text":{"type":"string"},"text_hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"created_at":{"type":"string","format":"date-time"},"generation_reference":{"type":"object","properties":{"generation_id":{"type":"string","pattern":"^asg_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"asg"},"draft_id":{"type":"string","format":"uuid"}},"required":["generation_id","draft_id"],"additionalProperties":false,"x-bisibility-name":"AiTrackingPromptGenerationReference"},"provider_dataset_reference":{"type":"object","properties":{"report_id":{"type":"string","pattern":"^agr_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"agr"},"row_index":{"type":"integer","minimum":0}},"required":["report_id","row_index"],"additionalProperties":false,"x-bisibility-name":"AiTrackingPromptDatasetReference"}},"required":["id","category","ordinal","text","text_hash","created_at"],"additionalProperties":false,"x-bisibility-name":"AiTrackingPromptRevision"}}},"required":["id","topic_id","label","archived_at","paused_at","created_at","updated_at","revisions"],"additionalProperties":false},"AiTrackingPromptPage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AiTrackingPrompt"}},"meta":{"type":"object","properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"additionalProperties":false,"x-bisibility-name":"AiTrackingPageMeta"}},"required":["data","meta"],"additionalProperties":false},"AiTrackingRun":{"type":"object","properties":{"id":{"type":"string","pattern":"^air_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"air"},"state":{"type":"string","enum":["planned","running","completed","partial","blocked","failed","cancelled","skipped"],"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingRunState"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"finished_at":{"type":["string","null"],"format":"date-time"},"planned_at":{"type":["string","null"],"format":"date-time"},"sample_count":{"type":["integer","null"],"minimum":0}},"required":["id","state","created_at","updated_at","finished_at","planned_at","sample_count"],"additionalProperties":false},"AiTrackingRunResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AiTrackingRun"}},"required":["data"],"additionalProperties":false},"AiTrackingRunPreviewResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"configurations":{"type":"array","items":{"type":"object","properties":{"provider":{"const":"dataforseo"},"endpoint":{"type":"string"},"engine":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingEngine","type":"string","enum":["chat_gpt","gemini","claude","perplexity","google"]},"source":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingSource","type":"string","enum":["consumer_scrape","model_api","google_aio"]},"model":{"type":["string","null"]},"parameters":{"type":"object","additionalProperties":true}},"required":["provider","endpoint","engine","source","model","parameters"],"additionalProperties":false,"x-bisibility-name":"AiTrackingConfiguration"}},"credential_connection_id":{"type":"string","pattern":"^conn_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"conn"},"credential_version":{"type":"string"},"budget_revision":{"type":"string"},"consent_revision":{"type":"string"},"estimated_cost_cents":{"x-bisibility-money":"usd_cents","type":"number","minimum":0}},"required":["configurations","credential_connection_id","credential_version","budget_revision","consent_revision","estimated_cost_cents"],"additionalProperties":false,"x-bisibility-name":"AiTrackingRunPreview"}},"required":["data"],"additionalProperties":false},"AiTrackingSamplePage":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^asm_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"asm"},"measurement":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingMeasurement","type":"string","enum":["answer_present","aio_not_present","partial","unavailable","failed","unknown"]},"source":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingSource","type":"string","enum":["consumer_scrape","model_api","google_aio"]},"engine":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingEngine","type":"string","enum":["chat_gpt","gemini","claude","perplexity","google"]},"prompt":{"type":"string"},"prompt_revision_id":{"type":"string","pattern":"^apr_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"apr"},"evidence":{"oneOf":[{"type":"object","properties":{"answer_text":{"type":["string","null"]},"raw":{"$ref":"#/components/schemas/AiTrackingRawEvidence"},"answer_truncated":{"type":"boolean"},"raw_truncated":{"type":"boolean"},"search_results":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"title":{"type":["string","null"]},"position":{"type":"integer","minimum":0}},"required":["url","title","position"],"additionalProperties":false,"x-bisibility-name":"AiTrackingCitation"}},"requested_locale":{"type":["string","null"]},"effective_locale":{"type":["string","null"]},"locale_mechanism":{"type":["string","null"]},"requested_model":{"type":["string","null"]},"actual_model":{"type":["string","null"]},"provider_status":{"type":["string","null"]},"observed_at":{"type":["string","null"],"format":"date-time"},"fetched_at":{"type":"string","format":"date-time"},"recorded_source":{"type":"string","enum":["fresh","cache"],"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingRecordedSource","description":"Cached evidence keeps its original observation time and cannot become a fresh tracker sample."}},"required":["answer_text","raw","answer_truncated","raw_truncated","search_results","requested_locale","effective_locale","locale_mechanism","requested_model","actual_model","provider_status","observed_at","fetched_at","recorded_source"],"additionalProperties":false},{"type":"null"}],"x-bisibility-name":"AiTrackingEvidence"},"citations":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"title":{"type":["string","null"]},"position":{"type":"integer","minimum":0}},"required":["url","title","position"],"additionalProperties":false,"x-bisibility-name":"AiTrackingCitation"}},"cost_usd":{"x-bisibility-money":"usd_decimal","type":["string","null"],"pattern":"^\\d+(?:\\.\\d+)?$","description":"Decimal USD string from the provider cost receipt, or null when unknown. Never an invented zero."},"cost_state":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingCostState","type":"string","enum":["unknown","pending","confirmed","refund_pending","derived"]}},"required":["id","measurement","source","engine","prompt","prompt_revision_id","evidence","citations","cost_usd","cost_state"],"additionalProperties":false,"x-bisibility-name":"AiTrackingSample"}},"meta":{"type":"object","properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"additionalProperties":false,"x-bisibility-name":"AiTrackingPageMeta"}},"required":["data","meta"],"additionalProperties":false},"AiTrackingRunPage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AiTrackingRun"}},"meta":{"type":"object","properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"additionalProperties":false,"x-bisibility-name":"AiTrackingPageMeta"}},"required":["data","meta"],"additionalProperties":false},"AiTrackingTrends":{"type":"object","properties":{"current_run_id":{"type":"string","pattern":"^air_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"air"},"previous_run_id":{"type":"string","pattern":"^air_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"air"},"current":{"type":"object","properties":{"expected":{"type":"integer","minimum":0},"observed":{"type":"integer","minimum":0},"eligible":{"type":"integer","minimum":0},"mentioned":{"type":"integer","minimum":0},"absent_aio":{"type":"integer","minimum":0},"partial":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"unknown":{"type":"integer","minimum":0},"missing":{"type":"integer","minimum":0},"coverage":{"type":"number","minimum":0,"maximum":1},"mention_rate":{"type":["number","null"],"minimum":0,"maximum":1}},"required":["expected","observed","eligible","mentioned","absent_aio","partial","failed","unknown","missing","coverage","mention_rate"],"additionalProperties":false,"x-bisibility-name":"AiTrackingTrendCounts"},"previous":{"type":"object","properties":{"expected":{"type":"integer","minimum":0},"observed":{"type":"integer","minimum":0},"eligible":{"type":"integer","minimum":0},"mentioned":{"type":"integer","minimum":0},"absent_aio":{"type":"integer","minimum":0},"partial":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"unknown":{"type":"integer","minimum":0},"missing":{"type":"integer","minimum":0},"coverage":{"type":"number","minimum":0,"maximum":1},"mention_rate":{"type":["number","null"],"minimum":0,"maximum":1}},"required":["expected","observed","eligible","mentioned","absent_aio","partial","failed","unknown","missing","coverage","mention_rate"],"additionalProperties":false,"x-bisibility-name":"AiTrackingTrendCounts"},"comparable":{"type":"boolean"},"reason":{"type":["string","null"]},"delta":{"type":["number","null"]},"baseline":{"const":"neutral"},"category":{"const":"neutral"},"strata":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string","enum":["neutral","comparative","branded","unknown"],"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingTrendCategory"},"current":{"type":"object","properties":{"expected":{"type":"integer","minimum":0},"observed":{"type":"integer","minimum":0},"eligible":{"type":"integer","minimum":0},"mentioned":{"type":"integer","minimum":0},"absent_aio":{"type":"integer","minimum":0},"partial":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"unknown":{"type":"integer","minimum":0},"missing":{"type":"integer","minimum":0},"coverage":{"type":"number","minimum":0,"maximum":1},"mention_rate":{"type":["number","null"],"minimum":0,"maximum":1}},"required":["expected","observed","eligible","mentioned","absent_aio","partial","failed","unknown","missing","coverage","mention_rate"],"additionalProperties":false,"x-bisibility-name":"AiTrackingTrendCounts"},"previous":{"type":"object","properties":{"expected":{"type":"integer","minimum":0},"observed":{"type":"integer","minimum":0},"eligible":{"type":"integer","minimum":0},"mentioned":{"type":"integer","minimum":0},"absent_aio":{"type":"integer","minimum":0},"partial":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"unknown":{"type":"integer","minimum":0},"missing":{"type":"integer","minimum":0},"coverage":{"type":"number","minimum":0,"maximum":1},"mention_rate":{"type":["number","null"],"minimum":0,"maximum":1}},"required":["expected","observed","eligible","mentioned","absent_aio","partial","failed","unknown","missing","coverage","mention_rate"],"additionalProperties":false,"x-bisibility-name":"AiTrackingTrendCounts"},"comparable":{"type":"boolean"},"reason":{"type":["string","null"]},"delta":{"type":["number","null"]}},"required":["category","current","previous","comparable","reason","delta"],"additionalProperties":false,"x-bisibility-name":"AiTrackingTrendStratum"}},"next_cursor":{"type":["string","null"]},"previous_next_cursor":{"type":["string","null"]}},"required":["current_run_id","baseline","current","comparable","reason","delta","next_cursor"],"additionalProperties":false},"AiTrackingTrendsResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AiTrackingTrends"}},"required":["data"],"additionalProperties":false},"HealthStatus":{"properties":{"status":{"enum":["degraded","ok"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"HealthState"}},"required":["status"],"type":"object"}},"securitySchemes":{"PersonalAccessToken":{"bearerFormat":"bsb_pat_live_...","description":"Personal access token for account routes and projects visible to the authenticated user.","scheme":"bearer","type":"http"},"ProjectApiKey":{"bearerFormat":"bsb_key_live_...","description":"Project-scoped API key. It cannot access account routes or create additional projects.","scheme":"bearer","type":"http"},"MigrationToken":{"bearerFormat":"mig_...","description":"Migration token sent as `Authorization: Bearer mig_...`.","scheme":"bearer","type":"http"},"AppOAuth":{"description":"OAuth 2.0 for the first-party Bisibility apps only; other clients cannot obtain these scopes. Use the authorization code flow with PKCE (S256) and no client secret, and do not send a `resource` parameter: `/api/v1` accepts only the opaque access tokens issued without one. Access tokens expire after 15 minutes. Refresh tokens rotate on every use, and replaying a used refresh token revokes the whole grant. To sign out, POST the refresh token with `token_type_hint=refresh_token` and the `client_id` to `/api/auth/oauth2/revoke`. Account deletion additionally requires a sign-in from the last 10 minutes (authorize again with `prompt=login`); otherwise it fails with 403 and `details.code` `reauthentication_required`. Admin operations are not available to app tokens.","flows":{"authorizationCode":{"authorizationUrl":"/api/auth/oauth2/authorize","refreshUrl":"/api/auth/oauth2/token","scopes":{"api:read":"Read the account and projects visible to the user.","api:write":"Read, and change projects within the user's role. Implies api:read."},"tokenUrl":"/api/auth/oauth2/token"}},"type":"oauth2"}}},"info":{"description":"Public REST API for bisibility keyword rank tracking. Clients may optionally declare v1 with the Bisibility-API-Version header. Resource IDs use strict v3 prefixed public IDs and list cursors are version 3.","title":"bisibility Public API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/me/analytics-consent":{"get":{"operationId":"getAnalyticsConsent","summary":"Read account analytics consent","description":"Replay permission is local to the browser and is not returned here.","security":[{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"responses":{"200":{"description":"Account analytics consent; a null decision means pending.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountAnalyticsConsent"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Insufficient token scope or an unsupported third-party client"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"This route requires a personal token or app OAuth token"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/SourceHeader"}],"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"x-bisibility-sdk":{"group":"account.analyticsConsent","legacy":{"go":[],"python":[],"ts":[]},"method":"get"},"tags":["account-access"],"x-bisibility-cost":{"kind":"free"}},"put":{"operationId":"updateAnalyticsConsent","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/SourceHeader"}],"summary":"Set account analytics consent","description":"Idempotently stores an explicit decision. Does not change browser replay permission.","security":[{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"x-bisibility-name":"AnalyticsConsentUpdate","type":"object","additionalProperties":false,"required":["analytics"],"properties":{"analytics":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Account analytics consent; a null decision means pending.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountAnalyticsConsent"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid consent decision"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Insufficient token scope or an unsupported third-party client"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"This route requires a personal token or app OAuth token"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"x-bisibility-sdk":{"group":"account.analyticsConsent","legacy":{"go":[],"python":[],"ts":[]},"method":"update"},"tags":["account-access"],"x-bisibility-cost":{"kind":"free"}}},"/api-keys":{"get":{"operationId":"listApiKeys","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ApiKey"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"ApiKeyPage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]}],"summary":"List API keys","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["api-keys"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"createApiKey","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyIssued"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]}],"summary":"Create an API key","description":"The scope defaults to admin when omitted.","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["api-keys"],"x-bisibility-cost":{"kind":"free"}}},"/api-keys/{key_id}":{"delete":{"operationId":"revokeApiKey","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKey"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]}],"summary":"Revoke an API key","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["api-keys"],"x-bisibility-cost":{"kind":"free"}}},"/me":{"get":{"operationId":"getMe","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Me"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Get the authenticated user","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/SourceHeader"}],"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"x-bisibility-sdk":{"group":"account","legacy":{"go":["GetMe"],"python":["get_me"],"ts":["getMe"]},"method":"get"},"tags":["account-access"],"x-bisibility-cost":{"kind":"free"}},"patch":{"operationId":"updateMe","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MePatch"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Me"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Update the authenticated user","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["account-access"],"x-bisibility-cost":{"kind":"free"}},"delete":{"operationId":"deleteMe","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeDelete"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeDeleted"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/MeDeletionForbidden"}}},"description":"Insufficient scope, or app sign-in older than 10 minutes (details.code reauthentication_required and details.max_age_seconds 600)."},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The account is the last instance administrator; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The confirmation email does not match"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Delete the authenticated account","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/SourceHeader"}],"description":"Permanently deletes the account and its owned data. Requires an admin-scope personal access token, or an app token with api:write and a sign-in within 10 minutes, plus the account email as confirmation.","x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"x-bisibility-sdk":{"group":"account","legacy":{"go":[],"python":[],"ts":[]},"method":"delete"},"tags":["account-access"],"x-bisibility-cost":{"kind":"free"}}},"/me/tokens":{"get":{"operationId":"listPersonalAccessTokens","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PersonalAccessToken"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"PersonalAccessTokenPage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"PersonalAccessToken":[]}],"summary":"List personal access tokens","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["account-access"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"createPersonalAccessToken","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalAccessTokenCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalAccessTokenIssued"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"PersonalAccessToken":[]}],"summary":"Create a personal access token","description":"Creates a personal access token or exchanges a supported OAuth credential.","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["account-access"],"x-bisibility-cost":{"kind":"free"}}},"/me/push-tokens":{"get":{"operationId":"listDevicePushTokens","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/DevicePushToken"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"DevicePushTokenPage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List this account's device push tokens","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/SourceHeader"}],"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"x-bisibility-sdk":{"group":"account.pushTokens","legacy":{"go":[],"python":[],"ts":[]},"method":"list"},"tags":["account-access"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"registerDevicePushToken","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevicePushTokenRegister"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevicePushToken"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Register a device push token","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/SourceHeader"}],"description":"Idempotent. A token belongs to one user: registering it from another account moves it there. Tokens are deleted when the push service reports them unregistered and when the account is deleted.","x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"x-bisibility-sdk":{"group":"account.pushTokens","legacy":{"go":[],"python":[],"ts":[]},"method":"register"},"tags":["account-access"],"x-bisibility-cost":{"kind":"free"}}},"/me/push-tokens/{push_token_id}":{"delete":{"operationId":"deleteDevicePushToken","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevicePushToken"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Delete a device push token","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"in":"path","name":"push_token_id","required":true,"schema":{"pattern":"^dpt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"dpt"}},{"$ref":"#/components/parameters/SourceHeader"}],"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"x-bisibility-sdk":{"group":"account.pushTokens","legacy":{"go":[],"python":[],"ts":[]},"method":"delete"},"tags":["account-access"],"x-bisibility-cost":{"kind":"free"}}},"/me/tokens/{token_id}":{"delete":{"operationId":"revokePersonalAccessToken","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalAccessToken"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"PersonalAccessToken":[]}],"summary":"Revoke a personal access token","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["account-access"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/api-keys":{"get":{"operationId":"listProjectApiKeys","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ApiKey"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"ApiKeyPage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]}],"summary":"List project API keys","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["api-keys"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"createProjectApiKey","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyIssued"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]}],"summary":"Create a project API key","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"description":"The scope defaults to admin when omitted.","tags":["api-keys"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/webhooks":{"get":{"operationId":"listWebhookEndpoints","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/WebhookEndpoint"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"WebhookEndpointPage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List webhook endpoints","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["webhooks"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"createWebhookEndpoint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpointCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpoint"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Create a webhook endpoint","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["webhooks"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/webhooks/{webhook_id}":{"delete":{"operationId":"deleteWebhookEndpoint","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpoint"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]}],"summary":"Delete a webhook endpoint","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["webhooks"],"x-bisibility-cost":{"kind":"free"}},"patch":{"operationId":"updateWebhookEndpoint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpointPatch"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpoint"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Update a webhook endpoint","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["webhooks"],"x-bisibility-cost":{"kind":"free"}}},"/alert-rules/{rule_id}":{"delete":{"operationId":"deleteAlertRule","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"rule_id","required":true,"schema":{"example":"alr_a00000000000000000000000","pattern":"^alr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"alr"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertRuleDeleteResult"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Delete an alert rule","x-bisibility-sdk":{"group":"alertRules","method":"delete","legacy":{"ts":["deleteAlertRule"],"python":["delete_alert_rule"],"go":["DeleteAlertRule"]}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"tags":["alerts"],"x-bisibility-cost":{"kind":"free"}},"patch":{"operationId":"updateAlertRule","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"rule_id","required":true,"schema":{"example":"alr_a00000000000000000000000","pattern":"^alr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"alr"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertRulePatch"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertRule"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Update an alert rule","x-bisibility-sdk":{"group":"alertRules","method":"update","legacy":{"ts":["updateAlertRule"],"python":["update_alert_rule"],"go":["UpdateAlertRule"]}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"tags":["alerts"],"x-bisibility-cost":{"kind":"free"}}},"/competitors/{competitor_id}":{"delete":{"operationId":"removeCompetitor","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Competitor"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Remove a competitor by ID","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["competitors"],"x-bisibility-cost":{"kind":"free"}}},"/migration-tokens/{token_id}":{"delete":{"operationId":"revokeMigrationToken","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MigrationToken"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Revoke a migration token by ID","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["migration"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/alert-rules":{"get":{"operationId":"listAlertRules","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AlertRule"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"AlertRulePage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List alert rules","x-bisibility-idempotency":"none","x-bisibility-pagination":{"items":"data","max_limit":200,"next":"meta.next_cursor","style":"cursor"},"x-bisibility-sdk":{"group":"alertRules","legacy":{"go":["ListAlertRules"],"python":["list_alert_rules"],"ts":["listAlertRules"]},"method":"list"},"tags":["alerts"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"createAlertRule","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/SourceHeader"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertRuleInput"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertRule"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Create an alert rule","x-bisibility-sdk":{"group":"alertRules","method":"create","legacy":{"ts":["createAlertRule"],"python":["create_alert_rule"],"go":["CreateAlertRule"]}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"tags":["alerts"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/competitors":{"get":{"operationId":"listCompetitors","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Competitor"},"type":"array"},"meta":{"properties":{"markets":{"items":{"$ref":"#/components/schemas/CompetitorMarket"},"type":"array"},"next_cursor":{"type":["string","null"]},"suggestions":{"items":{"$ref":"#/components/schemas/CompetitorSuggestion"},"type":"array"}},"required":["next_cursor"],"type":"object","x-bisibility-name":"CompetitorPageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"CompetitorPage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List competitors","x-bisibility-idempotency":"none","x-bisibility-pagination":{"items":"data","max_limit":200,"next":"meta.next_cursor","style":"cursor"},"x-bisibility-sdk":{"group":"competitors","legacy":{"go":["ListCompetitors"],"python":["list_competitors"],"ts":["listCompetitors"]},"method":"list"},"tags":["competitors"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"addCompetitor","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompetitorCreate"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Competitor"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Add a competitor","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["competitors"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/competitors/{competitor_id}":{"delete":{"operationId":"removeProjectCompetitor","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Competitor"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Remove a project competitor","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["competitors"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/migration-tokens":{"get":{"operationId":"listMigrationTokens","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/MigrationToken"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"MigrationTokenPage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List migration tokens","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["migration"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"mintMigrationToken","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MigrationToken"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Mint a migration token","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["migration"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/migration-tokens/{token_id}":{"delete":{"operationId":"revokeProjectMigrationToken","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MigrationToken"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Revoke a project migration token","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["migration"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/notification-preferences":{"get":{"operationId":"getNotificationPreferences","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferences"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Get notification preferences","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["alerts"],"x-bisibility-cost":{"kind":"free"}},"patch":{"operationId":"updateNotificationPreferences","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferences"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferences"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Update notification preferences","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["alerts"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/provider-budgets":{"get":{"operationId":"listProviderBudgets","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ProviderBudgets"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"ProviderBudgetsPage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List provider budgets","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["providers"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/providers":{"get":{"operationId":"listProviders","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Provider"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"ProviderPage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List providers","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["providers"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/providers/{provider_id}":{"delete":{"operationId":"disconnectProvider","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Provider"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Disconnect a provider","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["providers"],"x-bisibility-cost":{"kind":"free"}},"patch":{"operationId":"updateProviderSettings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderConnect"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Provider"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Update provider settings","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["providers"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/providers/{provider_id}/budgets":{"patch":{"operationId":"updateProviderBudgets","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderBudgetsUpdate"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderBudgets"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Update provider budgets","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["providers"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/providers/{provider_id}/connect":{"post":{"operationId":"connectProvider","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderConnect"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Provider"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Connect a provider","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["providers"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/providers/{provider_id}/test":{"post":{"operationId":"testProviderConnection","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderConnect"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderTestResult"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Test a provider connection","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["providers"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/saved-views/{view_id}":{"delete":{"operationId":"deleteProjectSavedView","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedView"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Delete a project saved view","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["saved-views"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/team/invites":{"get":{"operationId":"listTeamInvites","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TeamInvite"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"TeamInvitePage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List team invites","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["team"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"createTeamInvite","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamInviteCreate"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamInvite"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]}],"summary":"Create a team invite","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["team"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/team/invites/{invite_id}":{"delete":{"operationId":"revokeProjectTeamInvite","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamInvite"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]}],"summary":"Revoke a project team invite","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["team"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/team/members":{"get":{"operationId":"listTeamMembers","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TeamMember"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"TeamMemberPage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List team members","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["team"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/triggered-alerts":{"get":{"operationId":"listTriggeredAlerts","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TriggeredAlert"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"TriggeredAlertPage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List triggered alerts","x-bisibility-idempotency":"none","x-bisibility-pagination":{"items":"data","max_limit":200,"next":"meta.next_cursor","style":"cursor"},"x-bisibility-sdk":{"group":"alerts","legacy":{"go":["ListTriggeredAlerts"],"python":["list_triggered_alerts"],"ts":["listTriggeredAlerts"]},"method":"list"},"tags":["alerts"],"x-bisibility-cost":{"kind":"free"}}},"/saved-views/{view_id}":{"delete":{"operationId":"deleteSavedView","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedView"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Delete a saved view by ID","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["saved-views"],"x-bisibility-cost":{"kind":"free"}}},"/team/invites/{invite_id}":{"delete":{"operationId":"revokeTeamInvite","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamInvite"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]}],"summary":"Revoke a team invite by ID","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["team"],"x-bisibility-cost":{"kind":"free"}}},"/capabilities":{"get":{"operationId":"getCapabilities","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"apiVersions":{"items":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"},"minItems":1,"type":"array"},"authentication":{"properties":{"scheme":{"const":"bearer","type":"string"},"scope":{"type":"string"}},"required":["scheme","scope"],"type":"object","x-bisibility-name":"CapabilitiesAuthentication"},"data":{"items":{"$ref":"#/components/schemas/Capability"},"type":"array"},"description":{"type":"string"},"features":{"description":"Supported request protocols, independent of the caller's permissions.","properties":{"reviewed_project_defaults":{"const":"v1","type":"string"}},"required":["reviewed_project_defaults"],"type":"object","x-bisibility-name":"CapabilitiesFeatures"},"rank_check_scheduler_mode":{"enum":["cutover","dispatcher","invalid","legacy"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"RankCheckSchedulerMode"},"scheduler_driver":{"enum":["invalid","legacy-auto","none","temporal"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"SchedulerDriver"}},"required":["apiVersions","authentication","data","description","features","rank_check_scheduler_mode","scheduler_driver"],"type":"object","x-bisibility-name":"Capabilities"}}},"description":"JSON response"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"}},"summary":"Get API capabilities","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}}],"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"x-bisibility-sdk":{"group":"system","legacy":{"go":["GetCapabilities"],"python":["get_capabilities"],"ts":["getCapabilities"]},"method":"getCapabilities"},"tags":["discovery"],"x-bisibility-cost":{"kind":"free"}}},"/cost-estimate":{"get":{"operationId":"getCostEstimate","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"description":"Custom cron expression; an invalid or missing expression leaves monthly estimates unknown.","in":"query","name":"cron_expression","schema":{"type":"string","maxLength":120}},{"description":"Keyword count. Must be an integer greater than or equal to 0.","in":"query","name":"keywords","required":true,"schema":{"maximum":100000,"minimum":0,"type":"integer"}},{"description":"Organic result depth per logical rank check.","in":"query","name":"depth","schema":{"default":100,"enum":[10,20,50,100],"type":"integer","x-bisibility-enum":"closed","x-bisibility-name":"SerpDepth"}},{"description":"Market count per keyword; each market combines a location and language.","in":"query","name":"locations","schema":{"default":1,"maximum":100,"minimum":1,"type":"integer"}},{"description":"Device count per keyword.","in":"query","name":"devices","schema":{"default":1,"maximum":2,"minimum":1,"type":"integer"}},{"description":"Rank-check frequency used to estimate monthly checks.","in":"query","name":"frequency","schema":{"default":"daily","enum":["daily","weekly","monthly","manual","paused","custom_cron"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"CostEstimateFrequency"}},{"description":"Provider rate card ID from GET /provider-rates. An unknown provider returns 404.","in":"query","name":"provider","schema":{"default":"dataforseo","maxLength":80,"minLength":1,"type":"string"}},{"description":"Flat-rate provider option key from the provider's rate card, such as standard, priority or live.","in":"query","name":"option","schema":{"maxLength":80,"minLength":1,"type":"string"}},{"description":"Plan-model provider plan key from the provider's rate card; unknown values use auto selection.","in":"query","name":"plan","schema":{"maxLength":80,"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/CostEstimate"}},"required":["data"],"type":"object","x-bisibility-name":"CostEstimateResponse"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"summary":"Estimate monthly SERP provider cost","x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"x-bisibility-sdk":{"group":"pricing","legacy":{"go":["GetCostEstimate"],"python":["get_cost_estimate"],"ts":["getCostEstimate"]},"method":"estimate"},"tags":["discovery"],"x-bisibility-cost":{"kind":"free"}}},"/health":{"get":{"description":"Anonymous responses expose only status. Valid API credentials or INTERNAL_PROBE_TOKEN receive additional operator diagnostics outside the public SDK schema.","operationId":"getHealth","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthStatus"}}},"description":"Composite health report is healthy"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthStatus"}}},"description":"Composite health report is degraded"}},"summary":"Check API health","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}}],"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"x-bisibility-sdk":{"group":"system","legacy":{"go":["GetHealth"],"python":["get_health"],"ts":["getHealth"]},"method":"getHealth"},"tags":["discovery"],"x-bisibility-cost":{"kind":"free"}}},"/liveness":{"get":{"operationId":"getLiveness","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"status":{"enum":["ok"],"type":"string"}},"required":["status"],"type":"object"}}},"description":"Web process is alive"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"}},"summary":"Check web process liveness","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}}],"tags":["discovery"],"x-bisibility-cost":{"kind":"free"}}},"/llms.txt":{"get":{"operationId":"getLlmsTxt","responses":{"200":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Agent-readable API capability summary"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"}},"summary":"Get API documentation for LLMs","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}}],"tags":["discovery"],"x-bisibility-cost":{"kind":"free"}}},"/openapi.json":{"get":{"operationId":"getOpenApi","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenApiDocument"}}},"description":"JSON response"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"}},"summary":"Get the OpenAPI document","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}}],"tags":["discovery"],"x-bisibility-cost":{"kind":"free"}}},"/provider-rates":{"get":{"operationId":"getProviderRates","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ProviderRateCard"},"type":"array"}},"required":["data"],"type":"object","x-bisibility-name":"ProviderRateCardList"}}},"description":"JSON response"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"summary":"List public SERP provider rate cards","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}}],"tags":["discovery"],"x-bisibility-cost":{"kind":"free"}}},"/readiness":{"get":{"operationId":"getReadiness","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthStatus"}}},"description":"Web process is ready to serve traffic"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthStatus"}}},"description":"Web process is not ready to serve traffic"}},"summary":"Check web traffic readiness","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}}],"tags":["discovery"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-catalog":{"get":{"operationId":"getAiResearchCatalog","summary":"Get AI research catalog","description":"Access follows existing project membership and token scopes.","security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"models":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"provider":{"const":"chat_gpt"},"label":{"type":"string"},"reasoning":{"type":"boolean"},"web_search":{"type":"boolean"},"min_output_tokens":{"type":"number"},"max_output_tokens":{"type":"number"},"price_available":{"type":"boolean","description":"Fresh official token unit prices are available. This does not imply a complete request/search cost ceiling."},"admission_enabled":{"type":"boolean","description":"The model ID is enabled by the current billing policy. Known prices alone do not enable additional model IDs."},"actual_cost_enabled":{"type":"boolean","description":"Fresh token and base forecast available for explicit own-BYOK actual-cost mode, without a guaranteed maximum."}},"required":["id","provider","label","reasoning","web_search","min_output_tokens","max_output_tokens","price_available","admission_enabled","actual_cost_enabled"]}},"visibility_markets":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","enum":["chat_gpt","google"]},"location_code":{"type":"number"},"country_name":{"type":"string"},"languages":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]}}},"required":["platform","location_code","country_name","languages"]}},"response_countries":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]},"description":"Bundled ISO country names for optional search hints, not observed dataset coverage."},"response_languages":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}},"required":["code","name"]},"description":"Local language names for answer instructions, not native provider filters."},"limits":{"type":"object","properties":{"max_models":{"const":2},"max_output_tokens":{"const":4096}},"required":["max_models","max_output_tokens"]},"fetched_at":{"type":"string","format":"date-time"},"actual_cost_available":{"type":"boolean","description":"The project currently uses own provider credentials. This is rechecked authoritatively before paid execution."}},"required":["models","visibility_markets","response_countries","response_languages","limits","fetched_at","actual_cost_available"]}},"required":["data"]}}},"description":"Project-scoped result"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project role or token scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project or report not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Provider unavailable or analysis cost cap exceeded"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"The public project ID. Project membership and token scopes are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["research-reports"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/context":{"get":{"operationId":"getProjectContext","summary":"Get project context","description":"Access follows existing project membership and token scopes.","security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"business":{"type":"string"},"audience":{"type":"string"},"products":{"type":"string"},"goals":{"type":"string"},"agent_rules":{"type":"string"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["business","audience","products","goals","agent_rules","updated_at"]}},"required":["data"]}}},"description":"Project-scoped result"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project role or token scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project or report not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Provider unavailable or analysis cost cap exceeded"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"The public project ID. Project membership and token scopes are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["research-reports"],"x-bisibility-cost":{"kind":"free"}},"patch":{"operationId":"updateProjectContext","summary":"Update project context","description":"Access follows existing project membership and token scopes.","security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"business":{"type":"string"},"audience":{"type":"string"},"products":{"type":"string"},"goals":{"type":"string"},"agent_rules":{"type":"string"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["business","audience","products","goals","agent_rules","updated_at"]}},"required":["data"]}}},"description":"Project-scoped result"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project role or token scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project or report not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Provider unavailable or analysis cost cap exceeded"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"The public project ID. Project membership and token scopes are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"business":{"type":"string","maxLength":4000,"description":"Project guidance for the agent, up to 4000 characters."},"audience":{"type":"string","maxLength":4000,"description":"Project guidance for the agent, up to 4000 characters."},"products":{"type":"string","maxLength":4000,"description":"Project guidance for the agent, up to 4000 characters."},"goals":{"type":"string","maxLength":4000,"description":"Project guidance for the agent, up to 4000 characters."},"agent_rules":{"type":"string","maxLength":4000,"description":"Project guidance for the agent, up to 4000 characters."}},"required":["business","audience","products","goals","agent_rules"],"type":"object"}}},"required":true},"tags":["research-reports"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/agent-reports":{"get":{"operationId":"listAgentReports","summary":"List agent reports","description":"Access follows existing project membership and token scopes.","security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string"},"created_at":{"type":"string","format":"date-time"}},"required":["id","title","kind","created_at"]}},"meta":{"type":"object","properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"]}},"required":["data","meta"]}}},"description":"Project-scoped result"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project role or token scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project or report not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Provider unavailable or analysis cost cap exceeded"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"The public project ID. Project membership and token scopes are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"query","name":"kind","schema":{"description":"Analysis category, such as ai_visibility or site_audit.","type":"string","maxLength":64,"pattern":"^[a-zA-Z][a-zA-Z0-9_-]*$"}},{"in":"query","name":"limit","schema":{"description":"Page size, at most 100.","type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"cursor","schema":{"description":"Opaque next-page cursor from the previous response.","type":"string"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["research-reports"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"createAgentReport","summary":"Create agent report","description":"Save external analysis. Producer kinds site_audit, ai_visibility and prompt_explorer are reserved. Access follows existing project membership and token scopes.","security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"body":{"type":"object","additionalProperties":true},"provenance":{"type":"object","additionalProperties":true}},"required":["id","title","kind","created_at","body","provenance"]}},"required":["data"]}}},"description":"Project-scoped result"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project role or token scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project or report not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Provider unavailable or analysis cost cap exceeded"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"The public project ID. Project membership and token scopes are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"kind":{"type":"string","maxLength":64,"pattern":"^[a-zA-Z][a-zA-Z0-9_-]*$","description":"External analysis kind; site_audit, ai_visibility and prompt_explorer are reserved."},"title":{"type":"string","minLength":1,"maxLength":160,"description":"Human-readable report title."},"body":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Structured analysis. Maximum 256 KiB; untrusted text is rendered safely."},"provenance":{"description":"Source attribution and limitations. Maximum 32 KiB.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["kind","title","body"],"type":"object"}}},"required":true},"tags":["research-reports"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/agent-reports/{report_id}":{"get":{"operationId":"getAgentReport","summary":"Get agent report","description":"Access follows existing project membership and token scopes.","security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"body":{"type":"object","additionalProperties":true},"provenance":{"type":"object","additionalProperties":true}},"required":["id","title","kind","created_at","body","provenance"]}},"required":["data"]}}},"description":"Project-scoped result"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project role or token scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project or report not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Provider unavailable or analysis cost cap exceeded"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"The public project ID. Project membership and token scopes are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"path","name":"report_id","required":true,"schema":{"description":"The public report ID, scoped to this project.","type":"string","pattern":"^agr_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"agr"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["research-reports"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-visibility":{"post":{"operationId":"analyzeAiVisibility","summary":"Analyze AI visibility","description":"Requires an explicit cost cap. estimate_only makes no paid request. Observed AI datasets and synthetic prompt tests remain distinct.","security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"ok":{"const":true},"estimate":{"const":true},"estimated_cost_cents":{"type":"number"},"estimate_kind":{"type":"string","enum":["forecast","admission_bound"]},"is_guaranteed_maximum":{"type":"boolean"},"credential_source":{"type":"string","enum":["own","hosted"]},"estimate_credentials_ref":{"type":"string"},"is_partial_estimate":{"type":"boolean"},"pricing_policy":{"type":"string","enum":["legacy_dated","current_catalog","provider_actual_cost"]},"pricing_checked_at":{"oneOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"forecast_exclusions":{"type":"array","items":{"type":"string"}},"forecast_scope":{"const":"tokens_and_base_only"},"forecast_assumptions":{"type":"array","items":{"type":"string"}},"evidence":{"type":"string","enum":["observed_dataset","synthetic_prompt_test"]}},"required":["ok","estimate","estimated_cost_cents","evidence","estimate_kind","is_guaranteed_maximum","credential_source","estimate_credentials_ref"]},{"type":"object","properties":{"ok":{"const":true},"estimate":{"const":false},"cached":{"type":"boolean"},"report_id":{"type":"string"},"cost_cents":{"type":"number"},"result":{"type":"object","properties":{"evidence":{"type":"string","enum":["observed_dataset","synthetic_prompt_test"]},"rows":{"type":"array","items":{"type":"object","properties":{"prompt":{"type":"string"},"model":{"type":"string"},"requested_model":{"type":"string"},"actual_model":{"type":["string","null"]},"answer":{"type":"string"},"observed_at":{"type":["string","null"]},"brand_mentioned":{"type":"boolean"},"domain_cited":{"type":"boolean"},"citations":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string","format":"uri"},"target_domain":{"type":"boolean"}},"required":["title","url","target_domain"]}},"content_truncated":{"type":"boolean"}},"required":["prompt","model","answer","observed_at","brand_mentioned","domain_cited","citations"]}},"total_available":{"type":["integer","null"]},"truncated":{"type":"boolean"},"fetched_at":{"type":"string","format":"date-time"},"cost_cents":{"type":"number"},"cost_status":{"type":"string","enum":["confirmed","unknown"]},"failure":{"type":["string","null"]}},"required":["evidence","rows","total_available","truncated","fetched_at","cost_cents","cost_status","failure"]},"retry_blocked":{"type":"boolean"}},"required":["ok","estimate","cached","report_id","cost_cents","result"]}]}},"required":["data"]}}},"description":"Project-scoped result"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Deployment credits exhausted for a paid provider request"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project role or token scope denied, or `byok_required`: the account runs paid provider work only on its own provider keys and none serves this request"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project or report not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Provider unavailable or analysis cost cap exceeded"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"The public project ID. Project membership and token scopes are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"allOf":[{"if":{"properties":{"target_type":{"const":"domain"}}},"then":{"properties":{"domain":{"anyOf":[{"maxLength":63},{"pattern":"^www\\.","maxLength":67}]}}}}],"properties":{"brand":{"type":"string","minLength":1,"maxLength":120,"description":"Brand name to inspect."},"domain":{"type":"string","minLength":1,"maxLength":253,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$","description":"Local citation-matching hostname, without a scheme or path. Domain searches remove a leading www. only from the provider filter and require at most 63 characters after removal; local matching keeps the full hostname. Brand searches and prompt comparisons allow up to 253."},"max_cost_cents":{"type":"integer","minimum":0,"maximum":1000,"description":"Maximum accepted provider cost in cents. Estimates and cache reads do not spend credits."},"estimate_only":{"default":false,"description":"Return the cost estimate without paid provider I/O.","type":"boolean"},"fresh":{"default":false,"description":"Bypass the stored result and issue a new paid request when admitted.","type":"boolean"},"target_type":{"default":"domain","description":"Match a brand name or a domain.","type":"string","enum":["brand","domain"]},"platform":{"default":"chat_gpt","description":"Provider observed dataset: ChatGPT or Google AI Overview.","type":"string","enum":["chat_gpt","google"]},"location_code":{"default":2840,"description":"Provider location code.","type":"integer","minimum":1,"maximum":9007199254740991},"language_code":{"default":"en","description":"Dataset language.","type":"string","pattern":"^[a-z]{2}(?:-[A-Z]{2})?$"},"limit":{"default":10,"description":"Maximum mention rows.","type":"integer","minimum":1,"maximum":20}},"required":["brand","domain","max_cost_cents"],"type":"object"}}},"required":true},"tags":["research-reports"],"x-bisibility-cost":{"kind":"paid","timing":"inline","estimate":{"in":"body","param":"estimate_only"},"max_cost_cents":{"in":"body","minimum":0,"required":true}}}},"/projects/{project_id}/prompt-explorer":{"post":{"operationId":"compareAiPrompts","summary":"Compare AI prompts","description":"Default hard_cap requires max_cost_cents and preserves original mini/nano512 availability. Explicit own-BYOK provider_actual_cost requires non_guaranteed_estimate_v1 acknowledgement and a separate advisory limit; partial estimate covers tokens and base only, excludes variable tools/loops/role overhead, and has no guaranteed maximum. Execution requires the forecast credential identity and stable UUID. Actual single-task provider receipts settle the charge; pending or unknown cost prevents another paid attempt until reconciled. estimate_only makes no paid request.","security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"ok":{"const":true},"estimate":{"const":true},"estimated_cost_cents":{"type":"number"},"estimate_kind":{"type":"string","enum":["forecast","admission_bound"]},"is_guaranteed_maximum":{"type":"boolean"},"credential_source":{"type":"string","enum":["own","hosted"]},"estimate_credentials_ref":{"type":"string"},"is_partial_estimate":{"type":"boolean"},"pricing_policy":{"type":"string","enum":["legacy_dated","current_catalog","provider_actual_cost"]},"pricing_checked_at":{"oneOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"forecast_exclusions":{"type":"array","items":{"type":"string"}},"forecast_scope":{"const":"tokens_and_base_only"},"forecast_assumptions":{"type":"array","items":{"type":"string"}},"evidence":{"type":"string","enum":["observed_dataset","synthetic_prompt_test"]}},"required":["ok","estimate","estimated_cost_cents","evidence","estimate_kind","is_guaranteed_maximum","credential_source","estimate_credentials_ref"]},{"type":"object","properties":{"ok":{"const":true},"estimate":{"const":false},"cached":{"type":"boolean"},"report_id":{"type":"string"},"cost_cents":{"type":"number"},"result":{"type":"object","properties":{"evidence":{"type":"string","enum":["observed_dataset","synthetic_prompt_test"]},"rows":{"type":"array","items":{"type":"object","properties":{"prompt":{"type":"string"},"model":{"type":"string"},"requested_model":{"type":"string"},"actual_model":{"type":["string","null"]},"answer":{"type":"string"},"observed_at":{"type":["string","null"]},"brand_mentioned":{"type":"boolean"},"domain_cited":{"type":"boolean"},"citations":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string","format":"uri"},"target_domain":{"type":"boolean"}},"required":["title","url","target_domain"]}},"content_truncated":{"type":"boolean"}},"required":["prompt","model","answer","observed_at","brand_mentioned","domain_cited","citations"]}},"total_available":{"type":["integer","null"]},"truncated":{"type":"boolean"},"fetched_at":{"type":"string","format":"date-time"},"cost_cents":{"type":"number"},"cost_status":{"type":"string","enum":["confirmed","unknown"]},"failure":{"type":["string","null"]}},"required":["evidence","rows","total_available","truncated","fetched_at","cost_cents","cost_status","failure"]},"retry_blocked":{"type":"boolean"}},"required":["ok","estimate","cached","report_id","cost_cents","result"]}]}},"required":["data"]}}},"description":"Project-scoped result"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Deployment credits exhausted for a paid provider request"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project role or token scope denied, or `byok_required`: the account runs paid provider work only on its own provider keys and none serves this request"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project or report not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Provider unavailable or analysis cost cap exceeded"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"The public project ID. Project membership and token scopes are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"brand":{"type":"string","minLength":1,"maxLength":120,"description":"Brand name to inspect."},"domain":{"type":"string","minLength":1,"maxLength":253,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$","description":"Local citation-matching hostname, without a scheme or path. Domain searches remove a leading www. only from the provider filter and require at most 63 characters after removal; local matching keeps the full hostname. Brand searches and prompt comparisons allow up to 253."},"max_cost_cents":{"type":"integer","minimum":0,"maximum":1000,"description":"Maximum accepted provider cost in cents. Estimates and cache reads do not spend credits."},"estimate_only":{"default":false,"description":"Return the cost estimate without paid provider I/O.","type":"boolean"},"fresh":{"default":false,"description":"Hard-cap mode bypasses stored results. Actual-cost retries always reuse their durable request identity; fresh never re-dispatches a pending, unknown or completed attempt.","type":"boolean"},"cost_policy":{"default":"hard_cap","description":"Hard cap or explicitly consented non-guaranteed actual provider cost.","type":"string","enum":["hard_cap","provider_actual_cost"]},"actual_cost_acknowledgement":{"description":"Explicit acknowledgement that actual provider cost has no guaranteed maximum.","type":"string","const":"non_guaranteed_estimate_v1"},"estimated_cost_limit_cents":{"description":"Advisory estimate limit in cents for actual-cost consent.","type":"integer","minimum":0,"maximum":1000},"estimate_credentials_ref":{"description":"Credential identity from the estimate, required for actual-cost execution.","type":"string","pattern":"^[a-f0-9]{64}$"},"prompt":{"type":"string","minLength":1,"maxLength":500,"description":"Same synthetic prompt for each model; maximum 2000 UTF-8 bytes."},"models":{"uniqueItems":true,"description":"Distinct model IDs advertised by get_ai_research_catalog.","minItems":1,"maxItems":2,"type":"array","items":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"web_search":{"default":false,"description":"Enable provider web search when supported.","type":"boolean"},"country_iso_code":{"description":"Country hint; requires web search.","type":"string","pattern":"^[A-Z]{2}$"},"response_language":{"default":"en","description":"Requested response language.","type":"string","pattern":"^[a-z]{2,3}(?:-[a-zA-Z0-9]{2,4})?$"},"max_output_tokens":{"default":512,"description":"Maximum output tokens; provider limits also apply.","type":"integer","minimum":16,"maximum":4096},"idempotency_key":{"description":"Stable retry key sent as a header; actual-cost mode requires a UUID also sent in the body.","type":"string","minLength":1,"maxLength":160}},"required":["brand","domain","prompt"],"type":"object","oneOf":[{"properties":{"cost_policy":{"enum":["hard_cap"]},"max_cost_cents":{"description":"Maximum guaranteed cost in cents for hard-cap mode."}},"required":["max_cost_cents"],"not":{"anyOf":[{"required":["actual_cost_acknowledgement"]},{"required":["estimated_cost_limit_cents"]},{"required":["estimate_credentials_ref"]},{"required":["idempotency_key"]}]}},{"properties":{"cost_policy":{"const":"provider_actual_cost","description":"Hard cap or explicitly consented provider actual cost."},"idempotency_key":{"type":"string","format":"uuid"},"actual_cost_acknowledgement":{"description":"Explicit consent that actual cost has no guaranteed maximum."},"estimated_cost_limit_cents":{"description":"Advisory estimate limit in cents."}},"required":["cost_policy","actual_cost_acknowledgement","estimated_cost_limit_cents"],"not":{"required":["max_cost_cents"]},"allOf":[{"if":{"not":{"properties":{"estimate_only":{"const":true}},"required":["estimate_only"]}},"then":{"required":["idempotency_key","estimate_credentials_ref"]}}]}]}}},"required":true},"tags":["research-reports"],"x-bisibility-cost":{"kind":"paid","timing":"inline","estimate":{"in":"body","param":"estimate_only"},"max_cost_cents":{"in":"body","minimum":0,"required":true}}}},"/projects/{project_id}/site-audits":{"post":{"operationId":"runSiteAudit","summary":"Run site audit","description":"Access follows existing project membership and token scopes.","security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","x-bisibility-name":"SiteAuditResponse","properties":{"data":{"type":"object","x-bisibility-name":"SavedSiteAudit","properties":{"id":{"example":"agr_a00000000000000000000000","pattern":"^agr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"agr"},"created_at":{"type":"string","format":"date-time"},"cached":{"type":"boolean"},"result":{"type":"object","additionalProperties":false,"properties":{"version":{"type":"number","const":1},"target":{"type":"string","maxLength":1024},"started_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"state":{"type":"string","enum":["complete","partial"],"x-bisibility-enum":"open","x-bisibility-name":"SiteAuditState"},"stop_reason":{"type":"string","enum":["finished","page_limit","time_limit","request_limit"],"x-bisibility-enum":"open","x-bisibility-name":"SiteAuditStopReason"},"limits":{"type":"object","additionalProperties":false,"properties":{"max_pages":{"type":"integer","minimum":1,"maximum":15},"max_requests":{"type":"number","const":20},"max_duration_ms":{"type":"number","const":15000},"max_page_bytes":{"type":"number","const":524288}},"required":["max_pages","max_requests","max_duration_ms","max_page_bytes"],"x-bisibility-name":"SiteAuditLimits"},"requests":{"type":"integer","minimum":0,"maximum":20},"pages":{"maxItems":15,"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"url":{"type":"string","maxLength":1024},"final_url":{"type":"string","maxLength":1024},"status":{"anyOf":[{"type":"integer","minimum":100,"maximum":599},{"type":"null"}]},"response_time_ms":{"type":"number","minimum":0},"title":{"anyOf":[{"type":"string","maxLength":400},{"type":"null"}]},"description":{"anyOf":[{"type":"string","maxLength":400},{"type":"null"}]},"canonical":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]},"headings":{"maxItems":10,"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"level":{"type":"integer","minimum":1,"maximum":6},"text":{"type":"string","maxLength":160}},"required":["level","text"],"x-bisibility-name":"SiteAuditHeading"}},"h1_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"indexable":{"type":"boolean"},"robots":{"anyOf":[{"type":"string","maxLength":400},{"type":"null"}]},"internal_link_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"external_link_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"internal_links":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":1024}},"image_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"missing_alt_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"issues":{"maxItems":20,"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string","maxLength":64},"severity":{"type":"string","enum":["error","warning","info"],"x-bisibility-enum":"open","x-bisibility-name":"SiteAuditSeverity"},"message":{"type":"string","maxLength":400}},"required":["code","severity","message"],"x-bisibility-name":"SiteAuditIssue"}}},"required":["url","final_url","status","response_time_ms","title","description","canonical","headings","h1_count","indexable","robots","internal_link_count","external_link_count","internal_links","image_count","missing_alt_count","issues"],"x-bisibility-name":"SiteAuditPage"}},"summary":{"type":"object","additionalProperties":false,"properties":{"pages":{"type":"integer","minimum":0,"maximum":9007199254740991},"errors":{"type":"integer","minimum":0,"maximum":9007199254740991},"warnings":{"type":"integer","minimum":0,"maximum":9007199254740991},"indexable":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["pages","errors","warnings","indexable"],"x-bisibility-name":"SiteAuditSummary"},"limitations":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":500}}},"required":["version","target","started_at","completed_at","state","stop_reason","limits","requests","pages","summary","limitations"],"x-bisibility-name":"SiteAuditResult"}},"required":["id","created_at","cached","result"]}},"required":["data"]}}},"description":"Project-scoped result"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project role or token scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project or report not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Provider unavailable or analysis cost cap exceeded"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/SourceHeader"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","x-bisibility-name":"SiteAuditInput","additionalProperties":false,"properties":{"max_pages":{"type":"integer","minimum":1,"maximum":15,"default":10}}}}},"required":true},"x-bisibility-sdk":{"group":"siteAudits","method":"run","legacy":{"ts":["runSiteAudit"],"python":["run_site_audit"],"go":["RunSiteAudit"]}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"tags":["research-reports"],"x-bisibility-cost":{"kind":"free"}},"get":{"operationId":"listSiteAudits","summary":"List site audits","description":"Access follows existing project membership and token scopes.","security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","x-bisibility-name":"SiteAuditListResponse","properties":{"data":{"type":"array","items":{"type":"object","x-bisibility-name":"SiteAuditReportSummary","properties":{"id":{"example":"agr_a00000000000000000000000","pattern":"^agr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"agr"},"title":{"type":"string"},"kind":{"type":"string"},"created_at":{"type":"string","format":"date-time"}},"required":["id","title","kind","created_at"]}}},"required":["data"]}}},"description":"Project-scoped result"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project role or token scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project or report not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Provider unavailable or analysis cost cap exceeded"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"x-bisibility-sdk":{"group":"siteAudits","method":"list","legacy":{"ts":["listSiteAudits"],"python":["list_site_audits"],"go":["ListSiteAudits"]}},"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"tags":["research-reports"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/site-audits/{report_id}":{"get":{"operationId":"getSiteAudit","summary":"Get site audit","description":"Access follows existing project membership and token scopes.","security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","x-bisibility-name":"SiteAuditResponse","properties":{"data":{"type":"object","x-bisibility-name":"SavedSiteAudit","properties":{"id":{"example":"agr_a00000000000000000000000","pattern":"^agr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"agr"},"created_at":{"type":"string","format":"date-time"},"cached":{"type":"boolean"},"result":{"type":"object","additionalProperties":false,"properties":{"version":{"type":"number","const":1},"target":{"type":"string","maxLength":1024},"started_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"completed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"state":{"type":"string","enum":["complete","partial"],"x-bisibility-enum":"open","x-bisibility-name":"SiteAuditState"},"stop_reason":{"type":"string","enum":["finished","page_limit","time_limit","request_limit"],"x-bisibility-enum":"open","x-bisibility-name":"SiteAuditStopReason"},"limits":{"type":"object","additionalProperties":false,"properties":{"max_pages":{"type":"integer","minimum":1,"maximum":15},"max_requests":{"type":"number","const":20},"max_duration_ms":{"type":"number","const":15000},"max_page_bytes":{"type":"number","const":524288}},"required":["max_pages","max_requests","max_duration_ms","max_page_bytes"],"x-bisibility-name":"SiteAuditLimits"},"requests":{"type":"integer","minimum":0,"maximum":20},"pages":{"maxItems":15,"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"url":{"type":"string","maxLength":1024},"final_url":{"type":"string","maxLength":1024},"status":{"anyOf":[{"type":"integer","minimum":100,"maximum":599},{"type":"null"}]},"response_time_ms":{"type":"number","minimum":0},"title":{"anyOf":[{"type":"string","maxLength":400},{"type":"null"}]},"description":{"anyOf":[{"type":"string","maxLength":400},{"type":"null"}]},"canonical":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]},"headings":{"maxItems":10,"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"level":{"type":"integer","minimum":1,"maximum":6},"text":{"type":"string","maxLength":160}},"required":["level","text"],"x-bisibility-name":"SiteAuditHeading"}},"h1_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"indexable":{"type":"boolean"},"robots":{"anyOf":[{"type":"string","maxLength":400},{"type":"null"}]},"internal_link_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"external_link_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"internal_links":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":1024}},"image_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"missing_alt_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"issues":{"maxItems":20,"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string","maxLength":64},"severity":{"type":"string","enum":["error","warning","info"],"x-bisibility-enum":"open","x-bisibility-name":"SiteAuditSeverity"},"message":{"type":"string","maxLength":400}},"required":["code","severity","message"],"x-bisibility-name":"SiteAuditIssue"}}},"required":["url","final_url","status","response_time_ms","title","description","canonical","headings","h1_count","indexable","robots","internal_link_count","external_link_count","internal_links","image_count","missing_alt_count","issues"],"x-bisibility-name":"SiteAuditPage"}},"summary":{"type":"object","additionalProperties":false,"properties":{"pages":{"type":"integer","minimum":0,"maximum":9007199254740991},"errors":{"type":"integer","minimum":0,"maximum":9007199254740991},"warnings":{"type":"integer","minimum":0,"maximum":9007199254740991},"indexable":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["pages","errors","warnings","indexable"],"x-bisibility-name":"SiteAuditSummary"},"limitations":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":500}}},"required":["version","target","started_at","completed_at","state","stop_reason","limits","requests","pages","summary","limitations"],"x-bisibility-name":"SiteAuditResult"}},"required":["id","created_at","cached","result"]}},"required":["data"]}}},"description":"Project-scoped result"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project role or token scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project or report not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Provider unavailable or analysis cost cap exceeded"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"}},{"in":"path","name":"report_id","required":true,"schema":{"example":"agr_a00000000000000000000000","pattern":"^agr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"agr"}},{"$ref":"#/components/parameters/SourceHeader"}],"x-bisibility-sdk":{"group":"siteAudits","method":"get","legacy":{"ts":["getSiteAudit"],"python":["get_site_audit"],"go":["GetSiteAudit"]}},"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"tags":["research-reports"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/topics":{"get":{"operationId":"listAiTrackingTopics","summary":"List AI tracking topics","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"query","name":"limit","required":false,"schema":{"description":"Page size, at most 100.","type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"cursor","required":false,"schema":{"description":"Opaque cursor from the previous response.","type":"string","maxLength":512}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^ait_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ait"},"name":{"type":"string"},"description":{"type":["string","null"]},"paused_at":{"type":["string","null"],"format":"date-time"},"archived_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","description","paused_at","archived_at","created_at","updated_at"],"additionalProperties":false}},"meta":{"type":"object","properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"additionalProperties":false,"x-bisibility-name":"AiTrackingPageMeta"}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"createAiTrackingTopic","summary":"Create an AI tracking topic","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","maxLength":200}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paused":{"description":"Pause or resume future planning for this topic without changing historical samples.","type":"boolean"},"name":{"type":"string","minLength":1,"maxLength":200,"description":"Human-readable topic name."},"description":{"description":"Optional topic description.","anyOf":[{"type":"string","maxLength":4000},{"type":"null"}]}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^ait_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ait"},"name":{"type":"string"},"description":{"type":["string","null"]},"paused_at":{"type":["string","null"],"format":"date-time"},"archived_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","description","paused_at","archived_at","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/topics/{topic_id}":{"patch":{"operationId":"updateAiTrackingTopic","summary":"Update an AI tracking topic","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"path","name":"topic_id","required":true,"schema":{"description":"Public topic ID scoped to this project.","type":"string","pattern":"^ait_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ait"}},{"in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","maxLength":200}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paused":{"description":"Pause or resume future planning for this topic without changing historical samples.","type":"boolean"},"name":{"type":"string","minLength":1,"maxLength":200,"description":"Human-readable topic name."},"description":{"description":"Optional topic description.","anyOf":[{"type":"string","maxLength":4000},{"type":"null"}]}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^ait_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ait"},"name":{"type":"string"},"description":{"type":["string","null"]},"paused_at":{"type":["string","null"],"format":"date-time"},"archived_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","description","paused_at","archived_at","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}},"delete":{"operationId":"archiveAiTrackingTopic","summary":"Archive an AI tracking topic","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"path","name":"topic_id","required":true,"schema":{"description":"Public topic ID scoped to this project.","type":"string","pattern":"^ait_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ait"}},{"in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","maxLength":200}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^ait_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ait"},"name":{"type":"string"},"description":{"type":["string","null"]},"paused_at":{"type":["string","null"],"format":"date-time"},"archived_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","description","paused_at","archived_at","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/prompts":{"get":{"operationId":"listAiTrackingPrompts","summary":"List AI tracking prompts","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"query","name":"limit","required":false,"schema":{"description":"Page size, at most 100.","type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"cursor","required":false,"schema":{"description":"Opaque cursor from the previous response.","type":"string","maxLength":512}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiTrackingPromptPage"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"x-bisibility-idempotency":"none","x-bisibility-pagination":{"items":"data","max_limit":100,"next":"meta.next_cursor","style":"cursor"},"x-bisibility-sdk":{"group":"aiTracking.prompts","legacy":{"go":["ListAITrackingPrompts"],"python":["list_ai_tracking_prompts"],"ts":["listAiTrackingPrompts"]},"method":"list"},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"createAiTrackingPrompt","summary":"Create an AI tracking prompt","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","maxLength":200}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"generation_reference":{"description":"Trusted model generation provenance, verified against the completed project generation.","type":"object","properties":{"generation_id":{"description":"Trusted completed project generation public ID.","type":"string","pattern":"^asg_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"asg"},"draft_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Original generated draft UUID; edits retain this trusted reference."}},"required":["generation_id","draft_id"],"additionalProperties":false},"provider_dataset_reference":{"description":"Trusted provider dataset provenance, validated against the project report.","type":"object","properties":{"report_id":{"description":"Trusted project AI visibility dataset report public ID.","type":"string","pattern":"^agr_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"agr"},"row_index":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Verified observed-dataset row index in the stored report."}},"required":["report_id","row_index"],"additionalProperties":false},"text":{"type":"string","minLength":1,"maxLength":64000,"description":"Prompt text; updates create a new immutable revision."},"category":{"description":"Prompt intent captured in its immutable revision.","type":"string","enum":["neutral","comparative","branded"]},"paused":{"description":"Pause or resume future planning without altering historical samples.","type":"boolean"},"topic_id":{"anyOf":[{"description":"Public topic ID scoped to this project.","type":"string","pattern":"^ait_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ait"},{"type":"null"}]},"label":{"description":"Optional display label.","anyOf":[{"type":"string","maxLength":200},{"type":"null"}]}},"required":["text"],"additionalProperties":false}}}},"responses":{"201":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AiTrackingPrompt"}},"required":["data"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/prompts/{prompt_id}":{"patch":{"operationId":"updateAiTrackingPrompt","summary":"Revise an AI tracking prompt","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"path","name":"prompt_id","required":true,"schema":{"description":"Public prompt ID scoped to this project.","type":"string","pattern":"^aip_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"aip"}},{"in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","maxLength":200}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"generation_reference":{"description":"Trusted model generation provenance, verified against the completed project generation.","type":"object","properties":{"generation_id":{"description":"Trusted completed project generation public ID.","type":"string","pattern":"^asg_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"asg"},"draft_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Original generated draft UUID; edits retain this trusted reference."}},"required":["generation_id","draft_id"],"additionalProperties":false},"provider_dataset_reference":{"description":"Trusted provider dataset provenance, validated against the project report.","type":"object","properties":{"report_id":{"description":"Trusted project AI visibility dataset report public ID.","type":"string","pattern":"^agr_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"agr"},"row_index":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Verified observed-dataset row index in the stored report."}},"required":["report_id","row_index"],"additionalProperties":false},"text":{"type":"string","minLength":1,"maxLength":64000,"description":"Prompt text; updates create a new immutable revision."},"category":{"description":"Prompt intent captured in its immutable revision.","type":"string","enum":["neutral","comparative","branded"]},"paused":{"description":"Pause or resume future planning without altering historical samples.","type":"boolean"},"topic_id":{"anyOf":[{"description":"Public topic ID scoped to this project.","type":"string","pattern":"^ait_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ait"},{"type":"null"}]},"label":{"description":"Optional display label.","anyOf":[{"type":"string","maxLength":200},{"type":"null"}]}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AiTrackingPrompt"}},"required":["data"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}},"delete":{"operationId":"archiveAiTrackingPrompt","summary":"Archive an AI tracking prompt","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"path","name":"prompt_id","required":true,"schema":{"description":"Public prompt ID scoped to this project.","type":"string","pattern":"^aip_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"aip"}},{"in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","maxLength":200}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AiTrackingPrompt"}},"required":["data"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/schedules":{"get":{"operationId":"listAiTrackingSchedules","summary":"List AI tracking schedules","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"query","name":"limit","required":false,"schema":{"description":"Page size, at most 100.","type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"cursor","required":false,"schema":{"description":"Opaque cursor from the previous response.","type":"string","maxLength":512}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^ais_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ais"},"name":{"type":"string"},"cron":{"type":"string"},"timezone":{"type":"string"},"enabled":{"type":"boolean"},"archived_at":{"type":["string","null"],"format":"date-time"},"next_run_at":{"type":["string","null"],"format":"date-time"},"configuration":{"type":"object","properties":{"configurations":{"type":"array","items":{"type":"object","properties":{"provider":{"const":"dataforseo"},"endpoint":{"type":"string"},"engine":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingEngine","type":"string","enum":["chat_gpt","gemini","claude","perplexity","google"]},"source":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingSource","type":"string","enum":["consumer_scrape","model_api","google_aio"]},"model":{"type":["string","null"]},"parameters":{"type":"object","additionalProperties":true}},"required":["provider","endpoint","engine","source","model","parameters"],"additionalProperties":false,"x-bisibility-name":"AiTrackingConfiguration"}},"prompt_ids":{"type":"array","items":{"type":"string","pattern":"^aip_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"aip"}}},"required":["configurations","prompt_ids"],"additionalProperties":false},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","cron","timezone","enabled","archived_at","next_run_at","configuration","created_at","updated_at"],"additionalProperties":false}},"meta":{"type":"object","properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"additionalProperties":false,"x-bisibility-name":"AiTrackingPageMeta"}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"createAiTrackingSchedule","summary":"Create an AI tracking schedule","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","maxLength":200}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200,"description":"Human-readable schedule name."},"cron":{"type":"string","minLength":1,"maxLength":200,"description":"Cron recurrence evaluated in the schedule timezone."},"timezone":{"type":"string","minLength":1,"maxLength":100,"description":"IANA timezone for this schedule."},"enabled":{"default":false,"description":"Schedules default to disabled; no paid baseline or missed-run catch-up.","type":"boolean"},"consent":{"description":"Explicit acceptance of paid recurring work; the API requires true when enabling a schedule or changing configuration while enabled.","type":"boolean"},"configuration":{"type":"object","properties":{"prompt_ids":{"minItems":1,"maxItems":100,"type":"array","items":{"description":"Public prompt ID scoped to this project.","type":"string","pattern":"^aip_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"aip"},"description":"Active public prompt IDs to observe; each run captures immutable revisions."},"configurations":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"provider":{"type":"string","const":"dataforseo","description":"Provider that supplies this observation."},"endpoint":{"type":"string","minLength":1,"maxLength":256,"description":"Capability-supported provider endpoint."},"engine":{"type":"string","enum":["chat_gpt","gemini","claude","perplexity","google"],"description":"Consumer engine, distinct from the model and observation source."},"source":{"type":"string","enum":["consumer_scrape","model_api","google_aio"],"description":"Observation mechanism; model API responses are synthetic tests."},"model":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"description":"Requested model, or null when unavailable for this source."},"parameters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/createAiTrackingSchedule___schema0"},"description":"Requested provider parameters; capability and fresh price checks fail closed."}},"required":["provider","endpoint","engine","source","model","parameters"],"additionalProperties":false},"description":"Exact observation configurations to review before paid launch."},"credential_connection_id":{"description":"Provider connection returned by the reviewed preview.","type":"string","pattern":"^conn_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"conn"},"credential_version":{"type":"string","minLength":1,"description":"Credential identity version returned by preview."},"budget_revision":{"type":"string","minLength":1,"description":"Budget revision returned by preview."},"consent_revision":{"type":"string","minLength":1,"description":"Consent identity returned by preview."},"deadline":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"UTC deadline after which work must stop."},"consent":{"type":"boolean","const":true,"description":"Explicit acceptance of paid provider work for this reviewed configuration."},"schedule_id":{"description":"Public schedule ID scoped to this project.","type":"string","pattern":"^ais_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ais"},"planned_at":{"description":"UTC scheduled occurrence; supplied together with schedule_id.","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["prompt_ids","configurations","credential_connection_id","credential_version","budget_revision","consent_revision","deadline","consent"],"additionalProperties":false,"description":"Reviewed immutable configuration for each scheduled occurrence."},"next_run_at":{"description":"Next planned UTC occurrence, when provided.","anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["name","cron","timezone","configuration"],"additionalProperties":false}}}},"responses":{"201":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^ais_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ais"},"name":{"type":"string"},"cron":{"type":"string"},"timezone":{"type":"string"},"enabled":{"type":"boolean"},"archived_at":{"type":["string","null"],"format":"date-time"},"next_run_at":{"type":["string","null"],"format":"date-time"},"configuration":{"type":"object","properties":{"configurations":{"type":"array","items":{"type":"object","properties":{"provider":{"const":"dataforseo"},"endpoint":{"type":"string"},"engine":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingEngine","type":"string","enum":["chat_gpt","gemini","claude","perplexity","google"]},"source":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingSource","type":"string","enum":["consumer_scrape","model_api","google_aio"]},"model":{"type":["string","null"]},"parameters":{"type":"object","additionalProperties":true}},"required":["provider","endpoint","engine","source","model","parameters"],"additionalProperties":false,"x-bisibility-name":"AiTrackingConfiguration"}},"prompt_ids":{"type":"array","items":{"type":"string","pattern":"^aip_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"aip"}}},"required":["configurations","prompt_ids"],"additionalProperties":false},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","cron","timezone","enabled","archived_at","next_run_at","configuration","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"paid","timing":"deferred"}}},"/projects/{project_id}/ai-tracking/schedules/{schedule_id}":{"patch":{"operationId":"updateAiTrackingSchedule","summary":"Update an AI tracking schedule","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"path","name":"schedule_id","required":true,"schema":{"description":"Public schedule ID scoped to this project.","type":"string","pattern":"^ais_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ais"}},{"in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","maxLength":200}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200,"description":"Human-readable schedule name."},"cron":{"type":"string","minLength":1,"maxLength":200,"description":"Cron recurrence evaluated in the schedule timezone."},"timezone":{"type":"string","minLength":1,"maxLength":100,"description":"IANA timezone for this schedule."},"enabled":{"type":"boolean","description":"Whether future scheduled occurrences are enabled."},"consent":{"description":"Explicit acceptance of paid recurring work; the API requires true when enabling a schedule or changing configuration while enabled.","type":"boolean"},"configuration":{"type":"object","properties":{"prompt_ids":{"minItems":1,"maxItems":100,"type":"array","items":{"description":"Public prompt ID scoped to this project.","type":"string","pattern":"^aip_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"aip"},"description":"Active public prompt IDs to observe; each run captures immutable revisions."},"configurations":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"provider":{"type":"string","const":"dataforseo","description":"Provider that supplies this observation."},"endpoint":{"type":"string","minLength":1,"maxLength":256,"description":"Capability-supported provider endpoint."},"engine":{"type":"string","enum":["chat_gpt","gemini","claude","perplexity","google"],"description":"Consumer engine, distinct from the model and observation source."},"source":{"type":"string","enum":["consumer_scrape","model_api","google_aio"],"description":"Observation mechanism; model API responses are synthetic tests."},"model":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"description":"Requested model, or null when unavailable for this source."},"parameters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/updateAiTrackingSchedule___schema0"},"description":"Requested provider parameters; capability and fresh price checks fail closed."}},"required":["provider","endpoint","engine","source","model","parameters"],"additionalProperties":false},"description":"Exact observation configurations to review before paid launch."},"credential_connection_id":{"description":"Provider connection returned by the reviewed preview.","type":"string","pattern":"^conn_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"conn"},"credential_version":{"type":"string","minLength":1,"description":"Credential identity version returned by preview."},"budget_revision":{"type":"string","minLength":1,"description":"Budget revision returned by preview."},"consent_revision":{"type":"string","minLength":1,"description":"Consent identity returned by preview."},"deadline":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"UTC deadline after which work must stop."},"consent":{"type":"boolean","const":true,"description":"Explicit acceptance of paid provider work for this reviewed configuration."},"schedule_id":{"description":"Public schedule ID scoped to this project.","type":"string","pattern":"^ais_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ais"},"planned_at":{"description":"UTC scheduled occurrence; supplied together with schedule_id.","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["prompt_ids","configurations","credential_connection_id","credential_version","budget_revision","consent_revision","deadline","consent"],"additionalProperties":false,"description":"Reviewed immutable configuration for each scheduled occurrence."},"next_run_at":{"description":"Next planned UTC occurrence, when provided.","anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^ais_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ais"},"name":{"type":"string"},"cron":{"type":"string"},"timezone":{"type":"string"},"enabled":{"type":"boolean"},"archived_at":{"type":["string","null"],"format":"date-time"},"next_run_at":{"type":["string","null"],"format":"date-time"},"configuration":{"type":"object","properties":{"configurations":{"type":"array","items":{"type":"object","properties":{"provider":{"const":"dataforseo"},"endpoint":{"type":"string"},"engine":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingEngine","type":"string","enum":["chat_gpt","gemini","claude","perplexity","google"]},"source":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingSource","type":"string","enum":["consumer_scrape","model_api","google_aio"]},"model":{"type":["string","null"]},"parameters":{"type":"object","additionalProperties":true}},"required":["provider","endpoint","engine","source","model","parameters"],"additionalProperties":false,"x-bisibility-name":"AiTrackingConfiguration"}},"prompt_ids":{"type":"array","items":{"type":"string","pattern":"^aip_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"aip"}}},"required":["configurations","prompt_ids"],"additionalProperties":false},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","cron","timezone","enabled","archived_at","next_run_at","configuration","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"paid","timing":"deferred"}},"delete":{"operationId":"archiveAiTrackingSchedule","summary":"Archive an AI tracking schedule","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"path","name":"schedule_id","required":true,"schema":{"description":"Public schedule ID scoped to this project.","type":"string","pattern":"^ais_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ais"}},{"in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","maxLength":200}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^ais_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ais"},"name":{"type":"string"},"cron":{"type":"string"},"timezone":{"type":"string"},"enabled":{"type":"boolean"},"archived_at":{"type":["string","null"],"format":"date-time"},"next_run_at":{"type":["string","null"],"format":"date-time"},"configuration":{"type":"object","properties":{"configurations":{"type":"array","items":{"type":"object","properties":{"provider":{"const":"dataforseo"},"endpoint":{"type":"string"},"engine":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingEngine","type":"string","enum":["chat_gpt","gemini","claude","perplexity","google"]},"source":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingSource","type":"string","enum":["consumer_scrape","model_api","google_aio"]},"model":{"type":["string","null"]},"parameters":{"type":"object","additionalProperties":true}},"required":["provider","endpoint","engine","source","model","parameters"],"additionalProperties":false,"x-bisibility-name":"AiTrackingConfiguration"}},"prompt_ids":{"type":"array","items":{"type":"string","pattern":"^aip_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"aip"}}},"required":["configurations","prompt_ids"],"additionalProperties":false},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","cron","timezone","enabled","archived_at","next_run_at","configuration","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/runs/preview":{"post":{"operationId":"previewAiTrackingRun","summary":"Preview an AI tracking run","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"}},{"in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","maxLength":200}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","x-bisibility-name":"AiTrackingRunPreviewInput","properties":{"prompt_ids":{"type":"array","items":{"example":"aip_a00000000000000000000000","pattern":"^aip_[a-z][a-z0-9]{23}$","type":"string","minLength":1,"description":"Public prompt ID resolved within the project.","x-bisibility-public-id":"aip"},"minItems":1,"maxItems":100},"configurations":{"type":"array","items":{"type":"object","x-bisibility-name":"AiTrackingConfigurationInput","properties":{"provider":{"const":"dataforseo","type":"string"},"endpoint":{"type":"string","minLength":1,"maxLength":256},"engine":{"type":"string","enum":["chat_gpt","gemini","claude","perplexity","google"],"x-bisibility-enum":"closed","x-bisibility-name":"AiTrackingEngineInput"},"source":{"type":"string","enum":["consumer_scrape","model_api","google_aio"],"x-bisibility-enum":"closed","x-bisibility-name":"AiTrackingSourceInput"},"model":{"type":["string","null"],"maxLength":256},"parameters":{"type":"object","additionalProperties":true,"description":"Provider parameters; values are arbitrary JSON."}},"required":["provider","endpoint","engine","source","model","parameters"]},"minItems":1,"maxItems":20},"credential_connection_id":{"example":"conn_a00000000000000000000000","pattern":"^conn_[a-z][a-z0-9]{23}$","type":"string","description":"Optional public connection ID. Empty or omitted selects the default connection.","x-bisibility-public-id":"conn"}},"required":["prompt_ids","configurations"]}}}},"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiTrackingRunPreviewResponse"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"x-bisibility-sdk":{"group":"aiTracking.runs","method":"preview","legacy":{"ts":["previewAiTrackingRun"],"python":["preview_ai_tracking_run"],"go":["PreviewAITrackingRun"]}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/runs":{"post":{"operationId":"createAiTrackingRun","summary":"Queue an AI tracking run","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"}},{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","maxLength":200,"minLength":1}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","x-bisibility-name":"AiTrackingRunCreateInput","description":"Queues paid work with explicit consent. Credential, budget and consent revisions must match a fresh preview. Manual runs require at least one prompt. schedule_id and planned_at must be supplied together. No per-request max_cost_cents is supported; admission checks the project provider budget.","properties":{"prompt_ids":{"type":"array","items":{"example":"aip_a00000000000000000000000","pattern":"^aip_[a-z][a-z0-9]{23}$","type":"string","minLength":1,"description":"Public prompt ID resolved within the project.","x-bisibility-public-id":"aip"},"minItems":1,"maxItems":100},"configurations":{"type":"array","items":{"type":"object","x-bisibility-name":"AiTrackingConfigurationInput","properties":{"provider":{"const":"dataforseo","type":"string"},"endpoint":{"type":"string","minLength":1,"maxLength":256},"engine":{"type":"string","enum":["chat_gpt","gemini","claude","perplexity","google"],"x-bisibility-enum":"closed","x-bisibility-name":"AiTrackingEngineInput"},"source":{"type":"string","enum":["consumer_scrape","model_api","google_aio"],"x-bisibility-enum":"closed","x-bisibility-name":"AiTrackingSourceInput"},"model":{"type":["string","null"],"maxLength":256},"parameters":{"type":"object","additionalProperties":true,"description":"Provider parameters; values are arbitrary JSON."}},"required":["provider","endpoint","engine","source","model","parameters"]},"minItems":1,"maxItems":20},"credential_connection_id":{"example":"conn_a00000000000000000000000","pattern":"^conn_[a-z][a-z0-9]{23}$","type":"string","minLength":1,"description":"Public connection ID resolved within the project.","x-bisibility-public-id":"conn"},"credential_version":{"type":"string","minLength":1},"budget_revision":{"type":"string","minLength":1},"consent_revision":{"type":"string","minLength":1},"consent":{"type":"boolean","const":true},"deadline":{"type":"string","format":"date-time"},"schedule_id":{"example":"ais_a00000000000000000000000","pattern":"^ais_[a-z][a-z0-9]{23}$","type":"string","description":"Public schedule ID resolved within the project.","x-bisibility-public-id":"ais"},"planned_at":{"type":"string","format":"date-time"},"retry_of_run_id":{"type":"string","description":"Compatibility plan field forwarded to the planner."}},"required":["prompt_ids","configurations","credential_connection_id","credential_version","budget_revision","consent_revision","deadline","consent"]}}}},"responses":{"201":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiTrackingRunResponse"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"x-bisibility-sdk":{"group":"aiTracking.runs","method":"create","legacy":{"ts":["createAiTrackingRun"],"python":["create_ai_tracking_run"],"go":["CreateAITrackingRun"]}},"x-bisibility-idempotency":"required","x-bisibility-pagination":{"style":"none"},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"paid","timing":"deferred"}},"get":{"operationId":"listAiTrackingRuns","summary":"List AI tracking runs","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"query","name":"limit","required":false,"schema":{"description":"Page size, at most 100.","type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"cursor","required":false,"schema":{"description":"Opaque cursor from the previous response.","type":"string","maxLength":512}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiTrackingRunPage"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/runs/{run_id}":{"get":{"operationId":"getAiTrackingRun","summary":"Get an AI tracking run","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"}},{"in":"path","name":"run_id","required":true,"schema":{"example":"air_a00000000000000000000000","pattern":"^air_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"air"}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiTrackingRunResponse"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"x-bisibility-sdk":{"group":"aiTracking.runs","method":"get","legacy":{"ts":["getAiTrackingRun"],"python":["get_ai_tracking_run"],"go":["GetAITrackingRun"]}},"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/runs/{run_id}/samples":{"get":{"operationId":"listAiTrackingSamples","summary":"List AI tracking samples","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"}},{"in":"path","name":"run_id","required":true,"schema":{"example":"air_a00000000000000000000000","pattern":"^air_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"air"}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"in":"query","name":"cursor","required":false,"schema":{"type":"string","maxLength":512}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiTrackingSamplePage"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"x-bisibility-sdk":{"group":"aiTracking.runs","method":"samples","legacy":{"ts":["listAiTrackingSamples"],"python":["list_ai_tracking_samples"],"go":["ListAITrackingSamples"]}},"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"cursor","items":"data","next":"meta.next_cursor","max_limit":100},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/runs/{run_id}/cancel":{"post":{"operationId":"cancelAiTrackingRun","summary":"Cancel an AI tracking run","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"path","name":"run_id","required":true,"schema":{"description":"Public tracking run ID scoped to this project.","type":"string","pattern":"^air_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"air"}},{"in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","maxLength":200}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AiTrackingRun"}},"required":["data"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/runs/{run_id}/retry":{"post":{"operationId":"retryAiTrackingRun","summary":"Retry an AI tracking run","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"path","name":"run_id","required":true,"schema":{"description":"Public tracking run ID scoped to this project.","type":"string","pattern":"^air_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"air"}},{"in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","maxLength":200}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"prompt_ids":{"minItems":1,"maxItems":100,"type":"array","items":{"description":"Public prompt ID scoped to this project.","type":"string","pattern":"^aip_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"aip"},"description":"Active public prompt IDs to observe; each run captures immutable revisions."},"configurations":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"provider":{"type":"string","const":"dataforseo","description":"Provider that supplies this observation."},"endpoint":{"type":"string","minLength":1,"maxLength":256,"description":"Capability-supported provider endpoint."},"engine":{"type":"string","enum":["chat_gpt","gemini","claude","perplexity","google"],"description":"Consumer engine, distinct from the model and observation source."},"source":{"type":"string","enum":["consumer_scrape","model_api","google_aio"],"description":"Observation mechanism; model API responses are synthetic tests."},"model":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"description":"Requested model, or null when unavailable for this source."},"parameters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/retryAiTrackingRun___schema0"},"description":"Requested provider parameters; capability and fresh price checks fail closed."}},"required":["provider","endpoint","engine","source","model","parameters"],"additionalProperties":false},"description":"Exact observation configurations to review before paid launch."},"credential_connection_id":{"description":"Provider connection returned by the reviewed preview.","type":"string","pattern":"^conn_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"conn"},"credential_version":{"type":"string","minLength":1,"description":"Credential identity version returned by preview."},"budget_revision":{"type":"string","minLength":1,"description":"Budget revision returned by preview."},"consent_revision":{"type":"string","minLength":1,"description":"Consent identity returned by preview."},"deadline":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"UTC deadline after which work must stop."},"consent":{"type":"boolean","const":true,"description":"Explicit acceptance of paid provider work for this reviewed configuration."},"schedule_id":{"description":"Public schedule ID scoped to this project.","type":"string","pattern":"^ais_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"ais"},"planned_at":{"description":"UTC scheduled occurrence; supplied together with schedule_id.","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["prompt_ids","configurations","credential_connection_id","credential_version","budget_revision","consent_revision","deadline","consent"],"additionalProperties":false}}}},"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AiTrackingRun"}},"required":["data"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"paid","timing":"deferred"}}},"/projects/{project_id}/ai-tracking/history":{"get":{"operationId":"getAiTrackingHistory","summary":"Get AI tracking history","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"query","name":"limit","required":false,"schema":{"description":"Page size, at most 100.","type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"cursor","required":false,"schema":{"description":"Opaque cursor from the previous response.","type":"string","maxLength":512}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiTrackingRunPage"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"x-bisibility-idempotency":"none","x-bisibility-pagination":{"items":"data","max_limit":100,"next":"meta.next_cursor","style":"cursor"},"x-bisibility-sdk":{"group":"aiTracking","legacy":{"go":["GetAITrackingHistory"],"python":["get_ai_tracking_history"],"ts":["getAiTrackingHistory"]},"method":"history"},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/trends":{"get":{"operationId":"getAiTrackingTrends","summary":"Compare AI tracking periods","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"query","name":"previous_run_id","required":false,"schema":{"type":"string","pattern":"^air_[a-z][a-z0-9]{23}$","description":"Public tracking run ID scoped to this project.","x-bisibility-public-id":"air"}},{"in":"query","name":"run_id","required":true,"schema":{"type":"string","pattern":"^air_[a-z][a-z0-9]{23}$","description":"Public tracking run ID scoped to this project.","x-bisibility-public-id":"air"}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiTrackingTrendsResponse"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"x-bisibility-sdk":{"group":"aiTracking","legacy":{"go":["GetAITrackingTrends"],"python":["get_ai_tracking_trends"],"ts":["getAiTrackingTrends"]},"method":"trends"},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/export":{"get":{"operationId":"exportAiTrackingEvidence","summary":"Export AI tracking evidence","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"query","name":"run_id","required":true,"schema":{"description":"Public tracking run ID scoped to this project.","type":"string","pattern":"^air_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"air"}},{"in":"query","name":"limit","required":false,"schema":{"description":"Page size, at most 100.","type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"cursor","required":false,"schema":{"description":"Opaque cursor from the previous response.","type":"string","maxLength":512}},{"in":"query","name":"format","required":false,"schema":{"default":"json","description":"JSON evidence with cursor metadata, or one CSV evidence page.","type":"string","enum":["json","csv"]}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^asm_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"asm"},"measurement":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingMeasurement","type":"string","enum":["answer_present","aio_not_present","partial","unavailable","failed","unknown"]},"source":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingSource","type":"string","enum":["consumer_scrape","model_api","google_aio"]},"engine":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingEngine","type":"string","enum":["chat_gpt","gemini","claude","perplexity","google"]},"prompt":{"type":"string"},"prompt_revision_id":{"type":"string","pattern":"^apr_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"apr"},"evidence":{"oneOf":[{"type":"object","properties":{"answer_text":{"type":["string","null"]},"raw":{"$ref":"#/components/schemas/AiTrackingRawEvidence"},"answer_truncated":{"type":"boolean"},"raw_truncated":{"type":"boolean"},"search_results":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"title":{"type":["string","null"]},"position":{"type":"integer","minimum":0}},"required":["url","title","position"],"additionalProperties":false,"x-bisibility-name":"AiTrackingCitation"}},"requested_locale":{"type":["string","null"]},"effective_locale":{"type":["string","null"]},"locale_mechanism":{"type":["string","null"]},"requested_model":{"type":["string","null"]},"actual_model":{"type":["string","null"]},"provider_status":{"type":["string","null"]},"observed_at":{"type":["string","null"],"format":"date-time"},"fetched_at":{"type":"string","format":"date-time"},"recorded_source":{"type":"string","enum":["fresh","cache"],"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingRecordedSource","description":"Cached evidence keeps its original observation time and cannot become a fresh tracker sample."}},"required":["answer_text","raw","answer_truncated","raw_truncated","search_results","requested_locale","effective_locale","locale_mechanism","requested_model","actual_model","provider_status","observed_at","fetched_at","recorded_source"],"additionalProperties":false},{"type":"null"}],"x-bisibility-name":"AiTrackingEvidence"},"citations":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"title":{"type":["string","null"]},"position":{"type":"integer","minimum":0}},"required":["url","title","position"],"additionalProperties":false,"x-bisibility-name":"AiTrackingCitation"}},"cost_usd":{"x-bisibility-money":"usd_decimal","type":["string","null"],"pattern":"^\\d+(?:\\.\\d+)?$","description":"Decimal USD string from the provider cost receipt, or null when unknown. Never an invented zero."},"cost_state":{"x-bisibility-enum":"open","x-bisibility-name":"AiTrackingCostState","type":"string","enum":["unknown","pending","confirmed","refund_pending","derived"]}},"required":["id","measurement","source","engine","prompt","prompt_revision_id","evidence","citations","cost_usd","cost_state"],"additionalProperties":false}},"run_id":{"type":"string","pattern":"^air_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"air"},"next_cursor":{"type":["string","null"]},"scope":{"type":"object","properties":{"complete":{"type":"boolean"},"max_pages":{"type":"integer","minimum":1},"loaded":{"type":"integer","minimum":0},"resumed":{"type":"boolean"}},"required":["complete","max_pages","loaded","resumed"],"additionalProperties":false}},"required":["items","run_id","next_cursor"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}},"text/csv":{"schema":{"type":"string","description":"Bounded formula-safe evidence CSV. X-Next-Cursor indicates more retained evidence."}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/suggestions":{"post":{"operationId":"suggestAiTrackingPrompts","summary":"Suggest AI tracking prompts","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","maxLength":200}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"input_snapshot":{"type":"object","properties":{"context":{"type":"object","properties":{"business":{"type":"string"},"audience":{"type":"string"},"products":{"type":"string"},"goals":{"type":"string"},"agent_rules":{"type":"string"}},"required":["business","audience","products","goals","agent_rules"],"additionalProperties":false},"competitors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^cmp_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"cmp"},"label":{"type":["string","null"]},"domain":{"type":"string"}},"required":["id","label","domain"],"additionalProperties":false}}},"required":["context","competitors"],"additionalProperties":false},"drafts":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"category":{"type":"string","enum":["neutral","comparative","branded"]},"provenance":{"type":"string","enum":["generated_hypothesis","provider_dataset"]},"evidence_ids":{"type":"array","items":{"type":"string"}},"popularity":{"type":["number","null"]},"accepted":{"const":false}},"required":["text","category","provenance","evidence_ids","popularity","accepted"],"additionalProperties":false}},"method":{"type":"string","enum":["context_template_heuristic","manual_fallback"]},"context_updated_at":{"type":["string","null"],"format":"date-time"},"requires_acceptance":{"const":true},"cost_usd":{"const":"0"},"limitations":{"type":"array","items":{"type":"string"}}},"required":["input_snapshot","drafts","method","context_updated_at","requires_acceptance","cost_usd","limitations"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/suggestions/accept":{"post":{"operationId":"acceptAiTrackingSuggestions","summary":"Accept AI tracking suggestions","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Public project ID; membership and token scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","maxLength":200}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"drafts":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"generation_reference":{"description":"Trusted model generation provenance, verified against the completed project generation.","type":"object","properties":{"generation_id":{"description":"Trusted completed project generation public ID.","type":"string","pattern":"^asg_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"asg"},"draft_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Original generated draft UUID; edits retain this trusted reference."}},"required":["generation_id","draft_id"],"additionalProperties":false},"provider_dataset_reference":{"description":"Trusted provider dataset provenance, validated against the project report.","type":"object","properties":{"report_id":{"description":"Trusted project AI visibility dataset report public ID.","type":"string","pattern":"^agr_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"agr"},"row_index":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Verified observed-dataset row index in the stored report."}},"required":["report_id","row_index"],"additionalProperties":false},"text":{"type":"string","minLength":3,"maxLength":4000,"description":"Draft prompt text."},"category":{"type":"string","enum":["neutral","comparative","branded"],"description":"Draft intent category."},"provenance":{"description":"How this draft was obtained; hypotheses are not measured popularity.","type":"string","enum":["generated_hypothesis","provider_dataset","model_generated_hypothesis"]},"evidence_ids":{"description":"Evidence references for a provider dataset draft.","maxItems":30,"type":"array","items":{"type":"string"}},"popularity":{"description":"Measured popularity when supported, otherwise null.","type":"null"},"accepted":{"description":"Unaccepted draft; this operation explicitly saves it.","type":"boolean","const":false}},"required":["text","category"],"additionalProperties":false},"description":"Drafts explicitly accepted for saving; this starts no provider work."}},"required":["drafts"],"additionalProperties":false}}}},"responses":{"201":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"prompts":{"type":"array","items":{"$ref":"#/components/schemas/AiTrackingPrompt"}}},"required":["prompts"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/suggestions/preview":{"post":{"operationId":"aiTrackingSuggestionsPreview","summary":"Preview AI prompt model generation","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Project public ID; read membership and scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","maxLength":200}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"configuration":{"type":"object","properties":{"provider":{"type":"string","const":"dataforseo","description":"Provider used for model generation."},"engine":{"type":"string","const":"chat_gpt","description":"Model API generation engine; these are synthetic hypotheses."},"model":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,119}$","description":"Current model ID from the free AI research catalog."},"language_code":{"type":"string","minLength":2,"maxLength":20,"description":"Requested generation language."},"country_iso_code":{"description":"Optional reviewed market country hint.","type":"string","pattern":"^[A-Z]{2}$"},"max_output_tokens":{"type":"integer","minimum":16,"maximum":4096,"description":"Reviewed output token limit."},"advisory_cost_limit_cents":{"type":"number","exclusiveMinimum":0,"maximum":1000000,"description":"Advisory estimate limit; actual provider cost has no guaranteed maximum."}},"required":["provider","engine","model","language_code","max_output_tokens","advisory_cost_limit_cents"],"additionalProperties":false,"description":"Reviewed model and market configuration."},"input_snapshot":{"type":"object","properties":{"context":{"type":"object","properties":{"business":{"type":"string","description":"Reviewed business description."},"audience":{"type":"string","description":"Reviewed target audience."},"products":{"type":"string","description":"Reviewed products and services."},"goals":{"type":"string","description":"Reviewed business goals."},"agent_rules":{"type":"string","description":"Reviewed business rules, treated as untrusted model input."}},"required":["business","audience","products","goals","agent_rules"],"additionalProperties":false,"description":"All five explicitly reviewed project context fields."},"competitors":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"id":{"description":"Authoritative project competitor public ID.","type":"string","pattern":"^cmp_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"cmp"},"label":{"description":"Reviewed competitor label, or null.","type":["string","null"]},"domain":{"type":"string","minLength":1,"maxLength":253,"description":"Reviewed competitor domain."}},"required":["id","label","domain"],"additionalProperties":false},"description":"Explicitly reviewed authoritative project competitors."}},"required":["context","competitors"],"additionalProperties":false,"description":"Complete reviewed input snapshot, at most 5000 serialized characters; never silently truncated."},"credential_connection_id":{"description":"Optional project provider connection public ID.","type":"string","pattern":"^conn_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"conn"}},"required":["configuration","input_snapshot"],"additionalProperties":false}}}},"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"version":{"const":1},"configuration":{"type":"object","properties":{"provider":{"const":"dataforseo"},"engine":{"const":"chat_gpt"},"model":{"type":"string"},"language_code":{"type":"string"},"max_output_tokens":{"type":"integer","minimum":16,"maximum":4096},"advisory_cost_limit_cents":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"country_iso_code":{"type":"string","pattern":"^[A-Z]{2}$"}},"required":["provider","engine","model","language_code","max_output_tokens","advisory_cost_limit_cents"],"additionalProperties":false},"input_snapshot":{"type":"object","properties":{"context":{"type":"object","properties":{"business":{"type":"string"},"audience":{"type":"string"},"products":{"type":"string"},"goals":{"type":"string"},"agent_rules":{"type":"string"}},"required":["business","audience","products","goals","agent_rules"],"additionalProperties":false},"competitors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^cmp_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"cmp"},"label":{"type":["string","null"]},"domain":{"type":"string"}},"required":["id","label","domain"],"additionalProperties":false}}},"required":["context","competitors"],"additionalProperties":false},"snapshot_hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"estimated_cost_cents":{"type":"number","exclusiveMinimum":0},"estimate_kind":{"const":"forecast"},"is_guaranteed_maximum":{"const":false},"credential_connection_id":{"type":"string","pattern":"^conn_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"conn"},"credential_version":{"type":"string"},"budget_revision":{"type":"string"},"consent_revision":{"type":"string"},"expires_at":{"type":"string","format":"date-time"},"limitations":{"type":"array","items":{"type":"string"}}},"required":["version","configuration","input_snapshot","snapshot_hash","estimated_cost_cents","estimate_kind","is_guaranteed_maximum","credential_connection_id","credential_version","budget_revision","consent_revision","expires_at","limitations"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ai-tracking/suggestions/generate":{"post":{"operationId":"aiTrackingSuggestionsGenerate","summary":"Generate AI prompt hypotheses","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"description":"Project public ID; write membership and scope are enforced.","type":"string","pattern":"^prj_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"prj"}},{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","maxLength":200,"format":"uuid"}},{"$ref":"#/components/parameters/SourceHeader"}],"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"preview":{"type":"object","properties":{"configuration":{"type":"object","properties":{"provider":{"type":"string","const":"dataforseo","description":"Provider used for model generation."},"engine":{"type":"string","const":"chat_gpt","description":"Model API generation engine; these are synthetic hypotheses."},"model":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,119}$","description":"Current model ID from the free AI research catalog."},"language_code":{"type":"string","minLength":2,"maxLength":20,"description":"Requested generation language."},"country_iso_code":{"description":"Optional reviewed market country hint.","type":"string","pattern":"^[A-Z]{2}$"},"max_output_tokens":{"type":"integer","minimum":16,"maximum":4096,"description":"Reviewed output token limit."},"advisory_cost_limit_cents":{"type":"number","exclusiveMinimum":0,"maximum":1000000,"description":"Advisory estimate limit; actual provider cost has no guaranteed maximum."}},"required":["provider","engine","model","language_code","max_output_tokens","advisory_cost_limit_cents"],"additionalProperties":false,"description":"Reviewed model and market configuration."},"input_snapshot":{"type":"object","properties":{"context":{"type":"object","properties":{"business":{"type":"string","description":"Reviewed business description."},"audience":{"type":"string","description":"Reviewed target audience."},"products":{"type":"string","description":"Reviewed products and services."},"goals":{"type":"string","description":"Reviewed business goals."},"agent_rules":{"type":"string","description":"Reviewed business rules, treated as untrusted model input."}},"required":["business","audience","products","goals","agent_rules"],"additionalProperties":false,"description":"All five explicitly reviewed project context fields."},"competitors":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"id":{"description":"Authoritative project competitor public ID.","type":"string","pattern":"^cmp_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"cmp"},"label":{"description":"Reviewed competitor label, or null.","type":["string","null"]},"domain":{"type":"string","minLength":1,"maxLength":253,"description":"Reviewed competitor domain."}},"required":["id","label","domain"],"additionalProperties":false},"description":"Explicitly reviewed authoritative project competitors."}},"required":["context","competitors"],"additionalProperties":false,"description":"Complete reviewed input snapshot, at most 5000 serialized characters; never silently truncated."},"credential_connection_id":{"description":"Connection public ID bound by preview.","type":"string","pattern":"^conn_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"conn"},"version":{"type":"number","const":1,"description":"Frozen generation preview contract version."},"snapshot_hash":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Hash binding the exact reviewed snapshot."},"estimated_cost_cents":{"type":"number","exclusiveMinimum":0,"description":"Advisory forecast in cents."},"estimate_kind":{"type":"string","const":"forecast","description":"Forecast only; not a guaranteed maximum."},"is_guaranteed_maximum":{"type":"boolean","const":false,"description":"Explicit acknowledgement that forecast is not a hard cap."},"credential_version":{"type":"string","minLength":1,"description":"Preview-bound credential version."},"budget_revision":{"type":"string","minLength":1,"description":"Preview-bound budget revision."},"consent_revision":{"type":"string","minLength":1,"description":"Preview-bound consent revision."},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"UTC preview expiry; stale previews require review again."},"limitations":{"maxItems":20,"type":"array","items":{"type":"string"},"description":"Forecast and generation limitations displayed for review."}},"required":["configuration","input_snapshot","credential_connection_id","version","snapshot_hash","estimated_cost_cents","estimate_kind","is_guaranteed_maximum","credential_version","budget_revision","consent_revision","expires_at","limitations"],"additionalProperties":false,"description":"Complete frozen preview returned after explicit review."},"consent":{"type":"boolean","const":true,"description":"Explicit acceptance of model generation cost with no guaranteed maximum."}},"required":["preview","consent"],"additionalProperties":false}}}},"responses":{"200":{"description":"Project-scoped tracking data with retained provenance and explicit unknown measurements.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"generation_id":{"type":"string","pattern":"^asg_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"asg"},"drafts":{"type":"array","items":{"type":"object","properties":{"draft_id":{"type":"string","format":"uuid"},"text":{"type":"string"},"category":{"type":"string","enum":["neutral","comparative","branded"]},"provenance":{"const":"model_generated_hypothesis"},"evidence_ids":{"type":"array","maxItems":0},"popularity":{"type":"null"},"accepted":{"const":false}},"required":["draft_id","text","category","provenance","evidence_ids","popularity","accepted"],"additionalProperties":false}},"cost_usd":{"type":["string","null"],"pattern":"^\\d+(?:\\.\\d+)?$"},"cost_state":{"type":"string","enum":["unknown","confirmed"]},"method":{"const":"model_generated_hypothesis"},"limitations":{"type":"array","items":{"type":"string"}}},"required":["generation_id","drafts","cost_usd","cost_state","method","limitations"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid input or cursor"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Authentication required"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project membership or credential scope denied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project-scoped resource not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency key payload or state conflict; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported source, model, consent or cost policy"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project is read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"tags":["ai-tracking"],"x-bisibility-cost":{"kind":"paid","timing":"inline"}}},"/locations/search":{"get":{"operationId":"searchLocations","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"query","name":"q","required":true,"schema":{"maxLength":120,"minLength":2,"type":"string"}},{"in":"query","name":"country","schema":{"maxLength":120,"type":"string"}},{"in":"query","name":"limit","schema":{"default":20,"maximum":100,"minimum":1,"type":"integer"}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationSuggestionsResponse"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Search supported keyword locations","tags":["keyword-research"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/keyword-metrics":{"post":{"operationId":"getKeywordMetrics","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeywordMetricsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeywordMetricsResponse"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Deployment credits exhausted for a paid provider request"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden, or `byok_required`: the account runs paid provider work only on its own provider keys and none serves this request"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported provider location or provider reauthorization required"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Get keyword metrics","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"description":"Gets or estimates metrics for up to 700 keywords and requires write scope.","tags":["keyword-research"],"x-bisibility-cost":{"kind":"paid","timing":"inline","estimate":{"in":"body","param":"estimate_only","response":"KeywordMetricsResponse"},"max_cost_cents":{"in":"body","minimum":1,"required":false}}}},"/projects/{project_id}/keyword-research":{"get":{"operationId":"researchKeywords","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"in":"query","name":"seed","required":true,"schema":{"maxLength":80,"minLength":1,"type":"string"}},{"in":"query","name":"mode","schema":{"default":"auto","enum":["auto","related","suggestions","ideas"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"KeywordResearchMode"}},{"in":"query","name":"result_limit","schema":{"default":100,"enum":[100,300,500],"type":"integer","x-bisibility-enum":"closed","x-bisibility-name":"KeywordResearchResultLimit"}},{"in":"query","name":"connection_id","schema":{"pattern":"^conn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"conn"}},{"description":"Use clickstream-refined volume metrics. Provider cost is doubled.","in":"query","name":"include_clickstream","schema":{"default":false,"type":"boolean"}},{"in":"query","name":"fresh","schema":{"default":false,"type":"boolean"}},{"description":"Return a free cache-aware provider cost estimate without a lookup.","in":"query","name":"estimate_only","schema":{"default":false,"type":"boolean"}},{"description":"Best-effort maximum provider cost for this request, in cents.","in":"query","name":"max_cost_cents","schema":{"minimum":1,"type":"integer","x-bisibility-money":"usd_cents"}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeywordResearchResponse"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Deployment credits exhausted for a paid provider request"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden, or `byok_required`: the account runs paid provider work only on its own provider keys and none serves this request"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported provider location or provider reauthorization required"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Research keywords","description":"Researches or estimates keywords from one seed and requires write scope. estimate_only=true needs only read scope and never spends provider budget.","x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"x-bisibility-sdk":{"group":"keywords","legacy":{"go":["ResearchKeywords"],"python":["research_keywords"],"ts":["researchKeywords"]},"method":"research"},"tags":["keyword-research"],"x-bisibility-cost":{"kind":"paid","timing":"inline","estimate":{"in":"query","param":"estimate_only","response":"KeywordResearchEstimate"},"max_cost_cents":{"in":"query","minimum":1,"required":false}}}},"/projects/{project_id}/rank-check-runs":{"get":{"operationId":"listRankCheckRuns","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"in":"query","name":"segment","schema":{"type":"string","enum":["history","planned"],"default":"history","x-bisibility-enum":"closed","x-bisibility-name":"RankCheckRunSegment"}},{"in":"query","name":"status","schema":{"type":"string"},"description":"Comma-separated execution statuses."},{"in":"query","name":"cursor","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RankCheckRunReadList"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List rank-check runs","description":"Read rank-check runs including cancelled or deferred outcomes without a check.","x-bisibility-sdk":{"group":"rankChecks.runs","method":"list","legacy":{"ts":["iterateRankCheckRuns","listRankCheckRuns"],"python":["list_rank_check_runs"],"go":["ListRankCheckRuns"]}},"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"cursor","items":"data","next":"meta.next_cursor","max_limit":200},"tags":["rank-checks"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/rank-check-runs/{run_id}":{"get":{"operationId":"getRankCheckRun","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"in":"path","name":"run_id","required":true,"schema":{"example":"rcr_a00000000000000000000000","pattern":"^rcr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"rcr"}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RankCheckRunRead"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Get a rank-check run","description":"Read an existing run without launching a measurement.","x-bisibility-sdk":{"group":"rankChecks.runs","method":"get","legacy":{"ts":["getRankCheckRun"],"python":["get_rank_check_run"],"go":["GetRankCheckRun"]}},"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"tags":["rank-checks"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/exports/rank-history":{"get":{"operationId":"exportRankHistory","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"in":"query","name":"version","schema":{"enum":["1","2"],"default":"1","type":"string"},"description":"V1 preserves legacy row/aggregation semantics. V2 returns shared qualified history and whole-scope metadata."},{"in":"query","name":"stream","schema":{"enum":["observations","attempts"],"default":"observations","type":"string"}},{"in":"query","name":"basis","schema":{"enum":["observed_at","recorded_at"],"default":"recorded_at","type":"string"}},{"in":"query","name":"from","schema":{"format":"date-time","type":"string"}},{"in":"query","name":"to","schema":{"format":"date-time","type":"string"}},{"in":"query","name":"aggregation","schema":{"enum":["none"],"default":"none","type":"string"}},{"in":"query","name":"format","schema":{"enum":["csv","json"],"type":"string"}},{"explode":true,"in":"query","name":"keyword_id","schema":{"items":{"type":"string"},"maxItems":500,"type":"array"},"style":"form"},{"in":"query","name":"range","schema":{"default":"30","enum":["30","90","all"],"type":"string"}},{"in":"query","name":"granularity","schema":{"default":"daily","enum":["daily","weekly"],"type":"string"}},{"in":"query","name":"cursor","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"default":50,"maximum":200,"minimum":1,"type":"integer"}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RankHistoryExportResponse"},{"$ref":"#/components/schemas/RankHistoryReportResponse"}]}},"text/csv":{"schema":{"type":"string"}}},"description":"Paginated JSON or complete bounded CSV rank history"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Export rank history","description":"Returns paginated JSON or streams CSV.","tags":["rank-checks"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/sitemap-monitors":{"get":{"operationId":"listSitemapMonitors","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SitemapMonitorList"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Get sitemap monitor status","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"description":"Returns the project sitemap monitor and its latest snapshot.","tags":["sitemap-monitoring"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/sitemap-monitors/{monitor_id}":{"patch":{"operationId":"updateSitemapMonitor","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SitemapMonitorPatch"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SitemapMonitor"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Update sitemap monitor","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["sitemap-monitoring"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/triggered-alerts/{alert_id}/mute":{"post":{"operationId":"muteTriggeredAlert","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"in":"path","name":"alert_id","required":true,"schema":{"example":"al_a00000000000000000000000","pattern":"^al_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"al"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggeredAlertMuteResult"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Mute one triggered alert for 24 hours","x-bisibility-sdk":{"group":"alerts","method":"mute","legacy":{"ts":["muteTriggeredAlert"],"python":["mute_triggered_alert"],"go":["MuteTriggeredAlert"]}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"tags":["alerts"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/triggered-alerts/mark-read":{"post":{"operationId":"markProjectAlertsRead","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggeredAlertsReadResult"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Mark all firing project alerts as read","x-bisibility-sdk":{"group":"alerts","method":"markAllRead","legacy":{"ts":["markProjectAlertsRead"],"python":["mark_project_alerts_read"],"go":["MarkProjectAlertsRead"]}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"tags":["alerts"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/local-monitors/{monitor_id}/runs":{"get":{"operationId":"listLocalMonitorRuns","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"}},{"in":"path","name":"monitor_id","required":true,"schema":{"example":"lmn_a00000000000000000000000","pattern":"^lmn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmn"}},{"in":"query","name":"as_of","schema":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$","minLength":24,"maxLength":24,"description":"Canonical UTC timestamp including milliseconds; fixed across continuation pages."}},{"in":"query","name":"from","schema":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$","minLength":24,"maxLength":24}},{"in":"query","name":"to","schema":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$","minLength":24,"maxLength":24}},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1,"maxLength":8000}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"version":{"type":"integer","const":1},"project_id":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"monitor_id":{"example":"lmn_a00000000000000000000000","pattern":"^lmn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmn"},"as_of":{"type":"string","format":"date-time"},"window":{"anyOf":[{"type":"object","properties":{"from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"to":{"type":"string","format":"date-time"},"time_basis":{"type":"string","const":"occurrence_created_at"}},"required":["from","to","time_basis"]},{"type":"null"}]},"eligible_total":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"next_cursor":{"anyOf":[{"type":"string","minLength":1,"maxLength":8000},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"run_id":{"example":"lmr_a00000000000000000000000","pattern":"^lmr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmr"},"created_at":{"type":"string","format":"date-time"},"definition_revision":{"type":"integer","minimum":0},"mode":{"type":"string"}},"required":["run_id","created_at","definition_revision","mode"]},"maxItems":20}},"required":["version","project_id","monitor_id","as_of","window","eligible_total","next_cursor","items"]}},"required":["data"]}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The retained source or captured freshness policy changed; restart selection.; Unsupported API version"},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The retained selection exceeds bounded read capacity."},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Read Local monitor run history","tags":["rank-checks"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/local-monitors/{monitor_id}/runs/{run_id}/results":{"get":{"operationId":"getLocalMonitorRunResults","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"}},{"in":"path","name":"monitor_id","required":true,"schema":{"example":"lmn_a00000000000000000000000","pattern":"^lmn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmn"}},{"in":"path","name":"run_id","required":true,"schema":{"example":"lmr_a00000000000000000000000","pattern":"^lmr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmr"}},{"in":"query","name":"as_of","schema":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$","minLength":24,"maxLength":24,"description":"Canonical UTC timestamp including milliseconds; fixed across continuation pages."}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"version":{"type":"integer","const":1},"project_id":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"monitor_id":{"example":"lmn_a00000000000000000000000","pattern":"^lmn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmn"},"run_id":{"example":"lmr_a00000000000000000000000","pattern":"^lmr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmr"},"as_of":{"type":"string","format":"date-time"},"definition_revision_id":{"type":"string"},"identity_revision_id":{"type":"string"},"subject":{"type":"string"},"protocol":{"type":"object","properties":{"geometry":{"type":"string"},"matcher":{"type":"string"},"normalizer_versions":{"type":"array","items":{"type":"string"},"maxItems":100},"metric_definition":{"type":"string"}},"required":["geometry","matcher","normalizer_versions","metric_definition"]},"financial_basis":{"type":"string","const":"current_accounting_state"},"freshness_policy":{"anyOf":[{"type":"object","properties":{"basis":{"anyOf":[{"type":"string","enum":["manual_ttl","captured_calendar"]},{"type":"null"}]},"fresh_for_ms":{"anyOf":[{"type":"number"},{"type":"null"}]},"freshness_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"policy_epoch":{"anyOf":[{"type":"string"},{"type":"null"}]},"configuration_revision":{"anyOf":[{"type":"string"},{"type":"null"}]},"semantics":{"type":"string","const":"current_project_policy_with_original_intent"}},"required":["basis","fresh_for_ms","freshness_reason","policy_epoch","configuration_revision","semantics"]},{"type":"null"}]},"points":{"type":"array","items":{"type":"object","properties":{"id":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"},"keyword_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"keyword":{"type":"string"},"ordinal":{"type":"integer","minimum":0},"row":{"type":"integer","minimum":0},"column":{"type":"integer","minimum":0},"latitude":{"type":"string","pattern":"^-?[0-9]{1,3}\\.[0-9]{7}$"},"longitude":{"type":"string","pattern":"^-?[0-9]{1,3}\\.[0-9]{7}$"},"surface":{"type":"string"},"cutoff":{"type":"integer","minimum":0},"zoom":{"anyOf":[{"type":"number"},{"type":"null"}]},"language":{"type":"string"},"device":{"type":"string"},"operating_system":{"anyOf":[{"type":"string"},{"type":"null"}]},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"recorded_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"observed_position":{"anyOf":[{"type":"number"},{"type":"null"}]},"evidence":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"freshness":{"type":"string"},"freshness_reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"identity_match":{"type":"string"},"scope_class":{"type":"string"},"receipt":{"type":"object","properties":{"target_id":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"},"status":{"type":"string"},"version":{"type":"integer","minimum":0},"acceptance":{"anyOf":[{"type":"string"},{"type":"null"}]},"known_accepted_task_count":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"collected":{"type":"boolean"},"cancellation_requested":{"type":"boolean"},"financial_state":{"anyOf":[{"type":"string"},{"type":"null"}]},"owner_retained":{"type":"boolean"},"resolution":{"type":"string"},"accounting_pending":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"reconciliation_reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["target_id","status","version","acceptance","known_accepted_task_count","collected","cancellation_requested","financial_state","owner_retained","resolution","accounting_pending","reconciliation_reason"]}},"required":["id","keyword_id","keyword","ordinal","row","column","latitude","longitude","surface","cutoff","zoom","language","device","operating_system","observed_at","recorded_at","position","observed_position","evidence","reason","freshness","freshness_reason","identity_match","scope_class","receipt"]},"maxItems":100},"grids":{"type":"array","items":{"type":"object","properties":{"keyword_id":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"keyword":{"type":"string"},"grid_revision_key":{"type":"string"},"identity_revision_id":{"type":"string"},"top_n":{"type":"integer","minimum":0},"size":{"type":"integer","enum":[1,3,5,7]},"point_ids":{"type":"array","items":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"},"maxItems":49},"expected":{"type":"integer","minimum":0},"observed_rate":{"anyOf":[{"type":"number"},{"type":"null"}]},"observed_coverage":{"anyOf":[{"type":"number"},{"type":"null"}]},"data_coverage":{"anyOf":[{"type":"number"},{"type":"null"}]},"sample_bounds":{"anyOf":[{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2},{"type":"null"}]},"counts":{"type":"object","properties":{"expected":{"type":"integer","minimum":0},"measured":{"type":"integer","minimum":0},"metric_eligible":{"type":"integer","minimum":0},"ranked":{"type":"integer","minimum":0},"known_absent":{"type":"integer","minimum":0},"unknown":{"type":"integer","minimum":0},"never_checked":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"stale":{"type":"integer","minimum":0},"unsupported":{"type":"integer","minimum":0},"fresh_determinate":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"unknown_freshness":{"type":"integer","minimum":0},"comparable":{"type":"integer","minimum":0}},"required":["expected","measured","metric_eligible","ranked","known_absent","unknown","never_checked","failed","stale","unsupported","fresh_determinate","unknown_freshness","comparable"]},"freshness":{"type":"string"},"comparison":{"type":"string","const":"unavailable"},"scope":{"type":"string","const":"sampled_points"},"reason":{"type":"string","enum":["matcher_version_mixed"],"description":"Ranking aggregate unavailable across matcher versions; point evidence and coverage remain readable."}},"required":["keyword_id","keyword","grid_revision_key","identity_revision_id","top_n","size","point_ids","expected","observed_rate","observed_coverage","data_coverage","sample_bounds","counts","freshness","comparison","scope"]},"maxItems":100},"created_at":{"type":"string","format":"date-time"},"definition_revision":{"type":"integer","minimum":0},"receipt":{"type":"object","properties":{"id":{"example":"lmr_a00000000000000000000000","pattern":"^lmr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmr"},"version":{"type":"integer","minimum":0},"cancellation_requested":{"type":"boolean"},"expected_count":{"type":"integer","minimum":0},"items":{"type":"array","items":{"type":"object","properties":{"target_id":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"},"status":{"type":"string"},"version":{"type":"integer","minimum":0},"acceptance":{"anyOf":[{"type":"string"},{"type":"null"}]},"known_accepted_task_count":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"collected":{"type":"boolean"},"cancellation_requested":{"type":"boolean"},"financial_state":{"anyOf":[{"type":"string"},{"type":"null"}]},"owner_retained":{"type":"boolean"},"resolution":{"type":"string"},"accounting_pending":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"reconciliation_reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["target_id","status","version","acceptance","known_accepted_task_count","collected","cancellation_requested","financial_state","owner_retained","resolution","accounting_pending","reconciliation_reason"]},"maxItems":100},"counts":{"type":"object","properties":{"items":{"type":"integer","minimum":0},"complete":{"type":"integer","minimum":0},"acceptance_unresolved":{"type":"integer","minimum":0},"accounting_pending":{"type":"integer","minimum":0},"unavailable":{"type":"integer","minimum":0},"retained_owners":{"type":"integer","minimum":0}},"required":["items","complete","acceptance_unresolved","accounting_pending","unavailable","retained_owners"]}},"required":["id","version","cancellation_requested","expected_count","items","counts"]}},"required":["version","project_id","monitor_id","run_id","as_of","definition_revision_id","identity_revision_id","subject","protocol","financial_basis","freshness_policy","points","grids","created_at","definition_revision","receipt"]}},"required":["data"]}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The retained source or captured freshness policy changed; restart selection.; Unsupported API version"},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The retained selection exceeds bounded read capacity."},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Read Local run points and quality","tags":["rank-checks"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/local-monitors/{monitor_id}/runs/{run_id}/points/{target_id}/listings":{"get":{"operationId":"listLocalMonitorPointListings","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"}},{"in":"path","name":"monitor_id","required":true,"schema":{"example":"lmn_a00000000000000000000000","pattern":"^lmn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmn"}},{"in":"path","name":"run_id","required":true,"schema":{"example":"lmr_a00000000000000000000000","pattern":"^lmr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmr"}},{"in":"path","name":"target_id","required":true,"schema":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"}},{"in":"query","name":"as_of","schema":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$","minLength":24,"maxLength":24,"description":"Canonical UTC timestamp including milliseconds; fixed across continuation pages."}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"rank_group":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"rank_absolute":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"promotion":{"type":"string"},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"matched":{"type":"string"},"cid":{"anyOf":[{"type":"string"},{"type":"null"}]},"place_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"source_page":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"source_block_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"source_ordinal":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"rank_scale":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","rank_group","rank_absolute","promotion","observed_at","matched","cid","place_id","source_page","source_block_id","source_ordinal","rank_scale"]},"maxItems":700}},"required":["data"]}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The retained source or captured freshness policy changed; restart selection.; Unsupported API version"},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The retained selection exceeds bounded read capacity."},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Read retained Local point listings","tags":["rank-checks"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/local-monitors/{monitor_id}/runs/{run_id}/points/{target_id}/history":{"get":{"operationId":"listLocalMonitorPointHistory","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"}},{"in":"path","name":"monitor_id","required":true,"schema":{"example":"lmn_a00000000000000000000000","pattern":"^lmn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmn"}},{"in":"path","name":"run_id","required":true,"schema":{"example":"lmr_a00000000000000000000000","pattern":"^lmr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmr"}},{"in":"path","name":"target_id","required":true,"schema":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"}},{"in":"query","name":"as_of","schema":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$","minLength":24,"maxLength":24,"description":"Canonical UTC timestamp including milliseconds; fixed across continuation pages."}},{"in":"query","name":"from","schema":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$","minLength":24,"maxLength":24}},{"in":"query","name":"to","schema":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$","minLength":24,"maxLength":24}},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1,"maxLength":8000}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"version":{"type":"integer","const":1},"as_of":{"type":"string","format":"date-time"},"target_id":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"},"scope":{"type":"string","const":"exact_captured_target"},"limit":{"type":"integer","const":20},"has_more":{"type":"boolean"},"window":{"anyOf":[{"type":"object","properties":{"from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"to":{"type":"string","format":"date-time"},"time_basis":{"type":"string","const":"occurrence_created_at"}},"required":["from","to","time_basis"]},{"type":"null"}]},"eligible_total":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"next_cursor":{"anyOf":[{"type":"string","minLength":1,"maxLength":8000},{"type":"null"}]},"policy_epoch":{"anyOf":[{"type":"string"},{"type":"null"}]},"freshness_configuration_revision":{"anyOf":[{"type":"string"},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"run_id":{"example":"lmr_a00000000000000000000000","pattern":"^lmr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmr"},"created_at":{"type":"string","format":"date-time"},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"evidence":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"freshness":{"anyOf":[{"type":"string"},{"type":"null"}]},"freshness_reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","run_id","created_at","observed_at","position","evidence","reason","freshness","freshness_reason"]},"maxItems":20}},"required":["version","as_of","target_id","scope","limit","has_more","window","eligible_total","next_cursor","policy_epoch","freshness_configuration_revision","items"]}},"required":["data"]}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The retained source or captured freshness policy changed; restart selection.; Unsupported API version"},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The retained selection exceeds bounded read capacity."},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Read exact Local point history","tags":["rank-checks"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/local-monitors/{monitor_id}/runs/{run_id}/export":{"get":{"operationId":"exportLocalMonitorRun","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"}},{"in":"path","name":"monitor_id","required":true,"schema":{"example":"lmn_a00000000000000000000000","pattern":"^lmn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmn"}},{"in":"path","name":"run_id","required":true,"schema":{"example":"lmr_a00000000000000000000000","pattern":"^lmr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmr"}},{"in":"query","name":"as_of","schema":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$","minLength":24,"maxLength":24,"description":"Canonical UTC timestamp including milliseconds; fixed across continuation pages."}},{"in":"query","name":"version","schema":{"type":"string","enum":["1"],"default":"1"}},{"in":"query","name":"format","schema":{"type":"string","enum":["json","csv"],"default":"json"}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"description":"Retained sampled-point report; provider and financial unknowns remain explicit","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer","const":1},"projectId":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"prj"},"monitorId":{"example":"lmn_a00000000000000000000000","pattern":"^lmn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmn"},"runId":{"example":"lmr_a00000000000000000000000","pattern":"^lmr_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmr"},"asOf":{"type":"string","format":"date-time"},"definitionRevisionId":{"type":"string"},"identityRevisionId":{"type":"string"},"subject":{"type":"string"},"protocol":{"type":"object","properties":{"geometry":{"type":"string"},"matcher":{"type":"string"},"normalizerVersions":{"type":"array","items":{"type":"string"},"maxItems":100},"metricDefinition":{"type":"string"}},"required":["geometry","matcher","normalizerVersions","metricDefinition"]},"financialBasis":{"type":"string","const":"current_accounting_state"},"freshnessPolicy":{"anyOf":[{"type":"object","properties":{"basis":{"anyOf":[{"type":"string","enum":["manual_ttl","captured_calendar"]},{"type":"null"}]},"freshForMs":{"anyOf":[{"type":"number"},{"type":"null"}]},"freshnessReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"policyEpoch":{"anyOf":[{"type":"string"},{"type":"null"}]},"configurationRevision":{"anyOf":[{"type":"string"},{"type":"null"}]},"semantics":{"type":"string","const":"current_project_policy_with_original_intent"}},"required":["basis","freshForMs","freshnessReason","policyEpoch","configurationRevision","semantics"]},{"type":"null"}]},"points":{"type":"array","items":{"type":"object","properties":{"id":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"},"keywordId":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"keyword":{"type":"string"},"ordinal":{"type":"integer","minimum":0},"row":{"type":"integer","minimum":0},"column":{"type":"integer","minimum":0},"latitude":{"type":"string","pattern":"^-?[0-9]{1,3}\\.[0-9]{7}$"},"longitude":{"type":"string","pattern":"^-?[0-9]{1,3}\\.[0-9]{7}$"},"surface":{"type":"string"},"cutoff":{"type":"integer","minimum":0},"zoom":{"anyOf":[{"type":"number"},{"type":"null"}]},"language":{"type":"string"},"device":{"type":"string"},"operatingSystem":{"anyOf":[{"type":"string"},{"type":"null"}]},"observedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"recordedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"observedPosition":{"anyOf":[{"type":"number"},{"type":"null"}]},"evidence":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"freshness":{"type":"string"},"freshnessReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"identityMatch":{"type":"string"},"scopeClass":{"type":"string"},"receipt":{"type":"object","properties":{"targetId":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"},"status":{"type":"string"},"version":{"type":"integer","minimum":0},"acceptance":{"anyOf":[{"type":"string"},{"type":"null"}]},"knownAcceptedTaskCount":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"collected":{"type":"boolean"},"cancellationRequested":{"type":"boolean"},"financialState":{"anyOf":[{"type":"string"},{"type":"null"}]},"ownerRetained":{"type":"boolean"},"resolution":{"type":"string"},"accountingPending":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"reconciliationReason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["targetId","status","version","acceptance","knownAcceptedTaskCount","collected","cancellationRequested","financialState","ownerRetained","resolution","accountingPending","reconciliationReason"]}},"required":["id","keywordId","keyword","ordinal","row","column","latitude","longitude","surface","cutoff","zoom","language","device","operatingSystem","observedAt","recordedAt","position","observedPosition","evidence","reason","freshness","freshnessReason","identityMatch","scopeClass","receipt"]},"maxItems":100},"grids":{"type":"array","items":{"type":"object","properties":{"keywordId":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"kw"},"keyword":{"type":"string"},"gridRevisionKey":{"type":"string"},"identityRevisionId":{"type":"string"},"topN":{"type":"integer","minimum":0},"size":{"type":"integer","enum":[1,3,5,7]},"pointIds":{"type":"array","items":{"example":"lmt_a00000000000000000000000","pattern":"^lmt_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"lmt"},"maxItems":49},"expected":{"type":"integer","minimum":0},"observedRate":{"anyOf":[{"type":"number"},{"type":"null"}]},"observedCoverage":{"anyOf":[{"type":"number"},{"type":"null"}]},"dataCoverage":{"anyOf":[{"type":"number"},{"type":"null"}]},"sampleBounds":{"anyOf":[{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2},{"type":"null"}]},"counts":{"type":"object","properties":{"expected":{"type":"integer","minimum":0},"measured":{"type":"integer","minimum":0},"metricEligible":{"type":"integer","minimum":0},"ranked":{"type":"integer","minimum":0},"knownAbsent":{"type":"integer","minimum":0},"unknown":{"type":"integer","minimum":0},"neverChecked":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"stale":{"type":"integer","minimum":0},"unsupported":{"type":"integer","minimum":0},"freshDeterminate":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"unknownFreshness":{"type":"integer","minimum":0},"comparable":{"type":"integer","minimum":0}},"required":["expected","measured","metricEligible","ranked","knownAbsent","unknown","neverChecked","failed","stale","unsupported","freshDeterminate","unknownFreshness","comparable"]},"freshness":{"type":"string"},"comparison":{"type":"string","const":"unavailable"},"scope":{"type":"string","const":"sampled_points"},"reason":{"type":"string","enum":["matcher_version_mixed"],"description":"Ranking aggregate unavailable across matcher versions; point evidence and coverage remain readable."}},"required":["keywordId","keyword","gridRevisionKey","identityRevisionId","topN","size","pointIds","expected","observedRate","observedCoverage","dataCoverage","sampleBounds","counts","freshness","comparison","scope"]},"maxItems":100},"report":{"type":"string","const":"local-point-report-v1"},"scope":{"type":"string","const":"sampled_points"},"coordinateProof":{"type":"string","const":"acknowledged_query_seed_or_unknown"},"comparison":{"type":"string","const":"unavailable"}},"required":["version","projectId","monitorId","runId","asOf","definitionRevisionId","identityRevisionId","subject","protocol","financialBasis","freshnessPolicy","points","grids","report","scope","coordinateProof","comparison"]}},"text/csv":{"schema":{"type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The retained source or captured freshness policy changed; restart selection.; Unsupported API version"},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The retained selection exceeds bounded read capacity."},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Export retained Local run points","tags":["rank-checks"],"x-bisibility-cost":{"kind":"free"}}},"/cloud/import":{"post":{"operationId":"importCloudExport","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudImportPackage"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudImportFinalizeResponse"}}},"description":"Import completed"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict; Unsupported API version"},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Payload too large"},"419":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Migration token invalid or expired"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Import failed"}},"security":[{"MigrationToken":[]}],"summary":"Run an instance import","description":"Requires a migration token.","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["migration"],"x-bisibility-cost":{"kind":"free"}}},"/cloud/import/compatibility":{"get":{"operationId":"getCloudImportCompatibility","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudImportCompatibility"}}},"description":"Compatibility preflight"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"summary":"Check instance import schema compatibility","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}}],"tags":["migration"],"x-bisibility-cost":{"kind":"free"}}},"/cloud/import/sessions":{"post":{"operationId":"createCloudImportSession","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudImportSessionCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudImportSessionCreateResponse"}}},"description":"Import session created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict; Unsupported API version"},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Payload too large"},"419":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Migration token invalid or expired"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Import failed"}},"security":[{"MigrationToken":[]}],"summary":"Create a chunked instance import session","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["migration"],"x-bisibility-cost":{"kind":"free"}}},"/cloud/import/sessions/{sessionId}/chunks/{index}":{"put":{"operationId":"uploadCloudImportChunk","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"sessionId","required":true,"schema":{"pattern":"^imp_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"imp"}},{"in":"path","name":"index","required":true,"schema":{"minimum":0,"type":"integer"}},{"description":"Set to gzip when the JSON chunk body is gzip compressed.","in":"header","name":"Content-Encoding","required":false,"schema":{"enum":["gzip"],"type":"string"}},{"$ref":"#/components/parameters/SourceHeader"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudImportUploadChunk"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudImportChunkResponse"}}},"description":"Chunk accepted"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Import session not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict; Unsupported API version"},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Payload too large"},"419":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Migration token invalid or expired"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Import failed"}},"security":[{"MigrationToken":[]}],"summary":"Upload an instance import chunk","tags":["migration"],"x-bisibility-cost":{"kind":"free"}}},"/cloud/import/sessions/{sessionId}/finalize":{"post":{"operationId":"finalizeCloudImportSession","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"sessionId","required":true,"schema":{"pattern":"^imp_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"imp"}},{"$ref":"#/components/parameters/SourceHeader"}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{},"type":"object"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudImportFinalizeResponse"}}},"description":"Import session finalized"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Import session not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict; Unsupported API version"},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Payload too large"},"419":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Migration token invalid or expired"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Import failed"}},"security":[{"MigrationToken":[]}],"summary":"Finalize a chunked instance import session","tags":["migration"],"x-bisibility-cost":{"kind":"free"}}},"/keywords/{keyword_id}/checks":{"post":{"operationId":"runRankCheck","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"keyword_id","required":true,"schema":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","description":"Public keyword ID.","x-bisibility-public-id":"kw"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"requestBody":{"content":{"application/json":{"schema":{"x-bisibility-name":"RunRankCheckRequest","properties":{"provider_id":{"minLength":1,"maxLength":80,"type":"string"},"max_cost_cents":{"x-bisibility-money":"usd_cents","description":"Best-effort pre-estimate provider cost gate, in cents. The launch is refused with cost_limit_exceeded when its preflight estimate exceeds it.","minimum":1,"type":"integer"}},"type":"object"}}},"required":false},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RankCheck"}}},"description":"Rank check completed when inline execution is enabled"},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RankCheckRunQueued"}}},"description":"Rank check queued"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Deployment credits exhausted for a paid provider request"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden, or `byok_required`: the account runs paid provider work only on its own provider keys and none serves this request"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The launch estimate exceeds max_cost_cents"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Queue a rank check","description":"Queues a one-item rank-check run unless inline execution is configured.","x-bisibility-sdk":{"group":"rankChecks","method":"run","legacy":{"ts":["runRankCheck","runRankCheckAndWait"],"python":["run_rank_check"],"go":["RunRankCheck"]}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"tags":["rank-checks"],"x-bisibility-cost":{"kind":"paid","timing":"inline","max_cost_cents":{"in":"body","minimum":1,"required":false}}}},"/keywords/{keyword_id}/rank-checks":{"get":{"operationId":"listRankChecks","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"keyword_id","required":true,"schema":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","description":"Public keyword ID.","x-bisibility-public-id":"kw"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"description":"Filter by persisted rank-check status.","in":"query","name":"status","schema":{"enum":["completed","failed","running"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"RankCheckStatus"}},{"description":"Return checks at or after this ISO-8601 date-time.","in":"query","name":"since","schema":{"format":"date-time","type":"string"}},{"description":"Return checks at or before this ISO-8601 date-time.","in":"query","name":"until","schema":{"format":"date-time","type":"string"}},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/RankCheck"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"RankCheckPage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List rank checks for a keyword","x-bisibility-idempotency":"none","x-bisibility-pagination":{"items":"data","max_limit":200,"next":"meta.next_cursor","style":"cursor"},"x-bisibility-sdk":{"group":"rankChecks","legacy":{"go":["ListRankChecks"],"python":["list_rank_checks"],"ts":["listRankChecks"]},"method":"list"},"tags":["rank-checks"],"x-bisibility-cost":{"kind":"free"}}},"/projects":{"get":{"operationId":"listProjects","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Project"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"ProjectPage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List projects visible to this API key","x-bisibility-idempotency":"none","x-bisibility-pagination":{"items":"data","max_limit":200,"next":"meta.next_cursor","style":"cursor"},"x-bisibility-sdk":{"group":"projects","legacy":{"go":["ListProjects"],"python":["list_projects"],"ts":["listProjects"]},"method":"list"},"tags":["projects"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"createProject","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Create a project","description":"Requires a personal access token with permission to create projects.","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["projects"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}":{"delete":{"operationId":"deleteProject","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]}],"summary":"Delete a project","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["projects"],"x-bisibility-cost":{"kind":"free"}},"get":{"operationId":"getProject","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Get one project","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"x-bisibility-sdk":{"group":"projects","legacy":{"go":["GetProject"],"python":["get_project"],"ts":["getProject"]},"method":"get"},"tags":["projects"],"x-bisibility-cost":{"kind":"free"}},"patch":{"operationId":"updateProject","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Update a project","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["projects"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/defaults":{"get":{"operationId":"getProjectDefaults","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectDefaults"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Get project defaults","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["projects"],"x-bisibility-cost":{"kind":"free"}},"patch":{"operationId":"updateProjectDefaults","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"in":"query","name":"preview_only","schema":{"type":"boolean","default":false},"description":"Requires capabilities.features.reviewed_project_defaults=v1. true reads the current signed draft without writes or provider calls. Confirm that exact draft with review on a later PATCH."},{"$ref":"#/components/parameters/SourceHeader"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectDefaultsPatch"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ProjectDefaults"},{"$ref":"#/components/schemas/ProjectDefaultsPreview"}]}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Quote, source or command changed; Unsupported API version"},"428":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Current preview and explicit confirmation required"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Update project defaults","description":"Preview first, then confirm the exact source/revision/token with a stable command key. Lost responses replay the same committed receipt. Omitted review refuses before writes; changed source or expired quotes require a new preview. Existing targets/history are not retargeted.","tags":["projects"],"x-bisibility-cost":{"kind":"paid","timing":"deferred"}}},"/keywords/{keyword_id}":{"delete":{"operationId":"deleteKeyword","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Keyword"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Delete one keyword","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"keyword_id","required":true,"schema":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","description":"Public keyword ID.","x-bisibility-public-id":"kw"}},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["keywords"],"x-bisibility-cost":{"kind":"free"}},"get":{"operationId":"getKeyword","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Keyword"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Get one keyword","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"keyword_id","required":true,"schema":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","description":"Public keyword ID.","x-bisibility-public-id":"kw"}},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"x-bisibility-sdk":{"group":"keywords","method":"get","legacy":{"ts":["getKeyword"],"python":["get_keyword"],"go":["GetKeyword"]}},"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"tags":["keywords"],"x-bisibility-cost":{"kind":"free"}},"patch":{"operationId":"setKeywordTargetUrl","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Keyword"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Set keyword target URL or metadata","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"keyword_id","required":true,"schema":{"example":"kw_a00000000000000000000000","pattern":"^kw_[a-z][a-z0-9]{23}$","type":"string","description":"Public keyword ID.","x-bisibility-public-id":"kw"}},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["keywords"],"x-bisibility-cost":{"kind":"paid","timing":"deferred"}}},"/keywords/bulk":{"post":{"operationId":"bulkUpdateKeywords","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"requestBody":{"content":{"application/json":{"schema":{"x-bisibility-name":"KeywordBulkRequest","type":"object","required":["keyword_ids","operation"],"description":"Partial mutation: optional fields may be absent. target_url accepts null to clear the URL; for set_target_url, omission also clears it. Other top-level fields reject null. Tag operations require nonempty tags; set_frequency requires frequency or schedule.","properties":{"frequency":{"type":"string","enum":["paused","manual","daily","weekly","monthly","custom_cron"],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordBulkFrequency"},"keyword_ids":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"string","minLength":1,"maxLength":160,"pattern":"^kw_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"kw"}},"operation":{"type":"string","enum":["add_tags","delete","remove_tags","set_frequency","set_target_url"],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordBulkOperation"},"schedule":{"x-bisibility-name":"KeywordBulkSchedule","type":"object","required":["frequency"],"properties":{"cron_expression":{"type":["string","null"],"minLength":1,"maxLength":120,"default":null},"frequency":{"type":"string","enum":["paused","manual","daily","weekly","monthly","custom_cron"],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordBulkFrequency"},"jitter_minutes":{"type":"integer","minimum":0,"maximum":120,"default":60},"serp_depth":{"type":["integer","null"],"enum":[10,20,50,100,null],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordBulkSerpDepth"},"timezone":{"type":"string","minLength":1,"maxLength":80,"default":"UTC"}}},"tags":{"type":"array","maxItems":12,"items":{"type":"string","minLength":1,"maxLength":48}},"target_url":{"type":["string","null"],"minLength":1,"maxLength":500}}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"x-bisibility-name":"KeywordBulkResponse","type":"object","required":["operation","results"],"properties":{"operation":{"type":"string","enum":["add_tags","delete","remove_tags","set_frequency","set_target_url"],"x-bisibility-enum":"open","x-bisibility-name":"KeywordBulkResultOperation"},"results":{"type":"array","items":{"x-bisibility-name":"KeywordBulkResult","type":"object","required":["keyword_id","status"],"properties":{"keyword_id":{"type":"string","pattern":"^kw_[a-z][a-z0-9]{23}$","x-bisibility-public-id":"kw"},"status":{"type":"string","enum":["updated","deleted","not_found"],"x-bisibility-enum":"open","x-bisibility-name":"KeywordBulkResultStatus"}}}}}}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Bulk mutate keywords","x-bisibility-sdk":{"group":"keywords","method":"bulkUpdate","legacy":{"ts":["bulkUpdateKeywords"],"python":["bulk_update_keywords"],"go":["BulkUpdateKeywords"]}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"tags":["keywords"],"x-bisibility-cost":{"kind":"paid","timing":"deferred"}}},"/projects/{project_id}/keyword-matches":{"post":{"operationId":"matchProjectKeywords","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeywordMatchRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeywordMatchResponse"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Match tracked keywords","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["keywords"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/keywords":{"get":{"operationId":"listKeywords","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"description":"Case-insensitive keyword text search. Also accepted as q.","in":"query","name":"search","schema":{"type":"string"}},{"description":"Case-insensitive exact tag filter. Also accepted as filter[tag].","in":"query","name":"tag","schema":{"type":"string"}},{"description":"Case-insensitive exact topic filter. Also accepted as filter[topic].","in":"query","name":"topic","schema":{"maxLength":80,"minLength":1,"type":"string"}},{"description":"Case-insensitive exact intent filter. Also accepted as filter[intent].","in":"query","name":"intent","schema":{"maxLength":80,"minLength":1,"type":"string"}},{"description":"Filter by SERP device. Also accepted as filter[device].","in":"query","name":"device","schema":{"enum":["desktop","mobile"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"Device"}},{"description":"Filter by the exact canonical location key, optionally qualified with @language. Also accepted as filter[location_key].","in":"query","name":"location_key","schema":{"type":"string"}},{"description":"Filter by canonical country or stored location alias. Also accepted as filter[country]. Deprecated legacy market input: send location_key instead. Still accepted for compatibility; no removal version is scheduled.","in":"query","name":"country","schema":{"type":"string"},"deprecated":true},{"description":"Match keywords with a rank check position greater than this number. Also accepted as filter[position_gt].","in":"query","name":"position_gt","schema":{"type":"number"}},{"description":"Match keywords with a rank check position less than this number. Also accepted as filter[position_lt].","in":"query","name":"position_lt","schema":{"type":"number"}},{"description":"Sort order for the keyword list.","in":"query","name":"sort","schema":{"default":"-created_at","enum":["created_at","-created_at","keyword","-keyword","text","-text","updated_at","-updated_at"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"KeywordSort"}},{"description":"Alias of country. When both are sent, this alias wins.","in":"query","name":"filter[country]","schema":{"type":"string"},"deprecated":true},{"description":"Alias of device. When both are sent, this alias wins.","in":"query","name":"filter[device]","schema":{"enum":["desktop","mobile"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"Device"}},{"description":"Alias of intent. When both are sent, this alias wins.","in":"query","name":"filter[intent]","schema":{"maxLength":80,"minLength":1,"type":"string"}},{"description":"Alias of location_key. When both are sent, this alias wins.","in":"query","name":"filter[location_key]","schema":{"type":"string"}},{"description":"Alias of position_gt. When both are sent, this alias wins.","in":"query","name":"filter[position_gt]","schema":{"type":"number"}},{"description":"Alias of position_lt. When both are sent, this alias wins.","in":"query","name":"filter[position_lt]","schema":{"type":"number"}},{"description":"Alias of tag. When both are sent, this alias wins.","in":"query","name":"filter[tag]","schema":{"type":"string"}},{"description":"Alias of topic. When both are sent, this alias wins.","in":"query","name":"filter[topic]","schema":{"maxLength":80,"minLength":1,"type":"string"}},{"description":"Alias of search. When both are sent, search wins.","in":"query","name":"q","schema":{"type":"string"}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Keyword"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"KeywordPage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List project keywords","x-bisibility-idempotency":"none","x-bisibility-pagination":{"items":"data","max_limit":200,"next":"meta.next_cursor","style":"cursor"},"x-bisibility-sdk":{"group":"keywords","legacy":{"go":["ListKeywords"],"python":["list_keywords"],"ts":["listKeywords"]},"method":"list"},"tags":["keywords"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"addKeywords","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/SourceHeader"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"keywords":{"type":"array","minItems":1,"maxItems":500,"items":{"anyOf":[{"type":"object","properties":{"city":{"anyOf":[{"type":"string","minLength":1,"maxLength":120},{"type":"null"}]},"country":{"type":"string","enum":["United States","United Kingdom","Canada","Australia","Germany","France","Spain","Italy","Netherlands","Sweden","Poland","Ireland","Portugal","Belgium","Switzerland","Austria","Denmark","Norway","Finland","Brazil","Mexico","India","Japan","Singapore","New Zealand","South Africa","United Arab Emirates"],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordCreateCountry"},"device":{"type":"string","enum":["desktop","mobile"],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordCreateDevice"},"intent":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"null"}]},"keyword":{"type":"string","minLength":1,"maxLength":180},"language":{"type":"string","minLength":2,"maxLength":12},"location":{"type":"string","enum":["United States","United Kingdom","Canada","Australia","Germany","France","Spain","Italy","Netherlands","Sweden","Poland","Ireland","Portugal","Belgium","Switzerland","Austria","Denmark","Norway","Finland","Brazil","Mexico","India","Japan","Singapore","New Zealand","South Africa","United Arab Emirates"],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordCreateLocation"},"location_key":{"type":"string","maxLength":260},"schedule":{"x-bisibility-name":"KeywordCreateSchedule","type":"object","required":["frequency"],"properties":{"cron_expression":{"type":["string","null"],"minLength":1,"maxLength":120,"default":null},"frequency":{"type":"string","enum":["paused","manual","daily","weekly","monthly","custom_cron"],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordBulkFrequency"},"jitter_minutes":{"type":"integer","minimum":0,"maximum":120,"default":60},"serp_depth":{"type":["integer","null"],"enum":[10,20,50,100,null],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordBulkSerpDepth"},"timezone":{"type":"string","minLength":1,"maxLength":80,"default":"UTC"}}},"tags":{"default":[],"maxItems":12,"type":"array","items":{"type":"string","minLength":1,"maxLength":48}},"target_url":{"anyOf":[{"type":"string","minLength":1,"maxLength":500},{"type":"null"}]},"topic":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"null"}]}},"required":["keyword"],"x-bisibility-name":"KeywordAddItem"},{"type":"string","minLength":1,"maxLength":180}],"x-bisibility-name":"KeywordCreateInputItem","x-bisibility-union":{"style":"shorthand","canonical":"KeywordAddItem"}}}},"required":["keywords"],"x-bisibility-name":"KeywordCreateRequest"},{"type":"array","minItems":1,"maxItems":500,"items":{"type":"object","properties":{"city":{"anyOf":[{"type":"string","minLength":1,"maxLength":120},{"type":"null"}]},"country":{"type":"string","enum":["United States","United Kingdom","Canada","Australia","Germany","France","Spain","Italy","Netherlands","Sweden","Poland","Ireland","Portugal","Belgium","Switzerland","Austria","Denmark","Norway","Finland","Brazil","Mexico","India","Japan","Singapore","New Zealand","South Africa","United Arab Emirates"],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordCreateCountry"},"device":{"type":"string","enum":["desktop","mobile"],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordCreateDevice"},"intent":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"null"}]},"keyword":{"type":"string","minLength":1,"maxLength":180},"language":{"type":"string","minLength":2,"maxLength":12},"location":{"type":"string","enum":["United States","United Kingdom","Canada","Australia","Germany","France","Spain","Italy","Netherlands","Sweden","Poland","Ireland","Portugal","Belgium","Switzerland","Austria","Denmark","Norway","Finland","Brazil","Mexico","India","Japan","Singapore","New Zealand","South Africa","United Arab Emirates"],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordCreateLocation"},"location_key":{"type":"string","maxLength":260},"schedule":{"x-bisibility-name":"KeywordCreateSchedule","type":"object","required":["frequency"],"properties":{"cron_expression":{"type":["string","null"],"minLength":1,"maxLength":120,"default":null},"frequency":{"type":"string","enum":["paused","manual","daily","weekly","monthly","custom_cron"],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordBulkFrequency"},"jitter_minutes":{"type":"integer","minimum":0,"maximum":120,"default":60},"serp_depth":{"type":["integer","null"],"enum":[10,20,50,100,null],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordBulkSerpDepth"},"timezone":{"type":"string","minLength":1,"maxLength":80,"default":"UTC"}}},"tags":{"default":[],"maxItems":12,"type":"array","items":{"type":"string","minLength":1,"maxLength":48}},"target_url":{"anyOf":[{"type":"string","minLength":1,"maxLength":500},{"type":"null"}]},"topic":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"null"}]}},"required":["keyword"],"x-bisibility-name":"KeywordAddItem"}},{"type":"object","properties":{"city":{"anyOf":[{"type":"string","minLength":1,"maxLength":120},{"type":"null"}]},"country":{"type":"string","enum":["United States","United Kingdom","Canada","Australia","Germany","France","Spain","Italy","Netherlands","Sweden","Poland","Ireland","Portugal","Belgium","Switzerland","Austria","Denmark","Norway","Finland","Brazil","Mexico","India","Japan","Singapore","New Zealand","South Africa","United Arab Emirates"],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordCreateCountry"},"device":{"type":"string","enum":["desktop","mobile"],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordCreateDevice"},"intent":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"null"}]},"keyword":{"type":"string","minLength":1,"maxLength":180},"language":{"type":"string","minLength":2,"maxLength":12},"location":{"type":"string","enum":["United States","United Kingdom","Canada","Australia","Germany","France","Spain","Italy","Netherlands","Sweden","Poland","Ireland","Portugal","Belgium","Switzerland","Austria","Denmark","Norway","Finland","Brazil","Mexico","India","Japan","Singapore","New Zealand","South Africa","United Arab Emirates"],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordCreateLocation"},"location_key":{"type":"string","maxLength":260},"schedule":{"x-bisibility-name":"KeywordCreateSchedule","type":"object","required":["frequency"],"properties":{"cron_expression":{"type":["string","null"],"minLength":1,"maxLength":120,"default":null},"frequency":{"type":"string","enum":["paused","manual","daily","weekly","monthly","custom_cron"],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordBulkFrequency"},"jitter_minutes":{"type":"integer","minimum":0,"maximum":120,"default":60},"serp_depth":{"type":["integer","null"],"enum":[10,20,50,100,null],"x-bisibility-enum":"closed","x-bisibility-name":"KeywordBulkSerpDepth"},"timezone":{"type":"string","minLength":1,"maxLength":80,"default":"UTC"}}},"tags":{"default":[],"maxItems":12,"type":"array","items":{"type":"string","minLength":1,"maxLength":48}},"target_url":{"anyOf":[{"type":"string","minLength":1,"maxLength":500},{"type":"null"}]},"topic":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"null"}]}},"required":["keyword"],"x-bisibility-name":"KeywordAddItem"}],"x-bisibility-name":"KeywordCreateBody","x-bisibility-union":{"style":"shorthand","canonical":"KeywordCreateRequest"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"x-bisibility-name":"KeywordCreateResult","type":"object","properties":{"created":{"type":"integer","minimum":0},"skipped":{"type":"integer","minimum":0},"warnings":{"type":"array","items":{"type":"string"}},"results":{"type":"array","items":{"x-bisibility-name":"KeywordCreateItemResult","type":"object","properties":{"keyword":{"$ref":"#/components/schemas/Keyword"},"status":{"type":"string","enum":["created","skipped"],"x-bisibility-enum":"open","x-bisibility-name":"KeywordCreateStatus"},"warning":{"type":"string"}},"required":["keyword","status"]}}},"required":["created","skipped","results"]}}},"description":"JSON response"},"201":{"description":"At least one keyword created","content":{"application/json":{"schema":{"x-bisibility-name":"KeywordCreateResult","type":"object","properties":{"created":{"type":"integer","minimum":0},"skipped":{"type":"integer","minimum":0},"warnings":{"type":"array","items":{"type":"string"}},"results":{"type":"array","items":{"x-bisibility-name":"KeywordCreateItemResult","type":"object","properties":{"keyword":{"$ref":"#/components/schemas/Keyword"},"status":{"type":"string","enum":["created","skipped"],"x-bisibility-enum":"open","x-bisibility-name":"KeywordCreateStatus"},"warning":{"type":"string"}},"required":["keyword","status"]}}},"required":["created","skipped","results"]}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Add one or more keywords","x-bisibility-sdk":{"group":"keywords","method":"add","legacy":{"ts":["addKeywords"],"python":["add_keywords"],"go":["AddKeywords","CreateKeywords"]}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"tags":["keywords"],"x-bisibility-cost":{"kind":"paid","timing":"deferred"}}},"/projects/{project_id}/overview":{"get":{"operationId":"getProjectOverview","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"description":"Rank-history window used for overview comparisons.","in":"query","name":"range","schema":{"default":"28d","enum":["7d","28d","90d"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"OverviewRange"}},{"description":"Filter tracked keywords by SERP device.","in":"query","name":"device","schema":{"default":"all","enum":["all","desktop","mobile"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"OverviewDevice"}},{"description":"Filter tracked keywords by exact tag name.","in":"query","name":"tag","schema":{"maxLength":48,"type":"string"}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectOverview"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Get a numeric project overview","x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"x-bisibility-sdk":{"group":"analytics.overview","legacy":{"go":["GetProjectOverview"],"python":["get_project_overview"],"ts":["getProjectOverview"]},"method":"get"},"tags":["analytics"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/ranked-keyword-suggestions":{"get":{"operationId":"listRankedKeywordSuggestions","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"in":"query","name":"connection_id","schema":{"pattern":"^conn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"conn"}},{"in":"query","name":"offset","schema":{"default":0,"maximum":900,"minimum":0,"multipleOf":100,"type":"integer"}},{"in":"query","name":"limit","schema":{"default":100,"maximum":100,"minimum":1,"type":"integer"}},{"in":"query","name":"fresh","schema":{"default":false,"type":"boolean"}},{"description":"Best-effort pre-estimate provider cost gate, in cents.","in":"query","name":"max_cost_cents","schema":{"minimum":1,"type":"integer"}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RankedKeywordSuggestionsResponse"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Deployment credits exhausted for a paid provider request"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden, or `byok_required`: the account runs paid provider work only on its own provider keys and none serves this request"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable request"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"List ranked keyword suggestions","tags":["keyword-research"],"x-bisibility-cost":{"kind":"paid","timing":"inline","max_cost_cents":{"in":"query","minimum":1,"required":false}}}},"/projects/{project_id}/analytics/query-stats":{"get":{"operationId":"listSearchPerformanceQueryStats","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"in":"query","name":"start_date","required":true,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"in":"query","name":"end_date","required":true,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"in":"query","name":"connection_id","schema":{"minLength":1,"maxLength":120,"pattern":"^conn_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"conn"}},{"in":"query","name":"query","schema":{"minLength":1,"maxLength":1000,"type":"string"}},{"in":"query","name":"limit","schema":{"default":100,"maximum":1000,"minimum":1,"type":"integer"}},{"description":"Inclusive lower bound on clicks.","in":"query","name":"clicks_min","schema":{"minimum":0,"type":"integer"}},{"description":"Inclusive lower bound on impressions.","in":"query","name":"impressions_min","schema":{"minimum":0,"type":"integer"}},{"description":"Inclusive upper bound on average position.","in":"query","name":"position_max","schema":{"minimum":0,"type":"number"}},{"description":"Page path filter; setting it also groups rows by page.","in":"query","name":"page_path","schema":{"minLength":1,"maxLength":2048,"type":"string"}},{"description":"contains keeps rows whose page URL contains the given path; prefix matches pages whose URL starts with the source property host followed by the path.","in":"query","name":"page_path_match","schema":{"x-bisibility-enum":"closed","x-bisibility-name":"SearchPerformancePagePathMatchInput","default":"contains","enum":["contains","prefix"],"type":"string"}},{"description":"Match semantics for the query filter; default equals is exact match.","in":"query","name":"query_match","schema":{"x-bisibility-enum":"closed","x-bisibility-name":"SearchPerformanceQueryMatchInput","default":"equals","enum":["equals","contains"],"type":"string"}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchPerformanceQueryStatsResponse"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"No eligible search-performance source is connected."},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Provider authorization must be renewed (re-auth needed)."},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List search query statistics","x-bisibility-sdk":{"group":"analytics.searchPerformance","method":"list","legacy":{"ts":["listSearchPerformanceQueryStats"],"python":["list_search_performance_query_stats"],"go":["ListSearchPerformanceQueryStats"]}},"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"tags":["analytics"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/analytics/sync":{"post":{"operationId":"syncProjectTraffic","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrafficSyncSummary"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Sync analytics traffic","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["analytics"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/analytics/traffic-snapshots":{"get":{"operationId":"listTrafficSnapshots","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"in":"query","name":"start_date","required":true,"schema":{"format":"date","type":"string"}},{"in":"query","name":"end_date","required":true,"schema":{"format":"date","type":"string"}},{"explode":true,"in":"query","name":"path","schema":{"items":{"type":"string"},"maxItems":50,"type":"array"},"style":"form"},{"in":"query","name":"limit","schema":{"default":50,"maximum":200,"minimum":1,"type":"integer"}},{"in":"query","name":"offset","schema":{"default":0,"minimum":0,"type":"integer"}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageTrafficSnapshotsResponse"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List stored page traffic snapshots","tags":["analytics"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/backlinks":{"get":{"operationId":"analyzeBacklinks","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"description":"Domain for site scope or full URL for page scope.","in":"query","name":"target","required":true,"schema":{"minLength":1,"type":"string"}},{"in":"query","name":"target_scope","schema":{"default":"site","enum":["site","page"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"BacklinksTargetScope"}},{"description":"Ignored when target_scope is page.","in":"query","name":"include_subdomains","schema":{"default":true,"type":"boolean"}},{"in":"query","name":"result_limit","schema":{"default":100,"enum":[100,300,500,1000],"type":"integer","x-bisibility-enum":"closed","x-bisibility-name":"BacklinksResultLimit"}},{"description":"Provider-side row mode applied over the full corpus.","in":"query","name":"mode","schema":{"default":"as_is","enum":["as_is","one_per_domain"],"type":"string","x-bisibility-enum":"closed","x-bisibility-name":"BacklinksMode"}},{"description":"Return a free cache-aware provider cost estimate without a paid call.","in":"query","name":"estimate_only","schema":{"default":false,"type":"boolean"}},{"in":"query","name":"fresh","schema":{"default":false,"type":"boolean"}},{"description":"Limit admitted cost estimates across summary, history, rows and retries, in cents. Confirmed provider charges can differ from estimates.","in":"query","name":"max_cost_cents","schema":{"minimum":1,"type":"integer","x-bisibility-money":"usd_cents"}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacklinksResponse"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Deployment credits exhausted for a paid provider request"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden, or `byok_required`: the account runs paid provider work only on its own provider keys and none serves this request"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"unsupported_target from local validation before any paid call, needs_reauth, or cost_limit_exceeded"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"budget_exhausted, in_progress, or rate_limited"},"500":{"content":{"application/problem+json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Problem"},{"$ref":"#/components/schemas/BacklinksFailedSummaryProblem"}]}}},"description":"Unexpected failure, optionally carrying completed summary evidence after history failed. No rows were requested and total cost remains unknown."}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Analyze backlinks","description":"Requires write scope because cache misses spend provider budget. estimate_only=true needs only read scope and never spends provider budget. estimate_only is a free dry run, and max_cost_cents limits admitted cost estimates across summary, history, rows and retries. Confirmed provider charges can differ from estimates. Snapshots are cached for 24 hours. Aggregated referring-domain, page, and anchor views are consumer-side and must be labeled \"within fetched rows\".","x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"x-bisibility-sdk":{"group":"backlinks","legacy":{"go":["AnalyzeBacklinks"],"python":["analyze_backlinks"],"ts":["analyzeBacklinks"]},"method":"analyze"},"tags":["backlinks"],"x-bisibility-cost":{"kind":"paid","timing":"inline","estimate":{"in":"query","param":"estimate_only","response":"BacklinksEstimate"},"max_cost_cents":{"in":"query","minimum":1,"required":false}}}},"/projects/{project_id}/backlinks/rows":{"post":{"operationId":"loadMoreBacklinkRows","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/SourceHeader"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacklinksRowsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacklinksRowsResponse"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Deployment credits exhausted for a paid provider request"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden, or `byok_required`: the account runs paid provider work only on its own provider keys and none serves this request"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"snapshot_expired: the reference is missing, invalid, stale, outside the project scope, or expired; no paid request is dispatched; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"unsupported_target from local validation before any paid call, needs_reauth, or cost_limit_exceeded"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"budget_exhausted, in_progress, or rate_limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Load more backlink rows","description":"Extends the unexpired snapshot identified by snapshot_ref. Pass the reference returned by analyzeBacklinks or the previous loadMoreBacklinkRows response. estimate_only=true requires only read scope and returns a free upper-bound next-page estimate without changing the snapshot; retained pages estimate zero. max_cost_cents optionally caps the admitted estimate, with cost_limit_exceeded (422) before provider I/O. Otherwise the response contains only newly fetched rows plus the updated snapshot_ref, fetched_row_count and cost_cents.","x-bisibility-sdk":{"group":"backlinks","method":"extendSnapshot","legacy":{"ts":["loadMoreBacklinkRows"],"python":["load_more_backlink_rows"],"go":["LoadMoreBacklinkRows"]}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"tags":["backlinks"],"x-bisibility-cost":{"kind":"paid","timing":"inline","estimate":{"in":"body","param":"estimate_only","response":"BacklinksRowsEstimate"},"max_cost_cents":{"in":"body","minimum":0,"required":false}}}},"/projects/{project_id}/domain-overview/analyze":{"post":{"operationId":"analyzeDomainOverview","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainOverviewAnalyzeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainOverviewAnalyzeResponse"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Deployment credits exhausted for a paid provider request"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden, or `byok_required`: the account runs paid provider work only on its own provider keys and none serves this request"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DomainOverviewProblem"}}},"description":"unsupported_target, unsupported_location, needs_reauth, lookup_failed, or cost_limit_exceeded"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DomainOverviewProblem"}}},"description":"budget_exhausted, in_progress, or rate_limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Analyze a domain","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/SourceHeader"}],"description":"estimate_only is a free cache-aware dry run. estimate_only=true needs only read scope and never spends provider budget. Paid analysis requires an explicit max_cost_cents, including zero for cache-only access. Charged partial reports return HTTP 200 with nested module failures and their costs.","x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"x-bisibility-sdk":{"group":"domainOverview","legacy":{"go":["AnalyzeDomainOverview"],"python":["analyze_domain_overview"],"ts":["analyzeDomainOverview"]},"method":"analyze"},"tags":["domain-overview"],"x-bisibility-cost":{"kind":"paid","timing":"inline","estimate":{"in":"body","param":"estimate_only","response":"DomainOverviewEstimate"},"max_cost_cents":{"in":"body","minimum":0,"required":true}}}},"/projects/{project_id}/domain-overview/history":{"post":{"operationId":"loadDomainOverviewHistory","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainOverviewHistoryRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainOverviewHistoryResponse"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Deployment credits exhausted for a paid provider request"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden, or `byok_required`: the account runs paid provider work only on its own provider keys and none serves this request"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DomainOverviewProblem"}}},"description":"snapshot_expired; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DomainOverviewProblem"}}},"description":"unsupported_target, unsupported_location, needs_reauth, lookup_failed, or cost_limit_exceeded"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DomainOverviewProblem"}}},"description":"budget_exhausted, in_progress, or rate_limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Load domain history","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/SourceHeader"}],"description":"Loads the priced history module for a current overview snapshot. max_cost_cents is required; use zero for cache-only access.","x-bisibility-sdk":{"group":"domainOverview","method":"history","legacy":{"ts":["loadDomainOverviewHistory"],"python":["load_domain_overview_history"],"go":["LoadDomainOverviewHistory"]}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"tags":["domain-overview"],"x-bisibility-cost":{"kind":"paid","timing":"inline","max_cost_cents":{"in":"body","minimum":0,"required":true}}}},"/projects/{project_id}/domain-overview/keywords":{"post":{"operationId":"loadDomainOverviewKeywords","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainOverviewKeywordsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainOverviewKeywordsResponse"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Deployment credits exhausted for a paid provider request"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden, or `byok_required`: the account runs paid provider work only on its own provider keys and none serves this request"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DomainOverviewProblem"}}},"description":"snapshot_expired; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DomainOverviewProblem"}}},"description":"unsupported_target, unsupported_location, needs_reauth, lookup_failed, or cost_limit_exceeded"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DomainOverviewProblem"}}},"description":"budget_exhausted, in_progress, or rate_limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Load domain keywords","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/SourceHeader"}],"description":"Loads one provider-backed keyword page. max_cost_cents is required; use zero for cache-only access.","x-bisibility-sdk":{"group":"domainOverview","method":"keywords","legacy":{"ts":["loadDomainOverviewKeywords"],"python":["load_domain_overview_keywords"],"go":["LoadDomainOverviewKeywords"]}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"tags":["domain-overview"],"x-bisibility-cost":{"kind":"paid","timing":"inline","max_cost_cents":{"in":"body","minimum":0,"required":true}}}},"/projects/{project_id}/domain-overview/pages":{"post":{"operationId":"loadDomainOverviewPages","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainOverviewPagesRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainOverviewPagesResponse"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Deployment credits exhausted for a paid provider request"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden, or `byok_required`: the account runs paid provider work only on its own provider keys and none serves this request"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DomainOverviewProblem"}}},"description":"snapshot_expired; Unsupported API version"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DomainOverviewProblem"}}},"description":"unsupported_target, unsupported_location, needs_reauth, lookup_failed, or cost_limit_exceeded"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DomainOverviewProblem"}}},"description":"budget_exhausted, in_progress, or rate_limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Load domain pages","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/SourceHeader"}],"description":"Loads one provider-backed relevant-pages page. max_cost_cents is required; use zero for cache-only access.","x-bisibility-sdk":{"group":"domainOverview","method":"pages","legacy":{"ts":["loadDomainOverviewPages"],"python":["load_domain_overview_pages"],"go":["LoadDomainOverviewPages"]}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"tags":["domain-overview"],"x-bisibility-cost":{"kind":"paid","timing":"inline","max_cost_cents":{"in":"body","minimum":0,"required":true}}}},"/projects/{project_id}/research/reports":{"get":{"operationId":"listStoredResearchReports","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoredResearchReportsResponse"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List stored research reports","description":"Read-only view of a report that is already stored. Reads never call a provider and never require a connected provider. A report is fresh while now is before fresh_until.","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["research-reports"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/research/reports/{kind}":{"get":{"operationId":"getStoredResearchReport","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"description":"Report kind. The remaining query parameters are validated per kind.","in":"path","name":"kind","required":true,"schema":{"enum":["backlinks","domain_overview","keyword_research"],"type":"string"}},{"description":"Stored target; required for backlinks and domain overviews.","in":"query","name":"target","schema":{"type":"string"}},{"description":"site or page for backlinks; root or subdomain for overviews.","in":"query","name":"target_scope","schema":{"type":"string"}},{"description":"Backlinks row mode or keyword research mode as stored.","in":"query","name":"mode","schema":{"type":"string"}},{"description":"Backlinks include-subdomains flag as stored.","in":"query","name":"include_subdomains","schema":{"default":true,"type":"boolean"}},{"description":"Keyword research seed as stored. Required for keyword research.","in":"query","name":"seed","schema":{"type":"string"}},{"description":"Keyword research clickstream flag as stored.","in":"query","name":"include_clickstream","schema":{"default":false,"type":"boolean"}},{"description":"Keyword research result limit as stored.","in":"query","name":"result_limit","schema":{"default":100,"enum":[100,300,500],"type":"integer"}},{"description":"Provider connection public ID used when the report was stored.","in":"query","name":"connection_id","schema":{"type":"string"}},{"description":"Domain overview language code as stored.","in":"query","name":"language_code","schema":{"type":"string"}},{"description":"Domain overview location code as stored.","in":"query","name":"location_code","schema":{"type":"integer"}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoredResearchReportResponse"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Read a stored research report","description":"Read-only view of a report that is already stored. Reads never call a provider and never require a connected provider. A report is fresh while now is before fresh_until.","tags":["research-reports"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/saved-keywords":{"get":{"operationId":"listSavedKeywords","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/Cursor"},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"x-bisibility-name":"SavedKeyword","properties":{"cpc":{"type":["number","null"],"x-bisibility-money":"usd_number"},"difficulty":{"type":["integer","null"]},"id":{"example":"svkw_a00000000000000000000000","pattern":"^svkw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"svkw"},"intent":{"type":["string","null"]},"location":{"type":"string"},"saved_at":{"format":"date-time","type":"string"},"source_seed":{"type":["string","null"]},"text":{"type":"string"},"trend":{"items":{"x-bisibility-name":"SavedKeywordTrendPoint","properties":{"month":{"maximum":12,"minimum":1,"type":"integer"},"search_volume":{"type":["integer","null"]},"year":{"type":"integer"}},"required":["month","search_volume","year"],"type":"object"},"type":"array"},"variant_count":{"type":"integer"},"volume":{"type":["integer","null"]}},"required":["id","location","saved_at","text","trend","variant_count"],"type":"object"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"SavedKeywordList"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List saved keywords","x-bisibility-sdk":{"group":"keywords.saved","method":"list","legacy":{"ts":["listSavedKeywords"],"python":["list_saved_keywords"],"go":["ListSavedKeywords"]}},"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"cursor","items":"data","next":"meta.next_cursor","max_limit":200},"tags":["saved-keywords"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"createSavedKeywords","requestBody":{"content":{"application/json":{"schema":{"x-bisibility-name":"SavedKeywordsInput","properties":{"keywords":{"items":{"x-bisibility-name":"SavedKeywordInputItem","x-bisibility-union":{"style":"shorthand","canonical":"SavedKeywordInput"},"oneOf":[{"maxLength":180,"minLength":1,"type":"string"},{"x-bisibility-name":"SavedKeywordInput","properties":{"cpc_cents":{"type":["integer","null"],"minimum":0,"x-bisibility-money":"usd_cents"},"difficulty":{"maximum":100,"minimum":0,"type":["integer","null"]},"intent":{"type":["string","null"],"minLength":1,"maxLength":80},"keyword":{"maxLength":180,"minLength":1,"type":"string"},"location":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","maxLength":260},"search_volume":{"type":["integer","null"],"minimum":0},"source_seed":{"type":["string","null"],"minLength":1,"maxLength":180},"variant_count":{"minimum":0,"type":"integer"}},"required":["keyword"],"type":"object"}]},"maxItems":500,"minItems":1,"type":"array"}},"required":["keywords"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"x-bisibility-name":"SavedKeywordsCreateResult","properties":{"duplicate_count":{"type":"integer"},"results":{"items":{"x-bisibility-name":"SavedKeywordCreateItemResult","properties":{"keyword":{"type":"string"},"status":{"enum":["created","skipped"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"SavedKeywordCreateStatus"}},"required":["keyword","status"],"type":"object"},"type":"array"},"saved_count":{"type":"integer"}},"required":["duplicate_count","results","saved_count"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Save keywords without tracking them","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/SourceHeader"}],"x-bisibility-sdk":{"group":"keywords.saved","method":"create","legacy":{"ts":["createSavedKeywords"],"python":["create_saved_keywords"],"go":["CreateSavedKeywords"]}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"tags":["saved-keywords"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/saved-keywords/{saved_keyword_id}":{"delete":{"operationId":"deleteProjectSavedKeyword","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"in":"path","name":"saved_keyword_id","required":true,"schema":{"example":"svkw_a00000000000000000000000","pattern":"^svkw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"svkw"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"x-bisibility-name":"SavedKeywordDeleteResult","type":"object","properties":{"removed_count":{"type":"integer","minimum":0}},"required":["removed_count"]}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Delete a saved keyword","x-bisibility-sdk":{"group":"keywords.saved","method":"delete","legacy":{"ts":["deleteSavedKeyword"],"python":["delete_saved_keyword"],"go":["DeleteProjectSavedKeyword"]}},"x-bisibility-idempotency":"optional","x-bisibility-pagination":{"style":"none"},"tags":["saved-keywords"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/saved-views":{"get":{"operationId":"listSavedViews","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"in":"query","name":"surface","schema":{"default":"keywords","enum":["keywords","competitors"],"type":"string"}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"can_delete":{"type":"boolean"},"created_at":{"format":"date-time","type":"string"},"definition":{"anyOf":[{"type":"object","properties":{"filters":{"type":"object","properties":{"change":{"default":"any","type":"string","enum":["any","up","down","new","lost"]},"contains":{"default":"","type":"string","maxLength":80},"intents":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"last_check":{"default":"any","type":"string","enum":["any","completed","failed","not_checked","running"]},"position":{"default":[],"maxItems":4,"type":"array","items":{"type":"string","enum":["top3","top10","11-50","51-100"]}},"serp":{"default":[],"maxItems":8,"type":"array","items":{"type":"string","enum":["featured","paa","sitelinks","image","video","ai"]}},"tags":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"topics":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"url_changed":{"default":false,"type":"boolean"},"vol_max":{"default":50,"type":"number","minimum":0,"maximum":50},"vol_min":{"default":0,"type":"number","minimum":0,"maximum":50},"wrong_url":{"default":false,"type":"boolean"}},"required":["change","contains","intents","last_check","position","serp","tags","topics","url_changed","vol_max","vol_min","wrong_url"],"additionalProperties":false},"lens":{"type":"object","properties":{"device":{"default":"all","type":"string","enum":["all","desktop","mobile"]},"location_id":{"default":null,"nullable":true,"type":"string","minLength":1}},"required":["device","location_id"],"additionalProperties":false},"search":{"default":"","type":"string","maxLength":120},"surface":{"default":"keywords","type":"string","enum":["keywords"]},"version":{"default":1,"type":"number","enum":[1]}},"required":["filters","lens","search","surface","version"],"additionalProperties":false},{"type":"object","properties":{"filters":{"default":{"excludedKeywordIds":[],"position":"all","tag":null},"type":"object","properties":{"excluded_keyword_ids":{"default":[],"maxItems":10000,"type":"array","items":{"type":"string","minLength":1}},"position":{"default":"all","type":"string","enum":["all","top3","top10"]},"tag":{"default":null,"nullable":true,"type":"string","minLength":1,"maxLength":40}},"required":["excluded_keyword_ids","position","tag"],"additionalProperties":false},"scope":{"type":"object","properties":{"device":{"type":"string","enum":["desktop","mobile"]},"engine":{"type":"string","enum":["google"]},"location_id":{"type":"string","minLength":1}},"required":["device","engine","location_id"],"additionalProperties":false},"surface":{"type":"string","enum":["competitors"]},"version":{"type":"number","enum":[1]}},"required":["filters","scope","surface","version"],"additionalProperties":false},{"type":"object","properties":{"report_scope":{"default":{"view":"general","subject":null,"comparisonDays":7,"asOf":null},"type":"object","properties":{"view":{"type":"string","enum":["general","local"]},"subject":{"nullable":true,"type":"object","properties":{"scope":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["keyword"]},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["market"]},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false}]},"location_id":{"type":"string"},"identity_revision_id":{"type":"string","minLength":1,"maxLength":256},"assignment_revision":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":2147483647}},"required":["scope","location_id","identity_revision_id","assignment_revision"],"additionalProperties":false},"comparison_days":{"anyOf":[{"type":"number","enum":[7]},{"type":"number","enum":[28]},{"type":"number","enum":[90]}]},"as_of":{"nullable":true,"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"}},"required":["view","subject","comparison_days","as_of"],"additionalProperties":false},"filters":{"type":"object","properties":{"change":{"default":"any","type":"string","enum":["any","up","down","new","lost"]},"contains":{"default":"","type":"string","maxLength":80},"intents":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"last_check":{"default":"any","type":"string","enum":["any","completed","failed","not_checked","running"]},"position":{"default":[],"maxItems":4,"type":"array","items":{"type":"string","enum":["top3","top10","11-50","51-100"]}},"serp":{"default":[],"maxItems":8,"type":"array","items":{"type":"string","enum":["featured","paa","sitelinks","image","video","ai"]}},"tags":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"topics":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"url_changed":{"default":false,"type":"boolean"},"vol_max":{"default":50,"type":"number","minimum":0,"maximum":50},"vol_min":{"default":0,"type":"number","minimum":0,"maximum":50},"wrong_url":{"default":false,"type":"boolean"}},"required":["change","contains","intents","last_check","position","serp","tags","topics","url_changed","vol_max","vol_min","wrong_url"],"additionalProperties":false},"grouped":{"type":"boolean"},"lens":{"type":"object","properties":{"device":{"type":"string","enum":["all","desktop","mobile"]},"location_id":{"nullable":true,"type":"string","minLength":1,"maxLength":128}},"required":["device","location_id"],"additionalProperties":false},"page_size":{"anyOf":[{"type":"number","enum":[25]},{"type":"number","enum":[50]},{"type":"number","enum":[100]}]},"presentation":{"type":"object","properties":{"column_order":{"default":[],"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"registry_version":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"sizing":{"default":{},"type":"object","additionalProperties":{"type":"number","minimum":16,"maximum":4096}},"version":{"type":"number","enum":[1]},"visibility":{"default":{},"type":"object","additionalProperties":{"type":"boolean"}}},"required":["column_order","registry_version","sizing","version","visibility"],"additionalProperties":false},"search":{"type":"string","maxLength":120},"sort":{"type":"object","properties":{"direction":{"type":"string","enum":["asc","desc"]},"field":{"type":"string","enum":["keyword","device","position","change","volume","difficulty","sparkline","clicks","impressions","ctr","lastChecked","frequency","location","targetRanking","tags","topic","intent"]}},"required":["direction","field"],"additionalProperties":false},"surface":{"type":"string","enum":["keywords"]},"version":{"type":"number","enum":[2]}},"required":["report_scope","filters","grouped","lens","page_size","presentation","search","sort","surface","version"],"additionalProperties":false},{"type":"object","properties":{"filters":{"type":"object","properties":{"excluded_keyword_ids":{"default":[],"maxItems":10000,"type":"array","items":{"type":"string","minLength":1}},"position":{"default":"all","type":"string","enum":["all","top3","top10"]},"tag":{"default":null,"nullable":true,"type":"string","minLength":1,"maxLength":40}},"required":["excluded_keyword_ids","position","tag"],"additionalProperties":false},"grouped":{"type":"boolean"},"page_size":{"anyOf":[{"type":"number","enum":[25]},{"type":"number","enum":[50]},{"type":"number","enum":[100]}]},"presentation":{"type":"object","properties":{"column_order":{"default":[],"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"registry_version":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"sizing":{"default":{},"type":"object","additionalProperties":{"type":"number","minimum":16,"maximum":4096}},"version":{"type":"number","enum":[1]},"visibility":{"default":{},"type":"object","additionalProperties":{"type":"boolean"}}},"required":["column_order","registry_version","sizing","version","visibility"],"additionalProperties":false},"scope":{"type":"object","properties":{"device":{"type":"string","enum":["desktop","mobile"]},"engine":{"type":"string","enum":["google"]},"location_id":{"type":"string","minLength":1,"maxLength":128}},"required":["device","engine","location_id"],"additionalProperties":false},"sort":{"type":"object","properties":{"direction":{"type":"string","enum":["asc","desc"]},"field":{"type":"string","minLength":1,"maxLength":128}},"required":["direction","field"],"additionalProperties":false},"surface":{"type":"string","enum":["competitors"]},"version":{"type":"number","enum":[2]}},"required":["filters","grouped","page_size","presentation","scope","sort","surface","version"],"additionalProperties":false}]},"revision":{"maximum":2147483647,"minimum":1,"type":"integer"},"visibility":{"enum":["project"],"type":"string"},"config":{"additionalProperties":true,"type":"object"},"id":{"example":"viw_a00000000000000000000000","pattern":"^viw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"viw"},"name":{"type":"string"},"surface":{"enum":["keywords","competitors"],"type":"string"}},"required":["config","id","name","surface","created_at","can_delete","definition","revision","visibility"],"type":"object"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List saved views","tags":["saved-views"],"x-bisibility-cost":{"kind":"free"}},"post":{"operationId":"createSavedView","requestBody":{"content":{"application/json":{"schema":{"properties":{"config":{"additionalProperties":true,"type":"object"},"name":{"maxLength":48,"minLength":1,"type":"string"},"surface":{"enum":["keywords","competitors"],"type":"string"}},"required":["config","name"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"can_delete":{"type":"boolean"},"created_at":{"format":"date-time","type":"string"},"definition":{"anyOf":[{"type":"object","properties":{"filters":{"type":"object","properties":{"change":{"default":"any","type":"string","enum":["any","up","down","new","lost"]},"contains":{"default":"","type":"string","maxLength":80},"intents":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"last_check":{"default":"any","type":"string","enum":["any","completed","failed","not_checked","running"]},"position":{"default":[],"maxItems":4,"type":"array","items":{"type":"string","enum":["top3","top10","11-50","51-100"]}},"serp":{"default":[],"maxItems":8,"type":"array","items":{"type":"string","enum":["featured","paa","sitelinks","image","video","ai"]}},"tags":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"topics":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"url_changed":{"default":false,"type":"boolean"},"vol_max":{"default":50,"type":"number","minimum":0,"maximum":50},"vol_min":{"default":0,"type":"number","minimum":0,"maximum":50},"wrong_url":{"default":false,"type":"boolean"}},"required":["change","contains","intents","last_check","position","serp","tags","topics","url_changed","vol_max","vol_min","wrong_url"],"additionalProperties":false},"lens":{"type":"object","properties":{"device":{"default":"all","type":"string","enum":["all","desktop","mobile"]},"location_id":{"default":null,"nullable":true,"type":"string","minLength":1}},"required":["device","location_id"],"additionalProperties":false},"search":{"default":"","type":"string","maxLength":120},"surface":{"default":"keywords","type":"string","enum":["keywords"]},"version":{"default":1,"type":"number","enum":[1]}},"required":["filters","lens","search","surface","version"],"additionalProperties":false},{"type":"object","properties":{"filters":{"default":{"excludedKeywordIds":[],"position":"all","tag":null},"type":"object","properties":{"excluded_keyword_ids":{"default":[],"maxItems":10000,"type":"array","items":{"type":"string","minLength":1}},"position":{"default":"all","type":"string","enum":["all","top3","top10"]},"tag":{"default":null,"nullable":true,"type":"string","minLength":1,"maxLength":40}},"required":["excluded_keyword_ids","position","tag"],"additionalProperties":false},"scope":{"type":"object","properties":{"device":{"type":"string","enum":["desktop","mobile"]},"engine":{"type":"string","enum":["google"]},"location_id":{"type":"string","minLength":1}},"required":["device","engine","location_id"],"additionalProperties":false},"surface":{"type":"string","enum":["competitors"]},"version":{"type":"number","enum":[1]}},"required":["filters","scope","surface","version"],"additionalProperties":false},{"type":"object","properties":{"report_scope":{"default":{"view":"general","subject":null,"comparisonDays":7,"asOf":null},"type":"object","properties":{"view":{"type":"string","enum":["general","local"]},"subject":{"nullable":true,"type":"object","properties":{"scope":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["keyword"]},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["market"]},"id":{"type":"string"}},"required":["kind","id"],"additionalProperties":false}]},"location_id":{"type":"string"},"identity_revision_id":{"type":"string","minLength":1,"maxLength":256},"assignment_revision":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":2147483647}},"required":["scope","location_id","identity_revision_id","assignment_revision"],"additionalProperties":false},"comparison_days":{"anyOf":[{"type":"number","enum":[7]},{"type":"number","enum":[28]},{"type":"number","enum":[90]}]},"as_of":{"nullable":true,"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"}},"required":["view","subject","comparison_days","as_of"],"additionalProperties":false},"filters":{"type":"object","properties":{"change":{"default":"any","type":"string","enum":["any","up","down","new","lost"]},"contains":{"default":"","type":"string","maxLength":80},"intents":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"last_check":{"default":"any","type":"string","enum":["any","completed","failed","not_checked","running"]},"position":{"default":[],"maxItems":4,"type":"array","items":{"type":"string","enum":["top3","top10","11-50","51-100"]}},"serp":{"default":[],"maxItems":8,"type":"array","items":{"type":"string","enum":["featured","paa","sitelinks","image","video","ai"]}},"tags":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":40}},"topics":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"url_changed":{"default":false,"type":"boolean"},"vol_max":{"default":50,"type":"number","minimum":0,"maximum":50},"vol_min":{"default":0,"type":"number","minimum":0,"maximum":50},"wrong_url":{"default":false,"type":"boolean"}},"required":["change","contains","intents","last_check","position","serp","tags","topics","url_changed","vol_max","vol_min","wrong_url"],"additionalProperties":false},"grouped":{"type":"boolean"},"lens":{"type":"object","properties":{"device":{"type":"string","enum":["all","desktop","mobile"]},"location_id":{"nullable":true,"type":"string","minLength":1,"maxLength":128}},"required":["device","location_id"],"additionalProperties":false},"page_size":{"anyOf":[{"type":"number","enum":[25]},{"type":"number","enum":[50]},{"type":"number","enum":[100]}]},"presentation":{"type":"object","properties":{"column_order":{"default":[],"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"registry_version":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"sizing":{"default":{},"type":"object","additionalProperties":{"type":"number","minimum":16,"maximum":4096}},"version":{"type":"number","enum":[1]},"visibility":{"default":{},"type":"object","additionalProperties":{"type":"boolean"}}},"required":["column_order","registry_version","sizing","version","visibility"],"additionalProperties":false},"search":{"type":"string","maxLength":120},"sort":{"type":"object","properties":{"direction":{"type":"string","enum":["asc","desc"]},"field":{"type":"string","enum":["keyword","device","position","change","volume","difficulty","sparkline","clicks","impressions","ctr","lastChecked","frequency","location","targetRanking","tags","topic","intent"]}},"required":["direction","field"],"additionalProperties":false},"surface":{"type":"string","enum":["keywords"]},"version":{"type":"number","enum":[2]}},"required":["report_scope","filters","grouped","lens","page_size","presentation","search","sort","surface","version"],"additionalProperties":false},{"type":"object","properties":{"filters":{"type":"object","properties":{"excluded_keyword_ids":{"default":[],"maxItems":10000,"type":"array","items":{"type":"string","minLength":1}},"position":{"default":"all","type":"string","enum":["all","top3","top10"]},"tag":{"default":null,"nullable":true,"type":"string","minLength":1,"maxLength":40}},"required":["excluded_keyword_ids","position","tag"],"additionalProperties":false},"grouped":{"type":"boolean"},"page_size":{"anyOf":[{"type":"number","enum":[25]},{"type":"number","enum":[50]},{"type":"number","enum":[100]}]},"presentation":{"type":"object","properties":{"column_order":{"default":[],"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"registry_version":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"sizing":{"default":{},"type":"object","additionalProperties":{"type":"number","minimum":16,"maximum":4096}},"version":{"type":"number","enum":[1]},"visibility":{"default":{},"type":"object","additionalProperties":{"type":"boolean"}}},"required":["column_order","registry_version","sizing","version","visibility"],"additionalProperties":false},"scope":{"type":"object","properties":{"device":{"type":"string","enum":["desktop","mobile"]},"engine":{"type":"string","enum":["google"]},"location_id":{"type":"string","minLength":1,"maxLength":128}},"required":["device","engine","location_id"],"additionalProperties":false},"sort":{"type":"object","properties":{"direction":{"type":"string","enum":["asc","desc"]},"field":{"type":"string","minLength":1,"maxLength":128}},"required":["direction","field"],"additionalProperties":false},"surface":{"type":"string","enum":["competitors"]},"version":{"type":"number","enum":[2]}},"required":["filters","grouped","page_size","presentation","scope","sort","surface","version"],"additionalProperties":false}]},"revision":{"maximum":2147483647,"minimum":1,"type":"integer"},"visibility":{"enum":["project"],"type":"string"},"config":{"additionalProperties":true,"type":"object"},"id":{"example":"viw_a00000000000000000000000","pattern":"^viw_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"viw"},"name":{"type":"string"},"surface":{"enum":["keywords","competitors"],"type":"string"}},"required":["config","id","name","surface","created_at","can_delete","definition","revision","visibility"],"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Create a saved view","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["saved-views"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/signals":{"get":{"operationId":"listSignals","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"description":"Filter by signal source.","in":"query","name":"source","schema":{"enum":["rank_tracker","search_analytics","url_inspection","sitemap","deploy","cms","search_engine_status","manual","api"],"type":"string"}},{"description":"Filter by signal type.","in":"query","name":"type","schema":{"type":"string"}},{"description":"Return signals at or after this ISO-8601 date-time.","in":"query","name":"from","schema":{"format":"date-time","type":"string"}},{"description":"Return signals at or before this ISO-8601 date-time.","in":"query","name":"to","schema":{"format":"date-time","type":"string"}},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Signal"},"type":"array"},"meta":{"properties":{"next_cursor":{"type":["string","null"]}},"required":["next_cursor"],"type":"object","x-bisibility-name":"PageMeta"}},"required":["data","meta"],"type":"object","x-bisibility-name":"SignalPage"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"List project signals","tags":["signals"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/team/invites/{invite_id}/resend":{"post":{"operationId":"resendTeamInvite","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamInviteResendResult"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]}],"summary":"Resend a pending team invite","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["team"],"x-bisibility-cost":{"kind":"free"}}},"/projects/{project_id}/team/members/{member_id}":{"delete":{"operationId":"removeTeamMember","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberMutationResult"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]}],"summary":"Remove a non-owner team member","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"description":"Project API keys act with admin-level permissions. Removing an admin-tier member or deleting a project needs an owner's personal access token.","tags":["team"],"x-bisibility-cost":{"kind":"free"}},"patch":{"operationId":"updateTeamMemberRole","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberRolePatch"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberRoleResult"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]}],"summary":"Change a non-owner team member role","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"project_id","required":true,"schema":{"example":"prj_a00000000000000000000000","pattern":"^prj_[a-z][a-z0-9]{23}$","type":"string","description":"Public project ID; membership and token scope are enforced.","x-bisibility-public-id":"prj"}},{"$ref":"#/components/parameters/SourceHeader"}],"description":"Project API keys act with admin-level permissions. Changing an admin-tier member or deleting a project needs an owner's personal access token.","tags":["team"],"x-bisibility-cost":{"kind":"free"}}},"/rank-checks/{check_id}":{"get":{"operationId":"getRankCheckResult","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"in":"path","name":"check_id","required":true,"schema":{"example":"check_a00000000000000000000000","pattern":"^check_[a-z][a-z0-9]{23}$","type":"string","x-bisibility-public-id":"check"}},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RankCheck"}}},"description":"JSON response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:read"]}],"summary":"Get one rank check","x-bisibility-sdk":{"group":"rankChecks","method":"getResult","legacy":{"ts":["getRankCheckResult"],"python":["get_rank_check_result"],"go":["GetRankCheckResult"]}},"x-bisibility-idempotency":"none","x-bisibility-pagination":{"style":"none"},"tags":["rank-checks"],"x-bisibility-cost":{"kind":"free"}}},"/signals":{"post":{"operationId":"createSignal","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Signal"}}},"description":"Signal ingested"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported API version"},"423":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Project read-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Rate limited"}},"security":[{"ProjectApiKey":[]},{"PersonalAccessToken":[]},{"AppOAuth":["api:write"]}],"summary":"Ingest a project signal","parameters":[{"description":"API contract version requested by the client. Omit this header to use the current backward-compatible behavior.","in":"header","name":"Bisibility-API-Version","required":false,"schema":{"enum":["v1"],"type":"string","x-bisibility-enum":"open","x-bisibility-name":"ApiVersion"}},{"$ref":"#/components/parameters/ProjectHeader"},{"$ref":"#/components/parameters/ProjectQuery"},{"$ref":"#/components/parameters/SourceHeader"}],"tags":["signals"],"x-bisibility-cost":{"kind":"free"}}}},"servers":[{"url":"/api/v1"}],"tags":[{"name":"ai-tracking","description":"Configure AI observations and inspect project-scoped answers, citations and comparable history.","x-group":"AI Tracking"},{"name":"discovery","description":"Discover the API contract, capabilities, health, and public provider pricing.","x-group":"Discovery"},{"name":"account-access","description":"Manage the authenticated account and personal access tokens.","x-group":"Account & Access"},{"name":"projects","description":"Create projects and manage their core settings.","x-group":"Projects"},{"name":"api-keys","description":"Create, list, and revoke API keys.","x-group":"API Keys"},{"name":"keywords","description":"Manage tracked keywords and exact keyword matching.","x-group":"Keywords"},{"name":"rank-checks","description":"Run rank checks and retrieve rank-check history.","x-group":"Rank Checks"},{"name":"keyword-research","description":"Research keywords, metrics, locations, and ranked keyword suggestions.","x-group":"Keyword Research"},{"name":"backlinks","description":"Analyze backlinks and page through backlink snapshots.","x-group":"Backlinks"},{"name":"domain-overview","description":"Analyze domain visibility and load its history, keywords, and pages.","x-group":"Domain Overview"},{"name":"research-reports","description":"Read stored research reports with their freshness state.","x-group":"Research Reports"},{"name":"analytics","description":"Read project analytics, traffic snapshots, and search-performance data.","x-group":"Analytics"},{"name":"alerts","description":"Manage alert rules, triggered alerts, and notification preferences.","x-group":"Alerts"},{"name":"competitors","description":"Manage project competitors.","x-group":"Competitors"},{"name":"sitemap-monitoring","description":"Inspect and configure project sitemap monitoring.","x-group":"Sitemap Monitoring"},{"name":"saved-keywords","description":"Save keywords for later without putting them under rank tracking.","x-group":"Saved Keywords"},{"name":"saved-views","description":"Create, list, and delete saved views.","x-group":"Saved Views"},{"name":"signals","description":"Ingest and list project signals.","x-group":"Signals"},{"name":"providers","description":"Connect and configure external providers.","x-group":"Providers"},{"name":"webhooks","description":"Create and manage webhook endpoints.","x-group":"Webhooks"},{"name":"team","description":"Manage team members and invitations.","x-group":"Team"},{"name":"migration","description":"Manage migration tokens and instance import sessions.","x-group":"Migration"}]}