{"components":{"schemas":{"account.feedback.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"status":{"const":"new","type":"string"}},"required":["id","status"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"account.feedback.body.request":{"additionalProperties":false,"properties":{"agent":{"maxLength":100,"minLength":1,"type":"string"},"cliVersion":{"maxLength":64,"minLength":1,"type":"string"},"command":{"maxLength":200,"minLength":1,"type":"string"},"comment":{"maxLength":2000,"minLength":1,"type":"string"},"intent":{"default":"bug","enum":["bug","improvement"],"type":"string"},"requestId":{"maxLength":128,"minLength":1,"type":"string"}},"required":["command","comment","agent","cliVersion"],"type":"object"},"account.feedback.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"account.token.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"credential":{"enum":["api_token","session"],"type":"string"},"role":{"enum":["viewer","member","admin","owner"],"type":"string"},"scopes":{"items":{"enum":["account:read","actions:read","actions:write","analytics:read","audit:read","feedback:write","page:read","page:write","research:read","research:write","sites:read","sites:write","timeline:read","timeline:write"],"type":"string"},"type":"array"},"team":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"type":["string","null"]},"plan":{"enum":["free","pro","lifetime"],"type":"string"}},"required":["id","name","plan"],"type":"object"},"token":{"anyOf":[{"additionalProperties":false,"properties":{"client":{"type":["string","null"]},"createdAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"expiresAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"id":{"minLength":1,"type":"string"},"label":{"type":["string","null"]},"lastUsedAt":{"anyOf":[{"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":"string"},{"type":"null"}]}},"required":["id","label","client","createdAt","lastUsedAt","expiresAt"],"type":"object"},{"type":"null"}]},"user":{"additionalProperties":false,"properties":{"email":{"type":["string","null"]},"id":{"minLength":1,"type":"string"}},"required":["id","email"],"type":"object"}},"required":["credential","role","scopes","team","token","user"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"account.token.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"account.usage.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"meters":{"items":{"additionalProperties":false,"properties":{"blocked":{"type":"boolean"},"description":{"minLength":1,"type":"string"},"group":{"enum":["integrations","compute","capacity"],"type":"string"},"key":{"minLength":1,"type":"string"},"label":{"minLength":1,"type":"string"},"limit":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}]},"overCap":{"type":"boolean"},"resetsAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"unit":{"minLength":1,"type":"string"},"upgradeCopy":{"items":{"additionalProperties":false,"properties":{"gain":{"minLength":1,"type":"string"},"tier":{"enum":["free","pro","lifetime"],"type":"string"}},"required":["tier","gain"],"type":"object"},"type":"array"},"used":{"minimum":0,"type":"number"}},"required":["key","label","description","group","unit","used","limit","blocked","overCap","resetsAt","upgradeCopy"],"type":"object"},"type":"array"},"plan":{"enum":["free","pro","lifetime"],"type":"string"}},"required":["plan","meters"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version","total"],"type":"object"}},"required":["data","meta"],"type":"object"},"account.usage.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"account.usage.query.request":{"additionalProperties":false,"properties":{"group":{"enum":["integrations","compute","capacity"],"type":"string"}},"type":"object"},"actions.dismiss.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"actionId":{"minLength":1,"type":"string"},"message":{"minLength":1,"type":"string"},"status":{"minLength":1,"type":"string"}},"required":["actionId","status","message"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"actions.dismiss.body.request":{"additionalProperties":false,"properties":{"artifactVersion":{"minLength":1,"type":"string"},"note":{"maxLength":2000,"minLength":1,"type":"string"}},"required":["artifactVersion","note"],"type":"object"},"actions.dismiss.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"actions.dismiss.path.request":{"additionalProperties":false,"properties":{"actionId":{"minLength":1,"type":"string"},"siteId":{"minLength":1,"type":"string"}},"required":["siteId","actionId"],"type":"object"},"actions.list.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"actions":{"items":{"additionalProperties":false,"properties":{"affectedPages":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"authoredBy":{"enum":["detector","agent"],"type":"string"},"diagnosis":{"minLength":1,"type":"string"},"effort":{"enum":["S","M","L"],"type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifactVersion":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"asOf":{"anyOf":[{"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":"string"},{"type":"null"}]},"coverage":{"enum":["complete","partial","count-only","unknown","unavailable"],"type":"string"},"freshness":{"additionalProperties":false,"properties":{"ageHours":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"confidence":{"enum":["sealed","reasserted","unknown"],"type":"string"},"observedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"source":{"enum":["producer","action-observation","none"],"type":"string"},"verdict":{"enum":["recent","aged","unknown"],"type":"string"}},"required":["observedAt","ageHours","verdict","source","confidence"],"type":"object"},"groupCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"knownTotal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"observedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"primaryKnownTotal":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"reportedTotal":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["artifactVersion","coverage","primaryKnownTotal","knownTotal","reportedTotal","groupCount","observedAt","asOf","freshness"],"type":"object"},"findingType":{"minLength":1,"type":"string"},"firstSeenAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"id":{"minLength":1,"type":"string"},"relatedActionIds":{"items":{"minLength":1,"type":"string"},"type":"array"},"resolution":{"anyOf":[{"additionalProperties":false,"properties":{"artifactVersion":{"minLength":1,"type":"string"},"evidenceScope":{"enum":["complete","partial","count-only","unknown"],"type":"string"}},"required":["artifactVersion","evidenceScope"],"type":"object"},{"type":"null"}]},"source":{"anyOf":[{"additionalProperties":false,"properties":{"label":{"minLength":1,"type":"string"},"url":{"format":"uri","type":"string"}},"required":["label","url"],"type":"object"},{"type":"null"}]},"status":{"minLength":1,"type":"string"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"kind":{"minLength":1,"type":"string"},"label":{"minLength":1,"type":"string"},"redirectsTo":{"type":"string"},"url":{"type":"string"}},"required":["kind","label"],"type":"object"},{"type":"null"}]},"workLocation":{"enum":["code","infra","off-site"],"type":"string"}},"required":["id","status","diagnosis","subject","source","authoredBy","findingType","workLocation","effort","affectedPages","evidence","firstSeenAt","relatedActionIds","resolution"],"type":"object"},"type":"array"},"listedAsOf":{"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":"string"},"page":{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"limit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","limit","offset","hasMore"],"type":"object"},"rows":{"items":{"additionalProperties":false,"properties":{"affectedPages":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"authoredBy":{"enum":["detector","agent"],"type":"string"},"diagnosis":{"minLength":1,"type":"string"},"effort":{"enum":["S","M","L"],"type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifactVersion":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"asOf":{"anyOf":[{"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":"string"},{"type":"null"}]},"coverage":{"enum":["complete","partial","count-only","unknown","unavailable"],"type":"string"},"freshness":{"additionalProperties":false,"properties":{"ageHours":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"confidence":{"enum":["sealed","reasserted","unknown"],"type":"string"},"observedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"source":{"enum":["producer","action-observation","none"],"type":"string"},"verdict":{"enum":["recent","aged","unknown"],"type":"string"}},"required":["observedAt","ageHours","verdict","source","confidence"],"type":"object"},"groupCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"knownTotal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"observedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"primaryKnownTotal":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"reportedTotal":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["artifactVersion","coverage","primaryKnownTotal","knownTotal","reportedTotal","groupCount","observedAt","asOf","freshness"],"type":"object"},"findingType":{"minLength":1,"type":"string"},"firstSeenAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"id":{"minLength":1,"type":"string"},"relatedActionIds":{"items":{"minLength":1,"type":"string"},"type":"array"},"resolution":{"anyOf":[{"additionalProperties":false,"properties":{"artifactVersion":{"minLength":1,"type":"string"},"evidenceScope":{"enum":["complete","partial","count-only","unknown"],"type":"string"}},"required":["artifactVersion","evidenceScope"],"type":"object"},{"type":"null"}]},"source":{"anyOf":[{"additionalProperties":false,"properties":{"label":{"minLength":1,"type":"string"},"url":{"format":"uri","type":"string"}},"required":["label","url"],"type":"object"},{"type":"null"}]},"status":{"minLength":1,"type":"string"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"kind":{"minLength":1,"type":"string"},"label":{"minLength":1,"type":"string"},"redirectsTo":{"type":"string"},"url":{"type":"string"}},"required":["kind","label"],"type":"object"},{"type":"null"}]},"workLocation":{"enum":["code","infra","off-site"],"type":"string"}},"required":["id","status","diagnosis","subject","source","authoredBy","findingType","workLocation","effort","affectedPages","evidence","firstSeenAt","relatedActionIds","resolution"],"type":"object"},"type":"array"}},"required":["actions","rows","page","listedAsOf"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"actions.list.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"actions.list.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"actions.list.query.request":{"additionalProperties":false,"properties":{"limit":{"default":10,"maximum":25,"minimum":1,"type":"integer"},"offset":{"default":0,"maximum":9007199254740991,"minimum":0,"type":"integer"}},"type":"object"},"actions.resolve.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"actionId":{"minLength":1,"type":"string"},"checkBackAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"markedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"status":{"minLength":1,"type":"string"},"verification":{"enum":["recheck-queued","scan-queued","next-assessment","metric-watch","user-resolved"],"type":"string"}},"required":["actionId","status","markedAt","checkBackAt","verification"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"actions.resolve.body.request":{"additionalProperties":false,"properties":{"artifactVersion":{"minLength":1,"type":"string"}},"required":["artifactVersion"],"type":"object"},"actions.resolve.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"actions.resolve.path.request":{"additionalProperties":false,"properties":{"actionId":{"minLength":1,"type":"string"},"siteId":{"minLength":1,"type":"string"}},"required":["siteId","actionId"],"type":"object"},"actions.show.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"artifactVersion":{"minLength":1,"type":"string"},"asOf":{"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":"string"},"assessmentId":{"minLength":1,"type":"string"},"checkBackAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"diagnosis":{"minLength":1,"type":"string"},"evidenceGroups":{"items":{"additionalProperties":false,"properties":{"coverage":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"complete","type":"string"},"knownTotal":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["_tag","knownTotal"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"partial","type":"string"},"knownTotal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"limitation":{"minLength":1,"type":"string"},"reportedTotal":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["_tag","reportedTotal","knownTotal","limitation"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"count-only","type":"string"},"limitation":{"minLength":1,"type":"string"},"reportedTotal":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["_tag","reportedTotal","limitation"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"unknown","type":"string"},"knownTotal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"limitation":{"minLength":1,"type":"string"}},"required":["_tag","knownTotal","limitation"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"unavailable","type":"string"},"limitation":{"minLength":1,"type":"string"}},"required":["_tag","limitation"],"type":"object"}]},"id":{"minLength":1,"type":"string"},"items":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"page-status","type":"string"},"id":{"minLength":1,"type":"string"},"status":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"url":{"format":"uri","type":"string"}},"required":["_tag","id","url","status"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"link-edge","type":"string"},"id":{"minLength":1,"type":"string"},"sourceUrl":{"format":"uri","type":"string"},"targetStatus":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"targetUrl":{"format":"uri","type":"string"}},"required":["_tag","id","sourceUrl","targetUrl","targetStatus"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"provider-page","type":"string"},"id":{"minLength":1,"type":"string"},"observedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"reason":{"minLength":1,"type":"string"},"url":{"format":"uri","type":"string"}},"required":["_tag","id","url","reason","observedAt"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"page","type":"string"},"detail":{"type":["string","null"]},"id":{"minLength":1,"type":"string"},"url":{"format":"uri","type":"string"}},"required":["_tag","id","url","detail"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"element","type":"string"},"explanation":{"maxLength":2048,"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"page":{"anyOf":[{"format":"uri","type":"string"},{"type":"null"}]},"selector":{"minLength":1,"type":"string"},"snippet":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]}},"required":["_tag","id","snippet","page"],"type":"object"}]},"type":"array"},"nextCursor":{"type":["string","null"]},"relation":{"minLength":1,"type":"string"},"source":{"additionalProperties":false,"properties":{"collectedAt":{"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":"string"},"generationId":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"minLength":1,"type":"string"},"observedAt":{"anyOf":[{"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":"string"},{"type":"null"}]}},"required":["kind","generationId","observedAt","collectedAt"],"type":"object"}},"required":["id","relation","source","coverage","items","nextCursor"],"type":"object"},"type":"array"},"findingType":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"markedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"materiality":{"additionalProperties":false,"properties":{"affectedSubjects":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"internalReferrers":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["affectedSubjects","internalReferrers"],"type":"object"},"status":{"minLength":1,"type":"string"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"kind":{"minLength":1,"type":"string"},"label":{"minLength":1,"type":"string"},"redirectsTo":{"type":"string"},"url":{"type":"string"}},"required":["kind","label"],"type":"object"},{"type":"null"}]},"verifier":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"target-healthy","type":"string"},"url":{"format":"uri","type":"string"}},"required":["_tag","url"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"finding-cleared","type":"string"},"findingType":{"minLength":1,"type":"string"}},"required":["_tag","findingType"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"metric","type":"string"},"metric":{"minLength":1,"type":"string"}},"required":["_tag","metric"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"user-attested","type":"string"}},"required":["_tag"],"type":"object"}]},"workPrompt":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]}},"required":["id","status","markedAt","checkBackAt","findingType","artifactVersion","assessmentId","asOf","diagnosis","subject","action","workPrompt","verifier","materiality","evidenceGroups"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"actions.show.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"actions.show.path.request":{"additionalProperties":false,"properties":{"actionId":{"minLength":1,"type":"string"},"siteId":{"minLength":1,"type":"string"}},"required":["siteId","actionId"],"type":"object"},"actions.show.query.request":{"additionalProperties":false,"properties":{"cursor":{"minLength":1,"type":"string"},"groupId":{"minLength":1,"type":"string"},"limit":{"default":50,"maximum":100,"minimum":1,"type":"integer"}},"type":"object"},"analytics.query.200.response":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"bounceRate":{"additionalProperties":false,"properties":{"absolute":{"type":"number"},"current":{"type":"number"},"prior":{"type":"number"},"relative":{"type":"number"}},"required":["current","prior","absolute","relative"],"type":"object"},"daily":{"items":{"additionalProperties":false,"properties":{"date":{"type":"string"},"pageviews":{"type":"number"},"sessions":{"type":"number"},"users":{"type":"number"}},"required":["date","sessions","users","pageviews"],"type":"object"},"type":"array"},"dataFrom":{"type":"string"},"engagementRate":{"additionalProperties":false,"properties":{"absolute":{"type":"number"},"current":{"type":"number"},"prior":{"type":"number"},"relative":{"type":"number"}},"required":["current","prior","absolute","relative"],"type":"object"},"keyEvents":{"additionalProperties":false,"properties":{"absolute":{"type":"number"},"current":{"type":"number"},"prior":{"type":"number"},"relative":{"type":"number"}},"required":["current","prior","absolute","relative"],"type":"object"},"pageviews":{"additionalProperties":false,"properties":{"absolute":{"type":"number"},"current":{"type":"number"},"prior":{"type":"number"},"relative":{"type":"number"}},"required":["current","prior","absolute","relative"],"type":"object"},"phase":{"enum":["current","prior","full"],"type":"string"},"priorDaily":{"items":{"additionalProperties":false,"properties":{"date":{"type":"string"},"pageviews":{"type":"number"},"sessions":{"type":"number"},"users":{"type":"number"}},"required":["date","sessions","users","pageviews"],"type":"object"},"type":"array"},"provider":{"enum":["ga4","cloudflare","posthog","umami","plausible"],"type":"string"},"sessions":{"additionalProperties":false,"properties":{"absolute":{"type":"number"},"current":{"type":"number"},"prior":{"type":"number"},"relative":{"type":"number"}},"required":["current","prior","absolute","relative"],"type":"object"},"users":{"additionalProperties":false,"properties":{"absolute":{"type":"number"},"current":{"type":"number"},"prior":{"type":"number"},"relative":{"type":"number"}},"required":["current","prior","absolute","relative"],"type":"object"}},"required":["phase","sessions","users","pageviews","engagementRate","bounceRate","keyEvents","daily","priorDaily","provider"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"provider":{"enum":["ga4","cloudflare","posthog","umami","plausible"],"type":"string"},"rows":{"items":{"additionalProperties":false,"properties":{"page":{"type":"string"},"pageviews":{"type":"number"},"pageviewsDelta":{"additionalProperties":false,"properties":{"absolute":{"type":"number"},"current":{"type":"number"},"prior":{"type":"number"},"relative":{"type":"number"}},"required":["current","prior","absolute","relative"],"type":"object"},"sessions":{"type":"number"}},"required":["page","pageviews","sessions","pageviewsDelta"],"type":"object"},"type":"array"}},"required":["provider","rows"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"provider":{"enum":["ga4","cloudflare","posthog","umami","plausible"],"type":"string"},"rows":{"items":{"additionalProperties":false,"properties":{"sessions":{"type":"number"},"sessionsDelta":{"additionalProperties":false,"properties":{"absolute":{"type":"number"},"current":{"type":"number"},"prior":{"type":"number"},"relative":{"type":"number"}},"required":["current","prior","absolute","relative"],"type":"object"},"source":{"type":"string"},"users":{"type":"number"}},"required":["sessions","sessionsDelta","source","users"],"type":"object"},"type":"array"}},"required":["provider","rows"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"daily":{"items":{"additionalProperties":false,"properties":{"date":{"type":"string"},"keyEvents":{"type":"number"}},"required":["date","keyEvents"],"type":"object"},"type":"array"},"provider":{"enum":["ga4","cloudflare","posthog","umami","plausible"],"type":"string"},"total":{"additionalProperties":false,"properties":{"absolute":{"type":"number"},"current":{"type":"number"},"prior":{"type":"number"},"relative":{"type":"number"}},"required":["current","prior","absolute","relative"],"type":"object"}},"required":["provider","total"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"provider":{"enum":["ga4","cloudflare","posthog","umami","plausible"],"type":"string"},"rows":{"items":{"additionalProperties":false,"properties":{"country":{"type":"string"},"pageviews":{"type":"number"},"sessions":{"type":"number"},"sessionsDelta":{"additionalProperties":false,"properties":{"absolute":{"type":"number"},"current":{"type":"number"},"prior":{"type":"number"},"relative":{"type":"number"}},"required":["current","prior","absolute","relative"],"type":"object"},"users":{"type":"number"}},"required":["country","sessions","users","pageviews","sessionsDelta"],"type":"object"},"type":"array"}},"required":["provider","rows"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"provider":{"enum":["ga4","cloudflare","posthog","umami","plausible"],"type":"string"},"rows":{"items":{"additionalProperties":false,"properties":{"device":{"type":"string"},"pageviews":{"type":"number"},"sessions":{"type":"number"},"sessionsDelta":{"additionalProperties":false,"properties":{"absolute":{"type":"number"},"current":{"type":"number"},"prior":{"type":"number"},"relative":{"type":"number"}},"required":["current","prior","absolute","relative"],"type":"object"},"share":{"type":"number"},"users":{"type":"number"}},"required":["device","sessions","users","pageviews","sessionsDelta","share"],"type":"object"},"type":"array"}},"required":["provider","rows"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"dimension":{"enum":["date","page","hostname","source","medium","campaign","country","region","city","deviceCategory","browser","operatingSystem"],"type":"string"},"provider":{"enum":["ga4","cloudflare","posthog","umami","plausible"],"type":"string"},"rows":{"items":{"additionalProperties":false,"properties":{"delta":{"additionalProperties":false,"properties":{"absolute":{"type":"number"},"current":{"type":"number"},"prior":{"type":"number"},"relative":{"type":"number"}},"required":["current","prior","absolute","relative"],"type":"object"},"label":{"type":"string"},"pageviews":{"type":"number"},"sessions":{"type":"number"},"share":{"type":"number"},"users":{"type":"number"}},"required":["label","sessions","users","pageviews","share","delta"],"type":"object"},"type":"array"}},"required":["provider","dimension","rows"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"}]},"analytics.query.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"analytics.query.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"},"view":{"enum":["performance","top-pages","source-medium","key-events","countries","devices","dimension"],"type":"string"}},"required":["siteId","view"],"type":"object"},"analytics.query.query.request":{"additionalProperties":false,"properties":{"compare":{"default":"previous","enum":["previous","year","none"],"type":"string"},"comparePrior":{"anyOf":[{"type":"boolean"},{"enum":["true","false"],"type":"string"}],"default":true},"dimension":{"enum":["date","page","hostname","source","medium","campaign","country","region","city","deviceCategory","browser","operatingSystem"],"type":"string"},"filters":{"type":"string"},"fresh":{"anyOf":[{"type":"boolean"},{"enum":["true","false"],"type":"string"}],"default":false},"hostScope":{"anyOf":[{"type":"boolean"},{"enum":["true","false"],"type":"string"}],"default":true},"performancePhase":{"default":"full","enum":["current","prior","full"],"type":"string"},"period":{"default":"28d","minLength":1,"type":"string"},"stableData":{"anyOf":[{"type":"boolean"},{"enum":["true","false"],"type":"string"}],"default":true}},"type":"object"},"audit.changes.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"clicksAtRisk":{"type":["number","null"]},"comparison":{"anyOf":[{"additionalProperties":false,"properties":{"from":{"additionalProperties":false,"properties":{"buildId":{"type":["string","null"]},"completedAt":{"type":["string","null"]},"generation":{"type":"number"}},"required":["generation","buildId","completedAt"],"type":"object"},"to":{"additionalProperties":false,"properties":{"buildId":{"type":["string","null"]},"completedAt":{"type":["string","null"]},"generation":{"type":"number"}},"required":["generation","buildId","completedAt"],"type":"object"}},"required":["from","to"],"type":"object"},{"type":"null"}]},"generations":{"items":{"additionalProperties":false,"properties":{"buildId":{"type":["string","null"]},"completedAt":{"type":["string","null"]},"generation":{"type":"number"}},"required":["generation","buildId","completedAt"],"type":"object"},"type":"array"},"pages":{"additionalProperties":false,"properties":{"checkTotal":{"type":"number"},"groupTotal":{"type":"number"},"groups":{"items":{"additionalProperties":false,"properties":{"checks":{"items":{"additionalProperties":false,"properties":{"key":{"type":"string"},"label":{"type":"string"},"pages":{"type":"number"},"severity":{"enum":["error","warning","notice"],"type":"string"},"subject":{"enum":["page","link-target"],"type":"string"}},"required":["key","label","severity","subject","pages"],"type":"object"},"type":"array"},"examples":{"items":{"additionalProperties":false,"properties":{"path":{"type":"string"},"url":{"type":"string"}},"required":["url","path"],"type":"object"},"type":"array"},"key":{"type":"string"},"label":{"type":"string"},"pages":{"type":"number"},"severity":{"enum":["error","warning","notice"],"type":"string"},"spike":{"type":"boolean"},"subject":{"enum":["page","link-target"],"type":"string"}},"required":["key","label","severity","subject","pages","examples","checks","spike"],"type":"object"},"type":"array"},"pages":{"type":"number"}},"required":["groups","pages","groupTotal","checkTotal"],"type":"object"},"regressionHistory":{"items":{"additionalProperties":false,"properties":{"buildId":{"type":["string","null"]},"completedAt":{"type":["string","null"]},"generation":{"type":"number"},"regressedUrls":{"type":"number"}},"required":["generation","buildId","completedAt","regressedUrls"],"type":"object"},"type":"array"},"regressions":{"additionalProperties":false,"properties":{"checkTotal":{"type":"number"},"groupTotal":{"type":"number"},"groups":{"items":{"additionalProperties":false,"properties":{"checks":{"items":{"additionalProperties":false,"properties":{"key":{"type":"string"},"label":{"type":"string"},"pages":{"type":"number"},"severity":{"enum":["error","warning","notice"],"type":"string"},"subject":{"enum":["page","link-target"],"type":"string"}},"required":["key","label","severity","subject","pages"],"type":"object"},"type":"array"},"examples":{"items":{"additionalProperties":false,"properties":{"path":{"type":"string"},"url":{"type":"string"}},"required":["url","path"],"type":"object"},"type":"array"},"key":{"type":"string"},"label":{"type":"string"},"pages":{"type":"number"},"severity":{"enum":["error","warning","notice"],"type":"string"},"spike":{"type":"boolean"},"subject":{"enum":["page","link-target"],"type":"string"}},"required":["key","label","severity","subject","pages","examples","checks","spike"],"type":"object"},"type":"array"},"pages":{"type":"number"}},"required":["groups","pages","groupTotal","checkTotal"],"type":"object"},"resolved":{"additionalProperties":false,"properties":{"checkTotal":{"type":"number"},"groupTotal":{"type":"number"},"groups":{"items":{"additionalProperties":false,"properties":{"checks":{"items":{"additionalProperties":false,"properties":{"key":{"type":"string"},"label":{"type":"string"},"pages":{"type":"number"},"severity":{"enum":["error","warning","notice"],"type":"string"},"subject":{"enum":["page","link-target"],"type":"string"}},"required":["key","label","severity","subject","pages"],"type":"object"},"type":"array"},"examples":{"items":{"additionalProperties":false,"properties":{"path":{"type":"string"},"url":{"type":"string"}},"required":["url","path"],"type":"object"},"type":"array"},"key":{"type":"string"},"label":{"type":"string"},"pages":{"type":"number"},"severity":{"enum":["error","warning","notice"],"type":"string"},"spike":{"type":"boolean"},"subject":{"enum":["page","link-target"],"type":"string"}},"required":["key","label","severity","subject","pages","examples","checks","spike"],"type":"object"},"type":"array"},"pages":{"type":"number"}},"required":["groups","pages","groupTotal","checkTotal"],"type":"object"},"sampled":{"type":"boolean"},"state":{"enum":["changes","no-changes","no-baseline","no-crawl"],"type":"string"},"verdict":{"type":"string"},"window":{"additionalProperties":false,"properties":{"comparedTo":{"type":["string","null"]},"observedAt":{"type":["string","null"]}},"required":["observedAt","comparedTo"],"type":"object"}},"required":["state","verdict","window","regressions","resolved","pages","sampled","generations","regressionHistory","comparison","clicksAtRisk"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"audit.changes.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"audit.changes.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"audit.changes.query.request":{"additionalProperties":false,"properties":{"from":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"to":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"type":"object"},"audit.content.decay.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"clicksLost":{"type":"number"},"connected":{"type":"boolean"},"page":{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"limit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","limit","offset","hasMore"],"type":"object"},"rows":{"items":{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"clicksChangePct":{"type":"number"},"clicksDelta":{"type":"number"},"impressions":{"type":"number"},"path":{"type":"string"},"position":{"type":["number","null"]},"prevClicks":{"type":"number"},"prevImpressions":{"type":"number"},"prevPosition":{"type":["number","null"]},"url":{"type":"string"}},"required":["url","path","clicks","prevClicks","clicksDelta","clicksChangePct","impressions","prevImpressions","position","prevPosition"],"type":"object"},"type":"array"},"total":{"type":"number"},"truncated":{"type":"boolean"},"window":{"anyOf":[{"additionalProperties":false,"properties":{"endDate":{"type":"string"},"prevEndDate":{"type":"string"},"prevStartDate":{"type":"string"},"startDate":{"type":"string"}},"required":["startDate","endDate","prevStartDate","prevEndDate"],"type":"object"},{"type":"null"}]}},"required":["connected","rows","page","total","clicksLost","window","truncated"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"audit.content.decay.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"audit.content.decay.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"audit.duplicate.clusters.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"clusters":{"items":{"additionalProperties":false,"properties":{"exactDuplicates":{"type":"number"},"keepPath":{"type":["string","null"]},"members":{"items":{"additionalProperties":false,"properties":{"clicks":{"type":["number","null"]},"impressions":{"type":["number","null"]},"path":{"type":"string"},"url":{"type":"string"}},"required":["url","path","clicks","impressions"],"type":"object"},"type":"array"},"pathPattern":{"type":"string"},"size":{"type":"number"},"titles":{"additionalProperties":false,"properties":{"distinct":{"type":"number"},"sampled":{"type":"number"},"verdict":{"enum":["distinct","shared","mixed","unknown"],"type":"string"}},"required":["distinct","sampled","verdict"],"type":"object"}},"required":["pathPattern","size","exactDuplicates","members","keepPath","titles"],"type":"object"},"type":"array"},"connected":{"type":"boolean"},"crawlSettingsId":{"type":["number","null"]},"page":{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"limit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","limit","offset","hasMore"],"type":"object"},"pagesAffected":{"type":"number"},"rows":{"items":{"additionalProperties":false,"properties":{"exactDuplicates":{"type":"number"},"keepPath":{"type":["string","null"]},"members":{"items":{"additionalProperties":false,"properties":{"clicks":{"type":["number","null"]},"impressions":{"type":["number","null"]},"path":{"type":"string"},"url":{"type":"string"}},"required":["url","path","clicks","impressions"],"type":"object"},"type":"array"},"pathPattern":{"type":"string"},"size":{"type":"number"},"titles":{"additionalProperties":false,"properties":{"distinct":{"type":"number"},"sampled":{"type":"number"},"verdict":{"enum":["distinct","shared","mixed","unknown"],"type":"string"}},"required":["distinct","sampled","verdict"],"type":"object"}},"required":["pathPattern","size","exactDuplicates","members","keepPath","titles"],"type":"object"},"type":"array"},"total":{"type":"number"}},"required":["connected","clusters","rows","page","total","pagesAffected"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"audit.duplicate.clusters.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"audit.duplicate.clusters.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"audit.link.opportunities.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"connected":{"type":"boolean"},"page":{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"limit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","limit","offset","hasMore"],"type":"object"},"pagesScanned":{"type":"number"},"pagesTotal":{"type":"number"},"rows":{"items":{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"impressions":{"type":"number"},"phrase":{"type":"string"},"position":{"type":"number"},"snippet":{"type":"string"},"sourcePath":{"type":"string"},"sourceRank":{"type":["number","null"]},"sourceUrl":{"type":"string"},"targetPath":{"type":"string"},"targetUrl":{"type":"string"}},"required":["sourceUrl","sourcePath","sourceRank","targetUrl","targetPath","phrase","snippet","impressions","clicks","position"],"type":"object"},"type":"array"},"textUnavailable":{"type":"boolean"},"total":{"type":"number"}},"required":["connected","textUnavailable","rows","page","total","pagesScanned","pagesTotal"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"audit.link.opportunities.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"audit.link.opportunities.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"audit.link.structure.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"deadEndGroupTotal":{"type":"number"},"deadEndPageTotal":{"type":"number"},"deadEndScanTruncated":{"type":"boolean"},"deadEnds":{"items":{"additionalProperties":false,"properties":{"examples":{"items":{"type":"string"},"type":"array"},"label":{"type":"string"},"pages":{"type":"number"},"singleUrl":{"type":["string","null"]},"topRank":{"type":["number","null"]}},"required":["label","pages","examples","topRank","singleUrl"],"type":"object"},"type":"array"},"editorialLinks":{"type":"number"},"editorialTargets":{"type":"number"},"genericAnchorLinks":{"type":"number"},"genericAnchorTotal":{"type":"number"},"genericAnchors":{"items":{"additionalProperties":false,"properties":{"anchor":{"type":"string"},"exampleTargets":{"items":{"type":"string"},"type":"array"},"links":{"type":"number"},"targets":{"type":"number"}},"required":["anchor","links","targets","exampleTargets"],"type":"object"},"type":"array"},"gscConnected":{"type":"boolean"},"internalLinks":{"type":"number"},"templateLinks":{"type":"number"},"templateSlotTotal":{"type":"number"},"templateSlots":{"items":{"additionalProperties":false,"properties":{"clicks":{"type":["number","null"]},"locations":{"items":{"type":"string"},"type":"array"},"path":{"type":"string"},"share":{"type":"number"},"sourcePages":{"type":"number"},"templateLinks":{"type":"number"},"url":{"type":"string"}},"required":["url","path","templateLinks","sourcePages","locations","share","clicks"],"type":"object"},"type":"array"},"templateTargets":{"type":"number"}},"required":["gscConnected","internalLinks","templateLinks","templateTargets","editorialLinks","editorialTargets","templateSlots","templateSlotTotal","deadEnds","deadEndGroupTotal","deadEndPageTotal","deadEndScanTruncated","genericAnchors","genericAnchorTotal","genericAnchorLinks"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"audit.link.structure.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"audit.link.structure.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"backlinks.anchors.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"evidence":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"no-provider","type":"string"},"provider":{"type":"null"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":0,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"cache","type":"string"},"provider":{"const":"dataforseo","type":"string"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":0,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"live","type":"string"},"provider":{"const":"dataforseo","type":"string"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":1,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"}]},"items":{"items":{"additionalProperties":false,"properties":{"anchor":{"type":"string"},"backlinks":{"type":["number","null"]},"firstSeen":{"type":["string","null"]},"linkSpamNetworkId":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"lostDate":{"type":["string","null"]},"rank":{"type":["number","null"]},"referringDomains":{"type":["number","null"]},"referringMainDomains":{"type":["number","null"]},"referringPages":{"type":["number","null"]},"spamScore":{"type":["number","null"]}},"required":["anchor","rank","backlinks","referringDomains","referringMainDomains","referringPages","spamScore","firstSeen","lostDate","linkSpamNetworkId"],"type":"object"},"type":"array"},"limit":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"target":{"minLength":1,"type":"string"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["target","items","total","limit","evidence"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"backlinks.anchors.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"backlinks.anchors.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"backlinks.anchors.query.request":{"additionalProperties":false,"properties":{"limit":{"default":100,"maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"backlinks.history.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"evidence":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"no-provider","type":"string"},"provider":{"type":"null"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":0,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"cache","type":"string"},"provider":{"const":"dataforseo","type":"string"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":0,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"live","type":"string"},"provider":{"const":"dataforseo","type":"string"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":1,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"}]},"items":{"items":{"additionalProperties":false,"properties":{"backlinks":{"type":["number","null"]},"date":{"minLength":1,"type":"string"},"lostBacklinks":{"type":["number","null"]},"lostReferringDomains":{"type":["number","null"]},"newBacklinks":{"type":["number","null"]},"newReferringDomains":{"type":["number","null"]},"rank":{"type":["number","null"]},"referringDomains":{"type":["number","null"]},"referringMainDomains":{"type":["number","null"]},"referringPages":{"type":["number","null"]}},"required":["date","rank","backlinks","referringDomains","referringMainDomains","referringPages","newReferringDomains","lostReferringDomains","newBacklinks","lostBacklinks"],"type":"object"},"type":"array"},"target":{"minLength":1,"type":"string"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["target","items","total","evidence"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"backlinks.history.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"backlinks.history.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"backlinks.history.query.request":{"additionalProperties":false,"properties":{"dateFrom":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"}},"type":"object"},"backlinks.recoverable.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"anchor":{"type":["string","null"]},"destinationStatus":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"destinationUrl":{"minLength":1,"type":"string"},"dofollow":{"type":["boolean","null"]},"domainRank":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"firstSeenAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"id":{"minLength":1,"type":"string"},"lastSeenAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"pageRank":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"referringDomain":{"minLength":1,"type":"string"},"referringUrl":{"minLength":1,"type":"string"}},"required":["id","destinationUrl","referringUrl","referringDomain","anchor","destinationStatus","domainRank","pageRank","dofollow","firstSeenAt","lastSeenAt"],"type":"object"},"type":"array"},"limit":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"page":{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"limit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","limit","offset","hasMore"],"type":"object"},"rows":{"items":{"additionalProperties":false,"properties":{"anchor":{"type":["string","null"]},"destinationStatus":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"destinationUrl":{"minLength":1,"type":"string"},"dofollow":{"type":["boolean","null"]},"domainRank":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"firstSeenAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"id":{"minLength":1,"type":"string"},"lastSeenAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"pageRank":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"referringDomain":{"minLength":1,"type":"string"},"referringUrl":{"minLength":1,"type":"string"}},"required":["id","destinationUrl","referringUrl","referringDomain","anchor","destinationStatus","domainRank","pageRank","dofollow","firstSeenAt","lastSeenAt"],"type":"object"},"type":"array"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","rows","page","total","limit","offset"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"backlinks.recoverable.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"backlinks.recoverable.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"backlinks.recoverable.query.request":{"additionalProperties":false,"properties":{"limit":{"default":100,"maximum":200,"minimum":1,"type":"integer"},"offset":{"default":0,"maximum":9007199254740991,"minimum":0,"type":"integer"}},"type":"object"},"backlinks.referring.domains.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"evidence":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"no-provider","type":"string"},"provider":{"type":"null"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":0,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"cache","type":"string"},"provider":{"const":"dataforseo","type":"string"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":0,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"live","type":"string"},"provider":{"const":"dataforseo","type":"string"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":1,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"}]},"items":{"items":{"additionalProperties":false,"properties":{"backlinks":{"type":["number","null"]},"brokenBacklinks":{"type":["number","null"]},"brokenPages":{"type":["number","null"]},"domain":{"minLength":1,"type":"string"},"firstSeen":{"type":["string","null"]},"linkSpamNetworkId":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"lostDate":{"type":["string","null"]},"rank":{"type":["number","null"]},"referringPages":{"type":["number","null"]},"sessions":{"type":["number","null"]},"spamScore":{"type":["number","null"]}},"required":["domain","rank","backlinks","brokenBacklinks","brokenPages","referringPages","spamScore","firstSeen","lostDate","sessions","linkSpamNetworkId"],"type":"object"},"type":"array"},"limit":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"target":{"minLength":1,"type":"string"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["target","items","total","limit","evidence"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"backlinks.referring.domains.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"backlinks.referring.domains.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"backlinks.referring.domains.query.request":{"additionalProperties":false,"properties":{"limit":{"default":100,"maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"backlinks.summary.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"backlinks":{"type":["number","null"]},"brokenBacklinks":{"type":["number","null"]},"brokenPages":{"type":["number","null"]},"crawledPages":{"type":["number","null"]},"evidence":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"no-provider","type":"string"},"provider":{"type":"null"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":0,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"cache","type":"string"},"provider":{"const":"dataforseo","type":"string"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":0,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"live","type":"string"},"provider":{"const":"dataforseo","type":"string"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":1,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"}]},"linkSpamNetworks":{"items":{"additionalProperties":false,"properties":{"anchor":{"minLength":1,"type":"string"},"backlinks":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"firstSeen":{"type":["string","null"]},"id":{"minLength":1,"type":"string"},"latestSeen":{"type":["string","null"]},"linkingPath":{"type":["string","null"]},"otherSites":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"referringDomains":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"targetPaths":{"items":{"type":"string"},"type":"array"}},"required":["id","anchor","referringDomains","backlinks","firstSeen","latestSeen","linkingPath","targetPaths","otherSites"],"type":"object"},"type":"array"},"rank":{"type":["number","null"]},"referringDomains":{"type":["number","null"]},"referringDomainsNofollow":{"type":["number","null"]},"referringIps":{"type":["number","null"]},"referringMainDomains":{"type":["number","null"]},"referringPages":{"type":["number","null"]},"referringSubnets":{"type":["number","null"]},"spamScore":{"type":["number","null"]},"target":{"minLength":1,"type":"string"},"withoutLinkSpamNetworks":{"anyOf":[{"additionalProperties":false,"properties":{"backlinks":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"referringDomains":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["referringDomains","backlinks"],"type":"object"},{"type":"null"}]}},"required":["target","rank","backlinks","brokenBacklinks","brokenPages","crawledPages","spamScore","referringDomains","referringDomainsNofollow","referringMainDomains","referringIps","referringSubnets","referringPages","linkSpamNetworks","withoutLinkSpamNetworks","evidence"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"backlinks.summary.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"backlinks.summary.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"mentions.list.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"author":{"type":["string","null"]},"authorHandle":{"type":["string","null"]},"domain":{"minLength":1,"type":"string"},"domainRank":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"engagement":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"id":{"minLength":1,"type":"string"},"publishedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"sentiment":{"type":["string","null"]},"snippet":{"type":["string","null"]},"source":{"minLength":1,"type":"string"},"title":{"type":["string","null"]},"url":{"minLength":1,"type":"string"}},"required":["id","source","url","domain","title","snippet","author","authorHandle","engagement","sentiment","domainRank","publishedAt"],"type":"object"},"type":"array"},"limit":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"page":{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"limit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","limit","offset","hasMore"],"type":"object"},"rows":{"items":{"additionalProperties":false,"properties":{"author":{"type":["string","null"]},"authorHandle":{"type":["string","null"]},"domain":{"minLength":1,"type":"string"},"domainRank":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"engagement":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"id":{"minLength":1,"type":"string"},"publishedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"sentiment":{"type":["string","null"]},"snippet":{"type":["string","null"]},"source":{"minLength":1,"type":"string"},"title":{"type":["string","null"]},"url":{"minLength":1,"type":"string"}},"required":["id","source","url","domain","title","snippet","author","authorHandle","engagement","sentiment","domainRank","publishedAt"],"type":"object"},"type":"array"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","rows","page","total","limit"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"mentions.list.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"mentions.list.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"mentions.list.query.request":{"additionalProperties":false,"properties":{"includeFiltered":{"default":"0","enum":["0","1","true","false"],"type":"string"},"limit":{"default":100,"maximum":200,"minimum":1,"type":"integer"}},"type":"object"},"page.inspect.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"observations":{"additionalProperties":false,"properties":{"coverage":{"enum":["never-scanned","scanned-clear","issues-open"],"type":"string"},"page":{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"limit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","limit","offset","hasMore"],"type":"object"},"pagination":{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"limit":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["limit","offset","hasMore"],"type":"object"},"rows":{"items":{"additionalProperties":false,"properties":{"detail":{"anyOf":[{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},{"type":"null"}]},"firstSeenAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"issueType":{"minLength":1,"type":"string"},"lastSeenAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"path":{"type":"string"},"pathWithQuery":{"type":"string"},"resolution":{"anyOf":[{"enum":["fixed","removed","excluded","unmonitored","expired"],"type":"string"},{"type":"null"}]},"resolvedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"severity":{"enum":["error","warning","info"],"type":"string"},"source":{"minLength":1,"type":"string"},"url":{"format":"uri","type":"string"}},"required":["url","path","pathWithQuery","source","issueType","severity","detail","firstSeenAt","lastSeenAt","resolvedAt","resolution"],"type":"object"},"type":"array"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["rows","page","total","coverage","pagination"],"type":"object"},"page":{"additionalProperties":false,"properties":{"path":{"type":"string"},"url":{"format":"uri","type":"string"}},"required":["url","path"],"type":"object"},"performance":{"additionalProperties":false,"properties":{"lighthouse":{"anyOf":[{"additionalProperties":false,"properties":{"accessibility":{"type":["number","null"]},"bestPractices":{"type":["number","null"]},"cls":{"type":["number","null"]},"completedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"lcp":{"type":["number","null"]},"performance":{"type":["number","null"]},"scanId":{"minLength":1,"type":"string"},"seo":{"type":["number","null"]},"strategy":{"enum":["mobile","desktop"],"type":"string"},"tbt":{"type":["number","null"]}},"required":["scanId","strategy","completedAt","performance","accessibility","bestPractices","seo","lcp","tbt","cls"],"type":"object"},{"type":"null"}]}},"required":["lighthouse"],"type":"object"},"search":{"additionalProperties":false,"properties":{"keywords":{"items":{"additionalProperties":false,"properties":{"checkedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"keyword":{"minLength":1,"type":"string"},"position":{"type":["number","null"]},"volume":{"type":["number","null"]}},"required":["keyword","volume","position","checkedAt"],"type":"object"},"type":"array"}},"required":["keywords"],"type":"object"}},"required":["page","observations","performance","search"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"page.inspect.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"page.inspect.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"page.inspect.query.request":{"additionalProperties":false,"properties":{"includeResolved":{"default":"0","enum":["0","1","true","false"],"type":"string"},"limit":{"default":100,"maximum":200,"minimum":1,"type":"integer"},"offset":{"default":0,"maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"format":"uri","type":"string"}},"required":["url"],"type":"object"},"page.issues.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"asOf":{"type":["string","null"]},"availableKeys":{"anyOf":[{"items":{"additionalProperties":false,"properties":{"issue":{"minLength":1,"type":"string"},"openCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"source":{"minLength":1,"type":"string"}},"required":["source","issue","openCount"],"type":"object"},"type":"array"},{"type":"null"}]},"coverage":{"additionalProperties":false,"properties":{"perRowElementCap":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"perRowTargetCap":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"perSourceCap":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"possiblyTruncated":{"type":"boolean"}},"required":["perSourceCap","perRowTargetCap","perRowElementCap","possiblyTruncated"],"type":"object"},"issues":{"items":{"additionalProperties":false,"properties":{"detail":{"additionalProperties":false,"properties":{"description":{"type":["string","null"]},"elements":{"items":{"additionalProperties":false,"properties":{"explanation":{"type":["string","null"]},"message":{"type":["string","null"]},"selector":{"type":["string","null"]},"snippet":{"type":["string","null"]},"sourceUrl":{"type":["string","null"]}},"required":["selector","snippet","message","explanation","sourceUrl"],"type":"object"},"type":"array"},"elementsTotal":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"isNew":{"type":["boolean","null"]},"label":{"type":["string","null"]},"observedAt":{"type":["string","null"]},"observedContentType":{"type":["string","null"]},"observedContentTypeCaptured":{"type":"boolean"},"redirectTarget":{"type":["string","null"]},"resourceUrl":{"type":["string","null"]},"statusCode":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"targets":{"items":{"additionalProperties":false,"properties":{"status":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"url":{"minLength":1,"type":"string"}},"required":["url","status"],"type":"object"},"type":"array"},"title":{"type":["string","null"]},"wcag":{"items":{"type":"string"},"type":"array"}},"required":["label","resourceUrl","statusCode","targets","isNew","title","description","wcag","elements","elementsTotal","observedContentType","observedContentTypeCaptured","redirectTarget","observedAt"],"type":"object"},"firstSeenAt":{"type":["string","null"]},"issueType":{"minLength":1,"type":"string"},"lastSeenAt":{"type":["string","null"]},"linkedFrom":{"items":{"type":"string"},"type":"array"},"linkedFromTotal":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"path":{"type":"string"},"pathWithQuery":{"type":["string","null"]},"resolution":{"type":["string","null"]},"severity":{"minLength":1,"type":"string"},"source":{"minLength":1,"type":"string"},"url":{"minLength":1,"type":"string"}},"required":["url","path","pathWithQuery","source","issueType","severity","detail","firstSeenAt","lastSeenAt","resolution","linkedFrom","linkedFromTotal"],"type":"object"},"type":"array"},"limit":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"message":{"type":["string","null"]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"semantics":{"const":"raw-observations","type":"string"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["semantics","issues","total","limit","offset","availableKeys","message","asOf","coverage"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"page.issues.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"page.issues.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"page.issues.query.request":{"additionalProperties":false,"properties":{"actionId":{"minLength":1,"type":"string"},"includeResolved":{"default":"0","enum":["0","1","true","false"],"type":"string"},"issue":{"minLength":1,"type":"string"},"limit":{"default":100,"maximum":200,"minimum":1,"type":"integer"},"offset":{"default":0,"maximum":9007199254740991,"minimum":0,"type":"integer"},"pathPrefix":{"format":"starts_with","pattern":"^\\/.*","type":"string"},"source":{"minLength":1,"type":"string"},"url":{"minLength":1,"type":"string"}},"type":"object"},"page.performance.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"health":{"anyOf":[{"additionalProperties":false,"properties":{"a11y":{"additionalProperties":false,"properties":{"median":{"type":["number","null"]},"worst":{"type":["number","null"]}},"required":["median","worst"],"type":"object"},"bestPractices":{"additionalProperties":false,"properties":{"median":{"type":["number","null"]},"worst":{"type":["number","null"]}},"required":["median","worst"],"type":"object"},"cls":{"additionalProperties":false,"properties":{"median":{"type":["number","null"]},"statusCounts":{"additionalProperties":false,"properties":{"good":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"ni":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"poor":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["good","ni","poor"],"type":"object"},"worst":{"type":["number","null"]}},"required":["median","worst","statusCounts"],"type":"object"},"lastScanAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"lcp":{"additionalProperties":false,"properties":{"median":{"type":["number","null"]},"statusCounts":{"additionalProperties":false,"properties":{"good":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"ni":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"poor":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["good","ni","poor"],"type":"object"},"worst":{"type":["number","null"]}},"required":["median","worst","statusCounts"],"type":"object"},"perf":{"additionalProperties":false,"properties":{"best":{"type":["number","null"]},"median":{"type":["number","null"]},"worst":{"type":["number","null"]}},"required":["median","worst","best"],"type":"object"},"scannedPageCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"seo":{"additionalProperties":false,"properties":{"median":{"type":["number","null"]},"worst":{"type":["number","null"]}},"required":["median","worst"],"type":"object"},"tbt":{"additionalProperties":false,"properties":{"median":{"type":["number","null"]},"statusCounts":{"additionalProperties":false,"properties":{"good":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"ni":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"poor":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["good","ni","poor"],"type":"object"},"worst":{"type":["number","null"]}},"required":["median","worst","statusCounts"],"type":"object"}},"required":["perf","a11y","bestPractices","seo","lcp","tbt","cls","scannedPageCount","lastScanAt"],"type":"object"},{"type":"null"}]},"homepage":{"anyOf":[{"additionalProperties":false,"properties":{"a11y":{"type":["number","null"]},"bestPractices":{"type":["number","null"]},"cls":{"type":["number","null"]},"completedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"lcp":{"type":["number","null"]},"perf":{"type":["number","null"]},"scanId":{"minLength":1,"type":"string"},"seo":{"type":["number","null"]},"tbt":{"type":["number","null"]},"url":{"format":"uri","type":"string"}},"required":["scanId","url","completedAt","perf","a11y","bestPractices","seo","lcp","tbt","cls"],"type":"object"},{"type":"null"}]},"homepageDesktop":{"anyOf":[{"additionalProperties":false,"properties":{"a11y":{"type":["number","null"]},"bestPractices":{"type":["number","null"]},"cls":{"type":["number","null"]},"completedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"lcp":{"type":["number","null"]},"perf":{"type":["number","null"]},"scanId":{"minLength":1,"type":"string"},"seo":{"type":["number","null"]},"tbt":{"type":["number","null"]},"url":{"format":"uri","type":"string"}},"required":["scanId","url","completedAt","perf","a11y","bestPractices","seo","lcp","tbt","cls"],"type":"object"},{"type":"null"}]},"routes":{"items":{"additionalProperties":false,"properties":{"a11y":{"type":["number","null"]},"bestPractices":{"type":["number","null"]},"cls":{"type":["number","null"]},"completedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"latestScanId":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"lcp":{"type":["number","null"]},"pageId":{"minLength":1,"type":"string"},"path":{"type":"string"},"perf":{"type":["number","null"]},"seo":{"type":["number","null"]},"tbt":{"type":["number","null"]},"url":{"format":"uri","type":"string"}},"required":["pageId","path","url","latestScanId","completedAt","perf","a11y","bestPractices","seo","lcp","tbt","cls"],"type":"object"},"type":"array"},"routesDesktop":{"items":{"additionalProperties":false,"properties":{"a11y":{"type":["number","null"]},"bestPractices":{"type":["number","null"]},"cls":{"type":["number","null"]},"completedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"latestScanId":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"lcp":{"type":["number","null"]},"pageId":{"minLength":1,"type":"string"},"path":{"type":"string"},"perf":{"type":["number","null"]},"seo":{"type":["number","null"]},"tbt":{"type":["number","null"]},"url":{"format":"uri","type":"string"}},"required":["pageId","path","url","latestScanId","completedAt","perf","a11y","bestPractices","seo","lcp","tbt","cls"],"type":"object"},"type":"array"}},"required":["health","homepage","homepageDesktop","routes","routesDesktop"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"page.performance.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"page.performance.pages.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"pages":{"items":{"additionalProperties":false,"properties":{"enabled":{"type":"boolean"},"id":{"minLength":1,"type":"string"},"lastScanAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"path":{"type":"string"},"source":{"type":["string","null"]}},"required":["id","path","source","enabled","lastScanAt"],"type":"object"},"type":"array"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["pages","total"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"page.performance.pages.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"page.performance.pages.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"page.performance.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"page.performance.scan.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"accessibility":{"items":{"additionalProperties":false,"properties":{"auditId":{"minLength":1,"type":"string"},"description":{"type":["string","null"]},"elements":{"items":{"additionalProperties":false,"properties":{"explanation":{"type":["string","null"]},"message":{"type":["string","null"]},"selector":{"type":["string","null"]},"snippet":{"type":["string","null"]},"sourceUrl":{"type":["string","null"]}},"required":["selector","snippet","message","explanation","sourceUrl"],"type":"object"},"type":"array"},"elementsTotal":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"instanceCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"severity":{"type":"string"},"title":{"type":"string"},"wcag":{"items":{"type":"string"},"type":"array"},"wcagLevel":{"type":["string","null"]}},"required":["auditId","title","severity","description","wcag","wcagLevel","instanceCount","elements","elementsTotal"],"type":"object"},"type":"array"},"bestPractices":{"items":{"additionalProperties":false,"properties":{"auditId":{"minLength":1,"type":"string"},"description":{"type":["string","null"]},"elements":{"items":{"additionalProperties":false,"properties":{"explanation":{"type":["string","null"]},"message":{"type":["string","null"]},"selector":{"type":["string","null"]},"snippet":{"type":["string","null"]},"sourceUrl":{"type":["string","null"]}},"required":["selector","snippet","message","explanation","sourceUrl"],"type":"object"},"type":"array"},"elementsTotal":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"instanceCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"severity":{"type":"string"},"title":{"type":"string"},"wcag":{"items":{"type":"string"},"type":"array"},"wcagLevel":{"type":["string","null"]}},"required":["auditId","title","severity","description","wcag","wcagLevel","instanceCount","elements","elementsTotal"],"type":"object"},"type":"array"},"cachePolicy":{"items":{"additionalProperties":false,"properties":{"cacheLifetimeMs":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"repeatVisitBytes":{"type":["number","null"]},"resourceType":{"type":["string","null"]},"totalBytes":{"type":["number","null"]},"url":{"type":["string","null"]},"versioning":{"enum":["fingerprinted","unknown"],"type":"string"}},"required":["url","repeatVisitBytes","cacheLifetimeMs","totalBytes","resourceType","mimeType","versioning"],"type":"object"},"type":"array"},"cls":{"type":["number","null"]},"completedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"coverage":{"additionalProperties":false,"properties":{"accessibilityChecksTotal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"bestPracticesChecksTotal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"perCheckElementCap":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"perScanCheckCap":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"possiblyTruncated":{"type":"boolean"}},"required":["perCheckElementCap","perScanCheckCap","accessibilityChecksTotal","bestPracticesChecksTotal","possiblyTruncated"],"type":"object"},"fcp":{"type":["number","null"]},"id":{"minLength":1,"type":"string"},"javascript":{"anyOf":[{"additionalProperties":false,"properties":{"decodedBytes":{"type":["number","null"]},"scriptCount":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"transferBytes":{"type":["number","null"]}},"required":["transferBytes","decodedBytes","scriptCount"],"type":"object"},{"type":"null"}]},"lcp":{"type":["number","null"]},"lcpElement":{"anyOf":[{"additionalProperties":false,"properties":{"elementType":{"type":["string","null"]},"nodeLabel":{"type":["string","null"]},"selector":{"type":["string","null"]}},"required":["selector","elementType","nodeLabel"],"type":"object"},{"type":"null"}]},"observedTrace":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"available","type":"string"},"basis":{"const":"observed","type":"string"},"observedLcpMs":{"exclusiveMinimum":0,"type":"number"},"phases":{"items":{"additionalProperties":false,"properties":{"durationMs":{"minimum":0,"type":"number"},"id":{"enum":["timeToFirstByte","resourceLoadDelay","resourceLoadDuration","elementRenderDelay"],"type":"string"}},"required":["id","durationMs"],"type":"object"},"maxItems":4,"minItems":2,"type":"array"},"throttlingMethod":{"anyOf":[{"enum":["simulate","provided","devtools"],"type":"string"},{"type":"null"}]}},"required":["_tag","basis","throttlingMethod","observedLcpMs","phases"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"unavailable","type":"string"},"reason":{"enum":["missing-report-data","invalid-report-data","legacy-projection","projection-missing","projection-unavailable"],"type":"string"}},"required":["_tag","reason"],"type":"object"}]},"performanceIssues":{"items":{"additionalProperties":false,"properties":{"subtype":{"type":["string","null"]},"type":{"type":"string"},"url":{"type":["string","null"]},"wastedBytes":{"type":["number","null"]},"wastedMs":{"type":["number","null"]}},"required":["type","subtype","url","wastedMs","wastedBytes"],"type":"object"},"type":"array"},"scores":{"additionalProperties":false,"properties":{"a11y":{"type":["number","null"]},"bestPractices":{"type":["number","null"]},"perf":{"type":["number","null"]},"seo":{"type":["number","null"]}},"required":["perf","a11y","bestPractices","seo"],"type":"object"},"speedIndex":{"type":["number","null"]},"status":{"minLength":1,"type":"string"},"strategy":{"minLength":1,"type":"string"},"tbt":{"type":["number","null"]},"thirdParties":{"items":{"additionalProperties":false,"properties":{"blockingTime":{"type":["number","null"]},"entity":{"type":["string","null"]},"mainThreadTime":{"type":["number","null"]},"transferSize":{"type":["number","null"]}},"required":["entity","blockingTime","mainThreadTime","transferSize"],"type":"object"},"type":"array"},"ttfb":{"type":["number","null"]},"url":{"minLength":1,"type":"string"}},"required":["id","url","strategy","status","scores","lcp","tbt","cls","fcp","speedIndex","ttfb","completedAt","javascript","performanceIssues","cachePolicy","thirdParties","lcpElement","accessibility","bestPractices","coverage"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"page.performance.scan.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"page.performance.scan.path.request":{"additionalProperties":false,"properties":{"scanId":{"minLength":1,"type":"string"},"siteId":{"minLength":1,"type":"string"}},"required":["siteId","scanId"],"type":"object"},"page.performance.scans.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"limit":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"scans":{"items":{"additionalProperties":false,"properties":{"cls":{"type":["number","null"]},"completedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"error":{"type":["string","null"]},"id":{"minLength":1,"type":"string"},"lcp":{"type":["number","null"]},"scores":{"additionalProperties":false,"properties":{"a11y":{"type":["number","null"]},"bestPractices":{"type":["number","null"]},"perf":{"type":["number","null"]},"seo":{"type":["number","null"]}},"required":["perf","a11y","bestPractices","seo"],"type":"object"},"status":{"minLength":1,"type":"string"},"strategy":{"minLength":1,"type":"string"},"tbt":{"type":["number","null"]},"trigger":{"type":["string","null"]},"url":{"minLength":1,"type":"string"}},"required":["id","url","strategy","status","trigger","scores","lcp","tbt","cls","completedAt","error"],"type":"object"},"type":"array"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scans","total","limit"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"page.performance.scans.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"page.performance.scans.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"page.performance.scans.query.request":{"additionalProperties":false,"properties":{"limit":{"default":25,"maximum":100,"minimum":1,"type":"integer"}},"type":"object"},"page.scan.202.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"pageCreated":{"type":"boolean"},"pageId":{"minLength":1,"type":"string"},"scanId":{"minLength":1,"type":"string"},"scans":{"items":{"additionalProperties":false,"properties":{"pageId":{"minLength":1,"type":"string"},"scanId":{"minLength":1,"type":"string"},"strategy":{"enum":["mobile","desktop"],"type":"string"},"url":{"format":"uri","type":"string"}},"required":["scanId","pageId","url","strategy"],"type":"object"},"type":"array"},"status":{"const":"running","type":"string"}},"required":["pageId","pageCreated","scanId","status","scans"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"page.scan.body.request":{"additionalProperties":false,"properties":{"url":{"format":"uri","type":"string"}},"required":["url"],"type":"object"},"page.scan.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"page.scan.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"page.vitals.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"available":{"type":"boolean"},"formFactor":{"enum":["PHONE","DESKTOP","ALL_FORM_FACTORS"],"type":"string"},"message":{"type":["string","null"]},"mode":{"enum":["origin","url"],"type":"string"},"summary":{"anyOf":[{"additionalProperties":false,"properties":{"asOf":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"cls":{"additionalProperties":false,"properties":{"asOf":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"deltaOverPeriod":{"type":["number","null"]},"p75":{"type":["number","null"]},"status":{"anyOf":[{"enum":["good","needs-improvement","poor"],"type":"string"},{"type":"null"}]}},"required":["p75","status","deltaOverPeriod","asOf"],"type":"object"},"inp":{"additionalProperties":false,"properties":{"asOf":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"deltaOverPeriod":{"type":["number","null"]},"p75":{"type":["number","null"]},"status":{"anyOf":[{"enum":["good","needs-improvement","poor"],"type":"string"},{"type":"null"}]}},"required":["p75","status","deltaOverPeriod","asOf"],"type":"object"},"lcp":{"additionalProperties":false,"properties":{"asOf":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"deltaOverPeriod":{"type":["number","null"]},"p75":{"type":["number","null"]},"status":{"anyOf":[{"enum":["good","needs-improvement","poor"],"type":"string"},{"type":"null"}]}},"required":["p75","status","deltaOverPeriod","asOf"],"type":"object"},"overall":{"anyOf":[{"enum":["pass","ni","fail"],"type":"string"},{"type":"null"}]}},"required":["lcp","inp","cls","overall","asOf"],"type":"object"},{"type":"null"}]},"target":{"minLength":1,"type":"string"},"trend":{"anyOf":[{"additionalProperties":false,"properties":{"cls":{"items":{"additionalProperties":false,"properties":{"date":{"minLength":1,"type":"string"},"p75":{"type":["number","null"]}},"required":["date","p75"],"type":"object"},"type":"array"},"inp":{"items":{"additionalProperties":false,"properties":{"date":{"minLength":1,"type":"string"},"p75":{"type":["number","null"]}},"required":["date","p75"],"type":"object"},"type":"array"},"lcp":{"items":{"additionalProperties":false,"properties":{"date":{"minLength":1,"type":"string"},"p75":{"type":["number","null"]}},"required":["date","p75"],"type":"object"},"type":"array"}},"required":["lcp","inp","cls"],"type":"object"},{"type":"null"}]},"view":{"enum":["summary","trend"],"type":"string"}},"required":["target","mode","formFactor","view","available","message","summary","trend"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"page.vitals.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"page.vitals.findings.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"findings":{"items":{"additionalProperties":false,"properties":{"estimatedViews":{"type":"number"},"fixPrompt":{"minLength":1,"type":"string"},"metric":{"enum":["lcp","inp","cls"],"type":"string"},"p75":{"type":["number","null"]},"route":{"type":"string"},"selector":{"type":"string"},"severity":{"enum":["good","needs-improvement","poor"],"type":"string"}},"required":["metric","severity","p75","route","selector","estimatedViews","fixPrompt"],"type":"object"},"type":"array"},"limit":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"message":{"type":["string","null"]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"source":{"type":["string","null"]},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["source","message","findings","total","limit","offset"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"page.vitals.findings.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"page.vitals.findings.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"page.vitals.findings.query.request":{"additionalProperties":false,"properties":{"limit":{"default":20,"maximum":50,"minimum":1,"type":"integer"},"metrics":{"anyOf":[{"items":{"enum":["lcp","inp","cls"],"type":"string"},"type":"array"},{"enum":["lcp","inp","cls"],"type":"string"}]},"offset":{"default":0,"maximum":9007199254740991,"minimum":0,"type":"integer"},"onlyFailing":{"default":"1","enum":["0","1","true","false"],"type":"string"}},"type":"object"},"page.vitals.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"page.vitals.query.request":{"additionalProperties":false,"properties":{"formFactor":{"default":"PHONE","enum":["PHONE","DESKTOP","ALL_FORM_FACTORS"],"type":"string"},"url":{"format":"uri","type":"string"},"view":{"default":"summary","enum":["summary","trend"],"type":"string"}},"type":"object"},"research.competitors.add.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"competitor":{"additionalProperties":false,"properties":{"domain":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"}},"required":["id","domain"],"type":"object"},"status":{"const":"queued","type":"string"}},"required":["competitor","status"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"research.competitors.add.body.request":{"additionalProperties":false,"properties":{"domain":{"maxLength":2048,"minLength":1,"type":"string"}},"required":["domain"],"type":"object"},"research.competitors.add.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"research.competitors.add.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"research.competitors.list.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"competitors":{"items":{"additionalProperties":false,"properties":{"domain":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"}},"required":["id","domain"],"type":"object"},"type":"array"}},"required":["competitors"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"research.competitors.list.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"research.competitors.list.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"research.competitors.remove.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"competitorId":{"minLength":1,"type":"string"},"deleted":{"const":true,"type":"boolean"}},"required":["competitorId","deleted"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"research.competitors.remove.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"research.competitors.remove.path.request":{"additionalProperties":false,"properties":{"competitorId":{"minLength":1,"type":"string"},"siteId":{"minLength":1,"type":"string"}},"required":["siteId","competitorId"],"type":"object"},"research.domain.availability.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"evidence":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"no-provider","type":"string"},"provider":{"type":"null"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":0,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"cache","type":"string"},"provider":{"const":"dataforseo","type":"string"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":0,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"live","type":"string"},"provider":{"const":"dataforseo","type":"string"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":1,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"}]},"message":{"type":["string","null"]},"results":{"items":{"additionalProperties":false,"properties":{"available":{"type":"boolean"},"created":{"type":["string","null"]},"domain":{"type":"string"},"expiration":{"type":["string","null"]},"note":{"type":["string","null"]},"registrar":{"type":["string","null"]}},"required":["domain","available","registrar","expiration","created","note"],"type":"object"},"type":"array"}},"required":["results","message","evidence"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"research.domain.availability.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"research.domain.availability.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"research.domain.availability.query.request":{"additionalProperties":false,"properties":{"domains":{"anyOf":[{"items":{"maxLength":253,"minLength":1,"type":"string"},"maxItems":10,"minItems":1,"type":"array"},{"maxLength":253,"minLength":1,"type":"string"}]}},"required":["domains"],"type":"object"},"research.domain.traffic.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"changePercent":{"type":"number"},"domain":{"type":"string"},"evidence":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"no-provider","type":"string"},"provider":{"type":"null"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":0,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"cache","type":"string"},"provider":{"const":"dataforseo","type":"string"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":0,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"live","type":"string"},"provider":{"const":"dataforseo","type":"string"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":1,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"}]},"keywordFootprint":{"type":["number","null"]},"message":{"type":["string","null"]},"monthlyTraffic":{"type":"number"},"topCountries":{"items":{"additionalProperties":false,"properties":{"country":{"type":"string"},"percent":{"type":"number"}},"required":["country","percent"],"type":"object"},"type":"array"},"topPages":{"items":{"additionalProperties":false,"properties":{"keywords":{"type":"number"},"path":{"type":"string"},"traffic":{"type":"number"}},"required":["path","traffic","keywords"],"type":"object"},"type":"array"},"trafficValue":{"type":["number","null"]},"trend":{"enum":["growing","stable","declining"],"type":"string"}},"required":["domain","monthlyTraffic","trend","changePercent","trafficValue","keywordFootprint","topPages","topCountries","message","evidence"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"research.domain.traffic.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"research.domain.traffic.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"research.domain.traffic.query.request":{"additionalProperties":false,"properties":{"domain":{"maxLength":253,"minLength":1,"type":"string"}},"required":["domain"],"type":"object"},"research.keywords.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"evidence":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"no-provider","type":"string"},"provider":{"type":"null"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":0,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"cache","type":"string"},"provider":{"const":"dataforseo","type":"string"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":0,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"live","type":"string"},"provider":{"const":"dataforseo","type":"string"},"spend":{"additionalProperties":false,"properties":{"key":{"const":"dataforseo","type":"string"},"units":{"const":1,"type":"number"}},"required":["key","units"],"type":"object"}},"required":["_tag","provider","spend"],"type":"object"}]},"filters":{"additionalProperties":false,"properties":{"intent":{"type":"string"},"maxDifficulty":{"type":"number"},"maxVolume":{"type":"number"},"minDifficulty":{"type":"number"},"minVolume":{"type":"number"}},"required":["minVolume","maxVolume","minDifficulty","maxDifficulty"],"type":"object"},"keywords":{"items":{"additionalProperties":false,"properties":{"backlinks":{"type":["number","null"]},"competition":{"type":["number","null"]},"competitionLevel":{"anyOf":[{"enum":["LOW","MEDIUM","HIGH"],"type":"string"},{"type":"null"}]},"cpc":{"type":["number","null"]},"difficulty":{"type":["number","null"]},"highBid":{"type":["number","null"]},"intent":{"type":["string","null"]},"keyword":{"minLength":1,"type":"string"},"lowBid":{"type":["number","null"]},"referringDomains":{"type":["number","null"]},"secondaryIntents":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}]},"serpFeatures":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}]},"trend":{"anyOf":[{"items":{"additionalProperties":false,"properties":{"month":{"maximum":12,"minimum":1,"type":"integer"},"volume":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"year":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["year","month","volume"],"type":"object"},"type":"array"},{"type":"null"}]},"volume":{"type":["number","null"]}},"required":["keyword","volume","difficulty","intent","secondaryIntents","cpc","competition","competitionLevel","lowBid","highBid","trend","serpFeatures","backlinks","referringDomains"],"type":"object"},"type":"array"},"message":{"type":"string"},"serpFallback":{"anyOf":[{"additionalProperties":false,"properties":{"message":{"type":"string"},"tip":{"type":"string"},"topResults":{"items":{"additionalProperties":false,"properties":{"domain":{"type":"string"},"position":{"type":"number"},"title":{"type":"string"},"url":{"type":"string"}},"required":["position","title","domain","url"],"type":"object"},"type":"array"}},"required":["message","topResults","tip"],"type":"object"},{"type":"null"}]},"tip":{"type":"string"},"topic":{"minLength":1,"type":"string"},"topicMetrics":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"measured","type":"string"},"metrics":{"additionalProperties":false,"properties":{"backlinks":{"type":["number","null"]},"competition":{"type":["number","null"]},"competitionLevel":{"anyOf":[{"enum":["LOW","MEDIUM","HIGH"],"type":"string"},{"type":"null"}]},"cpc":{"type":["number","null"]},"difficulty":{"type":["number","null"]},"highBid":{"type":["number","null"]},"intent":{"type":["string","null"]},"keyword":{"minLength":1,"type":"string"},"lowBid":{"type":["number","null"]},"referringDomains":{"type":["number","null"]},"secondaryIntents":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}]},"serpFeatures":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}]},"trend":{"anyOf":[{"items":{"additionalProperties":false,"properties":{"month":{"maximum":12,"minimum":1,"type":"integer"},"volume":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"year":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["year","month","volume"],"type":"object"},"type":"array"},{"type":"null"}]},"volume":{"type":["number","null"]}},"required":["keyword","volume","difficulty","intent","secondaryIntents","cpc","competition","competitionLevel","lowBid","highBid","trend","serpFeatures","backlinks","referringDomains"],"type":"object"},"topic":{"minLength":1,"type":"string"}},"required":["_tag","topic","metrics"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"no-data","type":"string"},"topic":{"minLength":1,"type":"string"}},"required":["_tag","topic"],"type":"object"}]},"type":"array"},"totalFound":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["topic","topicMetrics","keywords","totalFound","filters","evidence"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"research.keywords.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"research.keywords.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"research.keywords.query.request":{"additionalProperties":false,"properties":{"includeRelated":{"anyOf":[{"type":"boolean"},{"enum":["0","1","true","false"],"type":"string"}]},"intent":{"minLength":1,"type":"string"},"limit":{"default":20,"maximum":100,"minimum":1,"type":"integer"},"locationCode":{"default":2840,"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"maxDifficulty":{"default":60,"maximum":100,"minimum":0,"type":"number"},"maxVolume":{"default":10000,"maximum":9007199254740991,"minimum":0,"type":"integer"},"minDifficulty":{"default":0,"maximum":100,"minimum":0,"type":"number"},"minVolume":{"default":10,"maximum":9007199254740991,"minimum":0,"type":"integer"},"topic":{"maxLength":200,"minLength":2,"type":"string"},"verbose":{"anyOf":[{"type":"boolean"},{"enum":["0","1","true","false"],"type":"string"}]}},"required":["topic"],"type":"object"},"research.overview.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"competitors":{"items":{"additionalProperties":false,"properties":{"collectedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"discovery":{"enum":["manual","automatic","unknown"],"type":"string"},"domain":{"minLength":1,"type":"string"},"history":{"items":{"additionalProperties":false,"properties":{"metrics":{"additionalProperties":false,"properties":{"keywordFootprint":{"type":["number","null"]},"organicTraffic":{"type":["number","null"]},"totalKeywords":{"type":["number","null"]},"trafficValue":{"type":["number","null"]}},"required":["organicTraffic","totalKeywords","keywordFootprint","trafficValue"],"type":"object"},"observedAt":{"anyOf":[{"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":"string"},{"type":"null"}]}},"required":["observedAt","metrics"],"type":"object"},"type":"array"},"keywordGaps":{"items":{"additionalProperties":false,"properties":{"intent":{"type":["string","null"]},"keyword":{"minLength":1,"type":"string"},"position":{"type":["number","null"]},"traffic":{"type":["number","null"]},"url":{"type":["string","null"]},"volume":{"type":["number","null"]}},"required":["keyword","position","volume","traffic","url","intent"],"type":"object"},"type":"array"},"metrics":{"additionalProperties":false,"properties":{"keywordFootprint":{"type":["number","null"]},"organicTraffic":{"type":["number","null"]},"totalKeywords":{"type":["number","null"]},"trafficValue":{"type":["number","null"]}},"required":["organicTraffic","totalKeywords","keywordFootprint","trafficValue"],"type":"object"},"quickWins":{"items":{"additionalProperties":false,"properties":{"keyword":{"minLength":1,"type":"string"},"theirPosition":{"type":"number"},"volume":{"type":"number"},"yourPosition":{"type":"number"}},"required":["keyword","yourPosition","theirPosition","volume"],"type":"object"},"type":"array"},"sharedKeywords":{"items":{"additionalProperties":false,"properties":{"keyword":{"minLength":1,"type":"string"},"theirPosition":{"type":"number"},"volume":{"type":"number"},"yourPosition":{"type":"number"}},"required":["keyword","yourPosition","theirPosition","volume"],"type":"object"},"type":"array"},"topKeywords":{"items":{"additionalProperties":false,"properties":{"intent":{"type":["string","null"]},"keyword":{"minLength":1,"type":"string"},"position":{"type":["number","null"]},"traffic":{"type":["number","null"]},"url":{"type":["string","null"]},"volume":{"type":["number","null"]}},"required":["keyword","position","volume","traffic","url","intent"],"type":"object"},"type":"array"}},"required":["domain","discovery","metrics","topKeywords","sharedKeywords","keywordGaps","quickWins","history","collectedAt"],"type":"object"},"type":"array"},"evidence":{"additionalProperties":false,"properties":{"_tag":{"const":"stored","type":"string"},"collectedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"provider":{"const":"dataforseo","type":"string"}},"required":["_tag","provider","collectedAt"],"type":"object"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"collectedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"domain":{"minLength":1,"type":"string"},"history":{"items":{"additionalProperties":false,"properties":{"metrics":{"additionalProperties":false,"properties":{"keywordFootprint":{"type":["number","null"]},"organicTraffic":{"type":["number","null"]},"totalKeywords":{"type":["number","null"]},"trafficValue":{"type":["number","null"]}},"required":["organicTraffic","totalKeywords","keywordFootprint","trafficValue"],"type":"object"},"observedAt":{"anyOf":[{"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":"string"},{"type":"null"}]}},"required":["observedAt","metrics"],"type":"object"},"type":"array"},"metrics":{"additionalProperties":false,"properties":{"keywordFootprint":{"type":["number","null"]},"organicTraffic":{"type":["number","null"]},"totalKeywords":{"type":["number","null"]},"trafficValue":{"type":["number","null"]}},"required":["organicTraffic","totalKeywords","keywordFootprint","trafficValue"],"type":"object"}},"required":["domain","metrics","history","collectedAt"],"type":"object"},{"type":"null"}]},"summary":{"additionalProperties":false,"properties":{"competitorCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"quickWins":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"totalSharedKeywords":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"totalTrafficValue":{"minimum":0,"type":"number"}},"required":["competitorCount","quickWins","totalSharedKeywords","totalTrafficValue"],"type":"object"}},"required":["evidence","summary","subject","competitors"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"research.overview.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"research.overview.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"research.rankings.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"cached":{"type":"boolean"},"domain":{"minLength":1,"type":"string"},"keywords":{"items":{"additionalProperties":false,"properties":{"intent":{"type":["string","null"]},"keyword":{"minLength":1,"type":"string"},"position":{"type":"number"},"traffic":{"type":"number"},"url":{"type":"string"},"volume":{"type":"number"}},"required":["keyword","position","volume","traffic","url"],"type":"object"},"type":"array"},"message":{"type":"string"},"metrics":{"anyOf":[{"additionalProperties":false,"properties":{"keywordFootprint":{"additionalProperties":false,"properties":{"provenance":{"const":"local-keyword-count","type":"string"},"scale":{"additionalProperties":false,"properties":{"max":{"const":100,"type":"number"},"min":{"const":0,"type":"number"}},"required":["min","max"],"type":"object"},"score":{"type":["number","null"]}},"required":["score","scale","provenance"],"type":"object"},"organicTraffic":{"type":"number"},"topPages":{"items":{"additionalProperties":false,"properties":{"keywords":{"type":"number"},"path":{"type":"string"},"traffic":{"type":"number"}},"required":["path","traffic","keywords"],"type":"object"},"type":"array"},"totalKeywords":{"type":"number"},"trafficValue":{"type":["number","null"]}},"required":["organicTraffic","totalKeywords","keywordFootprint","trafficValue","topPages"],"type":"object"},{"type":"null"}]},"positionRange":{"additionalProperties":false,"properties":{"max":{"type":"number"},"min":{"type":"number"}},"required":["min","max"],"type":"object"},"totalFound":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["domain","keywords","totalFound","metrics","cached"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"research.rankings.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"research.rankings.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"research.rankings.query.request":{"additionalProperties":false,"properties":{"domain":{"maxLength":253,"minLength":1,"type":"string"},"limit":{"default":50,"maximum":100,"minimum":1,"type":"integer"},"locationCode":{"default":2840,"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"maxPosition":{"default":20,"maximum":100,"minimum":1,"type":"integer"},"minPosition":{"default":1,"maximum":100,"minimum":1,"type":"integer"},"order":{"default":"position","enum":["position","traffic"],"type":"string"}},"required":["domain"],"type":"object"},"research.serp.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"cached":{"type":"boolean"},"depth":{"maximum":20,"minimum":1,"type":"integer"},"fetchedAt":{"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":"string"},"hasAiOverview":{"type":"boolean"},"hasFeaturedSnippet":{"type":"boolean"},"hasLocalPack":{"type":"boolean"},"hasPeopleAlsoAsk":{"type":"boolean"},"keyword":{"minLength":1,"type":"string"},"results":{"items":{"additionalProperties":false,"properties":{"description":{"type":"string"},"domain":{"type":"string"},"position":{"type":"number"},"title":{"type":"string"},"url":{"type":"string"}},"required":["position","url","title","domain"],"type":"object"},"type":"array"},"serpFeatures":{"items":{"type":"string"},"type":"array"}},"required":["keyword","depth","results","serpFeatures","hasAiOverview","hasFeaturedSnippet","hasLocalPack","hasPeopleAlsoAsk","fetchedAt","cached"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"research.serp.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"research.serp.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"research.serp.query.request":{"additionalProperties":false,"properties":{"depth":{"default":10,"maximum":20,"minimum":1,"type":"integer"},"keyword":{"maxLength":200,"minLength":2,"type":"string"},"locationCode":{"default":2840,"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["keyword"],"type":"object"},"sites.list.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"page":{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"limit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","limit","offset","hasMore"],"type":"object"},"rows":{"items":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"monitoring":{"additionalProperties":false,"properties":{"analysisAvailable":{"type":"boolean"},"mode":{"anyOf":[{"enum":["search_tracking","full_monitoring"],"type":"string"},{"type":"null"}]},"status":{"enum":["active","paused","unconfigured"],"type":"string"}},"required":["mode","status","analysisAvailable"],"type":"object"},"name":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"searchConsole":{"additionalProperties":false,"properties":{"status":{"enum":["connected","disconnected","action_required"],"type":"string"}},"required":["status"],"type":"object"},"url":{"anyOf":[{"format":"uri","type":"string"},{"type":"null"}]}},"required":["id","name","url","searchConsole","monitoring"],"type":"object"},"type":"array"},"sites":{"items":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"monitoring":{"additionalProperties":false,"properties":{"analysisAvailable":{"type":"boolean"},"mode":{"anyOf":[{"enum":["search_tracking","full_monitoring"],"type":"string"},{"type":"null"}]},"status":{"enum":["active","paused","unconfigured"],"type":"string"}},"required":["mode","status","analysisAvailable"],"type":"object"},"name":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"searchConsole":{"additionalProperties":false,"properties":{"status":{"enum":["connected","disconnected","action_required"],"type":"string"}},"required":["status"],"type":"object"},"url":{"anyOf":[{"format":"uri","type":"string"},{"type":"null"}]}},"required":["id","name","url","searchConsole","monitoring"],"type":"object"},"type":"array"}},"required":["sites","rows","page"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version","total"],"type":"object"}},"required":["data","meta"],"type":"object"},"sites.list.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"sites.search.analytics.query.200.response":{"additionalProperties":false,"properties":{"data":{"oneOf":[{"additionalProperties":false,"properties":{"page":{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"limit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","limit","offset","hasMore"],"type":"object"},"period":{"enum":["7d","28d","3m","6m","12m"],"type":"string"},"representedTotals":{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"impressions":{"type":"number"}},"required":["clicks","impressions"],"type":"object"},"representedTotalsScope":{"minLength":1,"type":"string"},"rows":{"items":{"additionalProperties":false,"properties":{"change":{"type":["number","null"]},"clicks":{"type":"number"},"ctr":{"type":"number"},"gscPage":{"type":["string","null"]},"impressions":{"type":"number"},"keyword":{"type":["string","null"]},"pos":{"type":"number"},"prevClicks":{"type":"number"},"prevImpressions":{"type":"number"},"prevPos":{"type":"number"},"url":{"minLength":1,"type":"string"}},"required":["url","clicks","impressions","ctr","pos","keyword","change","gscPage"],"type":"object"},"type":"array"},"site":{"minLength":1,"type":"string"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"totals":{"anyOf":[{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"ctr":{"type":"number"},"impressions":{"type":"number"},"position":{"type":"number"}},"required":["clicks","impressions","ctr","position"],"type":"object"},{"type":"null"}]},"totalsScope":{"minLength":1,"type":"string"},"type":{"const":"pages","default":"pages","type":"string"},"view":{"const":"pages","type":"string"}},"required":["site","view","type","period","total","totals","totalsScope","representedTotals","representedTotalsScope","rows","page"],"type":"object"},{"additionalProperties":false,"properties":{"page":{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"limit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","limit","offset","hasMore"],"type":"object"},"period":{"enum":["7d","28d","3m","6m","12m"],"type":"string"},"representedTotals":{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"impressions":{"type":"number"}},"required":["clicks","impressions"],"type":"object"},"representedTotalsScope":{"minLength":1,"type":"string"},"rows":{"items":{"additionalProperties":false,"properties":{"change":{"type":["number","null"]},"clicks":{"type":"number"},"ctr":{"type":"number"},"impressions":{"type":"number"},"keyword":{"minLength":1,"type":"string"},"pos":{"type":"number"},"prevClicks":{"type":"number"},"prevImpressions":{"type":"number"},"prevPos":{"type":"number"},"topPage":{"type":["string","null"]}},"required":["keyword","clicks","impressions","ctr","pos","topPage","change"],"type":"object"},"type":"array"},"site":{"minLength":1,"type":"string"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"totals":{"anyOf":[{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"ctr":{"type":"number"},"impressions":{"type":"number"},"position":{"type":"number"}},"required":["clicks","impressions","ctr","position"],"type":"object"},{"type":"null"}]},"totalsScope":{"minLength":1,"type":"string"},"type":{"const":"keywords","default":"keywords","type":"string"},"view":{"const":"keywords","type":"string"}},"required":["site","view","type","period","total","totals","totalsScope","representedTotals","representedTotalsScope","rows","page"],"type":"object"},{"additionalProperties":false,"properties":{"page":{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"limit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","limit","offset","hasMore"],"type":"object"},"period":{"enum":["7d","28d","3m","6m","12m"],"type":"string"},"representedTotals":{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"impressions":{"type":"number"}},"required":["clicks","impressions"],"type":"object"},"representedTotalsScope":{"minLength":1,"type":"string"},"rows":{"items":{"additionalProperties":false,"properties":{"change":{"type":["number","null"]},"clicks":{"type":"number"},"country":{"minLength":1,"type":"string"},"ctr":{"type":"number"},"impressions":{"type":"number"},"pos":{"type":"number"},"prevClicks":{"type":"number"}},"required":["country","clicks","impressions","ctr","pos","change"],"type":"object"},"type":"array"},"site":{"minLength":1,"type":"string"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"totals":{"anyOf":[{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"ctr":{"type":"number"},"impressions":{"type":"number"},"position":{"type":"number"}},"required":["clicks","impressions","ctr","position"],"type":"object"},{"type":"null"}]},"totalsScope":{"minLength":1,"type":"string"},"type":{"const":"countries","default":"countries","type":"string"},"view":{"const":"countries","type":"string"}},"required":["site","view","type","period","total","totals","totalsScope","representedTotals","representedTotalsScope","rows","page"],"type":"object"},{"additionalProperties":false,"properties":{"page":{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"limit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","limit","offset","hasMore"],"type":"object"},"period":{"enum":["7d","28d","3m","6m","12m"],"type":"string"},"representedTotals":{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"impressions":{"type":"number"}},"required":["clicks","impressions"],"type":"object"},"representedTotalsScope":{"minLength":1,"type":"string"},"rows":{"items":{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"ctr":{"type":"number"},"device":{"minLength":1,"type":"string"},"impressions":{"type":"number"},"pos":{"type":"number"}},"required":["device","clicks","impressions","ctr","pos"],"type":"object"},"type":"array"},"site":{"minLength":1,"type":"string"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"totals":{"anyOf":[{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"ctr":{"type":"number"},"impressions":{"type":"number"},"position":{"type":"number"}},"required":["clicks","impressions","ctr","position"],"type":"object"},{"type":"null"}]},"totalsScope":{"minLength":1,"type":"string"},"type":{"const":"devices","default":"devices","type":"string"},"view":{"const":"devices","type":"string"}},"required":["site","view","type","period","total","totals","totalsScope","representedTotals","representedTotalsScope","rows","page"],"type":"object"},{"additionalProperties":false,"properties":{"daily":{"items":{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"ctr":{"type":"number"},"date":{"minLength":1,"type":"string"},"impressions":{"type":"number"},"pos":{"type":"number"}},"required":["date","clicks","impressions","ctr","pos"],"type":"object"},"type":"array"},"period":{"enum":["7d","28d","3m","6m","12m"],"type":"string"},"prevTotals":{"anyOf":[{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"ctr":{"type":"number"},"impressions":{"type":"number"},"position":{"type":"number"}},"required":["clicks","impressions","ctr","position"],"type":"object"},{"type":"null"}]},"site":{"minLength":1,"type":"string"},"totals":{"anyOf":[{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"ctr":{"type":"number"},"impressions":{"type":"number"},"position":{"type":"number"}},"required":["clicks","impressions","ctr","position"],"type":"object"},{"type":"null"}]},"type":{"const":"timeseries","default":"timeseries","type":"string"},"view":{"const":"timeseries","type":"string"}},"required":["site","view","type","period","totals","prevTotals","daily"],"type":"object"},{"additionalProperties":false,"properties":{"pageUrl":{"type":"string"},"period":{"enum":["7d","28d","3m","6m","12m"],"type":"string"},"rows":{"items":{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"ctr":{"type":"number"},"impressions":{"type":"number"},"keyword":{"minLength":1,"type":"string"},"pos":{"type":"number"},"prevClicks":{"type":"number"},"prevPos":{"type":"number"}},"required":["keyword","clicks","impressions","ctr","pos"],"type":"object"},"type":"array"},"site":{"minLength":1,"type":"string"},"totals":{"anyOf":[{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"ctr":{"type":"number"},"impressions":{"type":"number"},"position":{"type":"number"}},"required":["clicks","impressions","ctr","position"],"type":"object"},{"type":"null"}]},"type":{"const":"page-detail","default":"page-detail","type":"string"},"view":{"const":"page-detail","type":"string"}},"required":["site","view","type","pageUrl","period","totals","rows"],"type":"object"},{"additionalProperties":false,"properties":{"keyword":{"minLength":1,"type":"string"},"period":{"enum":["7d","28d","3m","6m","12m"],"type":"string"},"rows":{"items":{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"ctr":{"type":"number"},"impressions":{"type":"number"},"page":{"minLength":1,"type":"string"},"pos":{"type":"number"},"prevClicks":{"type":"number"},"prevPos":{"type":"number"}},"required":["page","clicks","impressions","ctr","pos"],"type":"object"},"type":"array"},"site":{"minLength":1,"type":"string"},"totals":{"anyOf":[{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"ctr":{"type":"number"},"impressions":{"type":"number"},"position":{"type":"number"}},"required":["clicks","impressions","ctr","position"],"type":"object"},{"type":"null"}]},"type":{"const":"keyword-detail","default":"keyword-detail","type":"string"},"view":{"const":"keyword-detail","type":"string"}},"required":["site","view","type","keyword","period","totals","rows"],"type":"object"},{"additionalProperties":false,"properties":{"criteria":{"additionalProperties":{"type":["string","number","null"]},"propertyNames":{"type":"string"},"type":"object"},"description":{"minLength":1,"type":"string"},"period":{"enum":["7d","28d","3m","6m","12m"],"type":"string"},"preset":{"enum":["striking-distance","opportunity","decay","zero-click","non-brand","brand-only","movers-rising","movers-declining"],"type":"string"},"rows":{"items":{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"clicksChange":{"type":"number"},"ctr":{"type":"number"},"decayPct":{"type":"number"},"impressions":{"type":"number"},"keyword":{"minLength":1,"type":"string"},"missedClicks":{"type":"number"},"opportunityScore":{"type":"number"},"page":{"type":"string"},"pos":{"type":["number","null"]},"posChange":{"type":"number"},"potentialClicks":{"type":"number"},"prevClicks":{"type":"number"},"prevImpressions":{"type":"number"},"prevPos":{"type":"number"}},"required":["keyword","clicks","impressions","ctr","pos"],"type":"object"},"type":"array"},"site":{"minLength":1,"type":"string"},"summary":{"anyOf":[{"additionalProperties":{"type":["string","number","boolean","null"]},"propertyNames":{"type":"string"},"type":"object"},{"type":"null"}]},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"type":{"const":"analysis","default":"analysis","type":"string"},"view":{"const":"analysis","type":"string"}},"required":["site","view","type","preset","description","criteria","period","total","summary","rows"],"type":"object"}]},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"sites.search.analytics.query.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"sites.search.analytics.query.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"sites.search.analytics.query.query.request":{"additionalProperties":false,"properties":{"brandTerms":{"type":"string"},"filter":{"enum":["top-level","new","lost","improving","declining"],"type":"string"},"keyword":{"minLength":1,"type":"string"},"limit":{"default":25,"maximum":100,"minimum":1,"type":"integer"},"maxClicks":{"type":"number"},"maxCtr":{"maximum":1,"minimum":0,"type":"number"},"maxImpressions":{"type":"number"},"maxPosition":{"type":"number"},"minClicks":{"type":"number"},"minImpressions":{"type":"number"},"minPosition":{"type":"number"},"page":{"default":1,"maximum":9007199254740991,"minimum":1,"type":"integer"},"pageUrl":{"type":"string"},"period":{"default":"28d","enum":["7d","28d","3m","6m","12m"],"type":"string"},"preset":{"enum":["striking-distance","opportunity","decay","zero-click","non-brand","brand-only","movers-rising","movers-declining"],"type":"string"},"search":{"type":"string"},"sort":{"default":"clicks","enum":["clicks","impressions","ctr","position"],"type":"string"},"sortDir":{"default":"desc","enum":["asc","desc"],"type":"string"},"view":{"enum":["pages","keywords","countries","devices","timeseries","page-detail","keyword-detail","analysis"],"type":"string"}},"required":["view"],"type":"object"},"sites.search.indexing.cohorts.read.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"analysed":{"type":"boolean"},"asOf":{"type":["string","null"]},"baseline":{"anyOf":[{"additionalProperties":false,"properties":{"notIndexed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"notIndexedPercent":{"type":"number"},"pages":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["pages","notIndexed","notIndexedPercent"],"type":"object"},{"type":"null"}]},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"analysed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"excludedFragments":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"notIndexedNotInCrawl":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["analysed","notIndexedNotInCrawl","excludedFragments"],"type":"object"},{"type":"null"}]},"established":{"items":{"additionalProperties":false,"properties":{"alreadyCountedAbove":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"confidenceIntervalLower":{"type":"number"},"confidenceIntervalUpper":{"type":"number"},"dimension":{"type":"string"},"family":{"type":"string"},"notIndexed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"notIndexedPercent":{"type":"number"},"pages":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"pathPrefix":{"type":["string","null"]},"restOfSitePages":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"restOfSitePercent":{"type":"number"}},"required":["family","dimension","pathPrefix","pages","notIndexed","notIndexedPercent","restOfSitePercent","restOfSitePages","confidenceIntervalLower","confidenceIntervalUpper","alreadyCountedAbove"],"type":"object"},"type":"array"},"establishedNote":{"type":["string","null"]},"familiesTested":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"message":{"type":["string","null"]},"method":{"type":["string","null"]},"minSectionPages":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"ranked":{"items":{"additionalProperties":false,"properties":{"belowMinimumSample":{"type":"boolean"},"family":{"type":"string"},"notIndexed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"notIndexedPercent":{"type":"number"},"pages":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"statisticallyEstablished":{"type":"boolean"}},"required":["family","pages","notIndexed","notIndexedPercent","statisticallyEstablished","belowMinimumSample"],"type":"object"},"type":"array"},"rankedTotal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"type":["string","null"]}},"required":["analysed","reason","message","asOf","baseline","coverage","method","familiesTested","established","establishedNote","ranked","rankedTotal","minSectionPages"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"sites.search.indexing.cohorts.read.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"sites.search.indexing.cohorts.read.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"sites.search.indexing.cohorts.read.query.request":{"additionalProperties":false,"properties":{"limit":{"default":12,"maximum":50,"minimum":1,"type":"integer"},"minSectionPages":{"default":5,"maximum":500,"minimum":1,"type":"integer"}},"type":"object"},"sites.search.indexing.diagnostics.read.200.response":{"additionalProperties":false,"properties":{"data":{"oneOf":[{"additionalProperties":false,"properties":{"asOf":{"anyOf":[{"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":"string"},{"type":"null"}]},"asOfSource":{"anyOf":[{"enum":["rollup","capture","newest-check"],"type":"string"},{"type":"null"}]},"indexed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"issues":{"items":{"additionalProperties":false,"properties":{"count":{"type":"number"},"description":{"type":"string"},"fix":{"type":"string"},"label":{"type":"string"},"severity":{"enum":["error","warning","info"],"type":"string"},"type":{"type":"string"}},"required":["type","label","severity","count","description","fix"],"type":"object"},"type":"array"},"oldestCheckAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"totalUrls":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"verdictFreshness":{"anyOf":[{"additionalProperties":false,"properties":{"olderThan30dPercent":{"maximum":100,"minimum":0,"type":"number"},"olderThan7dPercent":{"maximum":100,"minimum":0,"type":"number"}},"required":["olderThan7dPercent","olderThan30dPercent"],"type":"object"},{"type":"null"}]},"view":{"const":"summary","type":"string"}},"required":["view","totalUrls","indexed","asOf","asOfSource","oldestCheckAt","verdictFreshness","issues"],"type":"object"},{"additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"limit":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"totalSemantics":{"enum":["exact","lower-bound","unknown"],"type":"string"},"urls":{"items":{"additionalProperties":false,"properties":{"coverageState":{"type":["string","null"]},"googleCanonical":{"type":["string","null"]},"indexingState":{"type":["string","null"]},"lastCheckedAt":{"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":"string"},"lastCrawlTime":{"type":["string","null"]},"url":{"minLength":1,"type":"string"},"userCanonical":{"type":["string","null"]},"verdict":{"type":["string","null"]}},"required":["url","verdict","coverageState","indexingState","userCanonical","googleCanonical","lastCrawlTime","lastCheckedAt"],"type":"object"},"type":"array"},"view":{"const":"urls","type":"string"}},"required":["view","total","totalSemantics","limit","offset","hasMore","urls"],"type":"object"}]},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"sites.search.indexing.diagnostics.read.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"sites.search.indexing.diagnostics.read.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"sites.search.indexing.diagnostics.read.query.request":{"additionalProperties":false,"properties":{"issue":{"minLength":1,"type":"string"},"limit":{"default":50,"maximum":500,"minimum":1,"type":"integer"},"offset":{"default":0,"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["indexed","not_indexed","pending"],"type":"string"},"view":{"default":"summary","enum":["summary","urls"],"type":"string"}},"type":"object"},"sites.search.indexing.history.read.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"afterDay":{"format":"date","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])))$","type":"string"},"beforeDay":{"format":"date","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])))$","type":"string"},"cause":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"sole-candidate","type":"string"},"marker":{"additionalProperties":false,"properties":{"day":{"format":"date","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])))$","type":"string"},"label":{"minLength":1,"type":"string"},"source":{"enum":["release","annotation"],"type":"string"}},"required":["day","label","source"],"type":"object"}},"required":["_tag","marker"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"ambiguous","type":"string"},"markers":{"items":{"additionalProperties":false,"properties":{"day":{"format":"date","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])))$","type":"string"},"label":{"minLength":1,"type":"string"},"source":{"enum":["release","annotation"],"type":"string"}},"required":["day","label","source"],"type":"object"},"type":"array"}},"required":["_tag","markers"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"no-known-change","type":"string"}},"required":["_tag"],"type":"object"}]},"field":{"enum":["indexStatus","coverageState","robotsTxtState","indexingState","pageFetchState","googleCanonical"],"type":"string"},"fromValue":{"type":["string","null"]},"observedOverDays":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"toValue":{"type":["string","null"]},"url":{"minLength":1,"type":"string"}},"required":["url","field","fromValue","toValue","afterDay","beforeDay","observedOverDays","cause"],"type":"object"},"type":"array"},"complete":{"type":"boolean"},"endDate":{"format":"date","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])))$","type":"string"},"resolvedUrl":{"type":["string","null"]},"scope":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"url","type":"string"},"url":{"minLength":1,"type":"string"}},"required":["_tag","url"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"site","type":"string"},"field":{"enum":["indexStatus","coverageState","robotsTxtState","indexingState","pageFetchState","googleCanonical"],"type":"string"}},"required":["_tag","field"],"type":"object"}]},"startDate":{"format":"date","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])))$","type":"string"},"unchanged":{"anyOf":[{"additionalProperties":false,"properties":{"firstObservedDay":{"anyOf":[{"format":"date","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])))$","type":"string"},{"type":"null"}]},"lastObservedDay":{"anyOf":[{"format":"date","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])))$","type":"string"},{"type":"null"}]},"observations":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["observations","firstObservedDay","lastObservedDay"],"type":"object"},{"type":"null"}]}},"required":["scope","startDate","endDate","complete","resolvedUrl","unchanged","changes"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"sites.search.indexing.history.read.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"sites.search.indexing.history.read.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"sites.search.indexing.history.read.query.request":{"additionalProperties":false,"properties":{"days":{"default":180,"maximum":730,"minimum":1,"type":"integer"},"field":{"enum":["indexStatus","coverageState","robotsTxtState","indexingState","pageFetchState","googleCanonical"],"type":"string"},"url":{"type":"string"}},"type":"object"},"sites.search.indexing.inspection.read.200.response":{"additionalProperties":false,"properties":{"data":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"inspected","type":"string"},"canonicalMismatchKind":{"enum":["none","formatting","path","cross_domain"],"type":"string"},"canonicalisedAway":{"type":"boolean"},"checkCount":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"coverageState":{"type":["string","null"]},"crawledAs":{"type":["string","null"]},"firstCheckedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"googleCanonical":{"type":["string","null"]},"indexingState":{"type":["string","null"]},"inspectedUrl":{"minLength":1,"type":"string"},"inspectionResultLink":{"type":["string","null"]},"lastCheckedAt":{"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":"string"},"lastCrawlTime":{"type":["string","null"]},"pageFetchState":{"type":["string","null"]},"referringUrls":{"items":{"type":"string"},"type":"array"},"requestedUrl":{"minLength":1,"type":"string"},"robotsTxtState":{"type":["string","null"]},"sitemaps":{"items":{"type":"string"},"type":"array"},"userCanonical":{"type":["string","null"]},"verdict":{"type":["string","null"]}},"required":["_tag","requestedUrl","inspectedUrl","verdict","coverageState","indexingState","robotsTxtState","pageFetchState","lastCrawlTime","crawledAs","userCanonical","googleCanonical","canonicalisedAway","canonicalMismatchKind","sitemaps","referringUrls","inspectionResultLink","lastCheckedAt","firstCheckedAt","checkCount"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"retained-evidence","type":"string"},"canonicalisedAway":{"type":"boolean"},"coverageState":{"type":["string","null"]},"evidenceUrl":{"minLength":1,"type":"string"},"googleCanonical":{"type":["string","null"]},"issueType":{"minLength":1,"type":"string"},"label":{"type":["string","null"]},"lastSeenAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"observedAt":{"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":"string"},"requestedUrl":{"minLength":1,"type":"string"},"userCanonical":{"type":["string","null"]}},"required":["_tag","requestedUrl","evidenceUrl","issueType","label","coverageState","userCanonical","googleCanonical","canonicalisedAway","observedAt","lastSeenAt"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"no-inspection-data","type":"string"},"requestedUrl":{"minLength":1,"type":"string"}},"required":["_tag","requestedUrl"],"type":"object"}]},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"sites.search.indexing.inspection.read.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"sites.search.indexing.inspection.read.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"sites.search.indexing.inspection.read.query.request":{"additionalProperties":false,"properties":{"url":{"type":"string"}},"required":["url"],"type":"object"},"sites.search.indexing.inspection.refresh.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"checkedAt":{"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":"string"},"errors":{"items":{"additionalProperties":{},"properties":{"error":{"type":"string"},"url":{"type":"string"}},"required":["url","error"],"type":"object"},"type":"array"},"rateLimit":{"additionalProperties":{},"properties":{"limit":{"type":"number"},"remaining":{"type":"number"},"reserved":{"type":"number"}},"required":["reserved","remaining","limit"],"type":"object"},"results":{"items":{"additionalProperties":{},"properties":{"coverageState":{"type":["string","null"]},"crawlingUserAgent":{"type":["string","null"]},"googleCanonical":{"type":["string","null"]},"indexingState":{"type":["string","null"]},"inspectionResultLink":{"type":["string","null"]},"lastCrawlTime":{"type":["string","null"]},"mobileIssues":{"type":["string","null"]},"mobileVerdict":{"type":["string","null"]},"pageFetchState":{"type":["string","null"]},"referringUrls":{"type":["string","null"]},"richResultsItems":{"type":["string","null"]},"richResultsVerdict":{"type":["string","null"]},"robotsTxtState":{"type":["string","null"]},"sitemaps":{"type":["string","null"]},"url":{"type":"string"},"userCanonical":{"type":["string","null"]},"verdict":{"type":["string","null"]}},"required":["url","verdict","coverageState","indexingState","robotsTxtState","pageFetchState","lastCrawlTime","crawlingUserAgent","userCanonical","googleCanonical","sitemaps","referringUrls","mobileVerdict","mobileIssues","richResultsVerdict","richResultsItems","inspectionResultLink"],"type":"object"},"type":"array"},"siteId":{"type":"string"},"skipped":{"items":{"additionalProperties":{},"properties":{"reason":{"type":"string"},"url":{"type":"string"}},"required":["url","reason"],"type":"object"},"type":"array"}},"required":["siteId","rateLimit","results","errors","skipped","checkedAt"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"sites.search.indexing.inspection.refresh.body.request":{"additionalProperties":false,"properties":{"url":{"type":"string"}},"required":["url"],"type":"object"},"sites.search.indexing.inspection.refresh.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"sites.search.indexing.inspection.refresh.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"sites.search.indexing.watches.list.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"cadenceDays":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"limit":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"meta":{"additionalProperties":{},"properties":{"siteUrl":{"type":"string"}},"required":["siteUrl"],"type":"object"},"watched":{"items":{"additionalProperties":{},"properties":{"addedAt":{"type":"string"},"checkpoints":{"items":{"additionalProperties":{},"properties":{"checkedAt":{"type":"string"},"coverageState":{"default":"unrecognized","enum":["unknown_to_google","discovered_not_indexed","crawled_not_indexed","indexed","noindex","blocked_robots","soft_404","not_found","server_error","access_denied","access_forbidden","blocked_4xx","redirect","redirect_error","alternate_canonical","duplicate_no_canonical","duplicate_google_canonical","page_removed","unrecognized","not_reported"],"type":"string"},"googleCoverageState":{"type":["string","null"]},"lastCrawlTime":{"type":["string","null"]},"verdict":{"type":["string","null"]}},"required":["checkedAt","coverageState","googleCoverageState","verdict","lastCrawlTime"],"type":"object"},"type":"array"},"dueAt":{"type":"string"},"url":{"type":"string"}},"required":["url","addedAt","dueAt","checkpoints"],"type":"object"},"type":"array"}},"required":["watched","limit","cadenceDays","meta"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"sites.search.indexing.watches.list.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"sites.search.indexing.watches.list.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"sites.search.status.read.200.response":{"additionalProperties":false,"properties":{"data":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"Connected","type":"string"},"site":{"minLength":1,"type":"string"}},"required":["_tag","site"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"ActionRequired","type":"string"},"reason":{"enum":["credential_missing","credential_inactive"],"type":"string"},"site":{"minLength":1,"type":"string"}},"required":["_tag","site","reason"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"Disconnected","type":"string"},"site":{"minLength":1,"type":"string"}},"required":["_tag","site"],"type":"object"}]},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"sites.search.status.read.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"sites.search.status.read.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"sites.sitemaps.action.create.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"action":{"enum":["submitted","deleted"],"type":"string"},"sitemapCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sitemapUrl":{"minLength":1,"type":"string"},"success":{"type":"boolean"}},"required":["success","action","sitemapUrl","sitemapCount"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"sites.sitemaps.action.create.body.request":{"oneOf":[{"properties":{"action":{"const":"submit","type":"string"},"sitemapUrl":{"minLength":1,"type":"string"}},"required":["action","sitemapUrl"],"type":"object"},{"properties":{"action":{"const":"delete","type":"string"},"sitemapUrl":{"minLength":1,"type":"string"}},"required":["action","sitemapUrl"],"type":"object"}]},"sites.sitemaps.action.create.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"sites.sitemaps.action.create.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"sites.sitemaps.inspect.200.response":{"additionalProperties":false,"properties":{"data":{"anyOf":[{"additionalProperties":false,"properties":{"capture":{"additionalProperties":false,"properties":{"_tag":{"const":"captured","type":"string"},"capturedAt":{"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":"string"},"source":{"enum":["live","stored"],"type":"string"}},"required":["_tag","source","capturedAt"],"type":"object"},"searchEngine":{"const":"google","type":"string"},"sitemapUrl":{"format":"uri","maxLength":2048,"type":"string"},"state":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"listed","type":"string"},"errors":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"isPending":{"type":"boolean"},"lastDownloaded":{"anyOf":[{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"},{"type":"null"}]},"lastSubmitted":{"anyOf":[{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"},{"type":"null"}]},"urlCount":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"warnings":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["_tag","lastSubmitted","lastDownloaded","isPending","errors","warnings","urlCount"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"missing","type":"string"}},"required":["_tag"],"type":"object"}]}},"required":["searchEngine","sitemapUrl","capture","state"],"type":"object"},{"additionalProperties":false,"properties":{"capture":{"additionalProperties":false,"properties":{"_tag":{"const":"captured","type":"string"},"capturedAt":{"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":"string"},"source":{"enum":["live","stored"],"type":"string"}},"required":["_tag","source","capturedAt"],"type":"object"},"searchEngine":{"const":"bing","type":"string"},"sitemapUrl":{"format":"uri","maxLength":2048,"type":"string"},"state":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"listed","type":"string"},"lastCrawledAt":{"anyOf":[{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"},{"type":"null"}]},"status":{"type":"string"},"submittedAt":{"anyOf":[{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"},{"type":"null"}]},"urlCount":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["_tag","status","submittedAt","lastCrawledAt","urlCount"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"missing","type":"string"}},"required":["_tag"],"type":"object"}]}},"required":["searchEngine","sitemapUrl","capture","state"],"type":"object"},{"additionalProperties":false,"properties":{"capture":{"additionalProperties":false,"properties":{"_tag":{"const":"unavailable","type":"string"}},"required":["_tag"],"type":"object"},"searchEngine":{"enum":["google","bing"],"type":"string"},"sitemapUrl":{"format":"uri","maxLength":2048,"type":"string"},"state":{"additionalProperties":false,"properties":{"_tag":{"const":"unavailable","type":"string"},"reason":{"enum":["grant-missing","reauthorization-required","permission-lost","site-unverified","not-enabled","not-checked","throttled","provider-unavailable"],"type":"string"},"retryable":{"type":"boolean"}},"required":["_tag","reason","retryable"],"type":"object"}},"required":["searchEngine","sitemapUrl","capture","state"],"type":"object"}]},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"sites.sitemaps.inspect.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"sites.sitemaps.inspect.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"sites.sitemaps.inspect.query.request":{"additionalProperties":false,"properties":{"searchEngine":{"enum":["google","bing"],"type":"string"},"url":{"format":"uri","maxLength":2048,"type":"string"}},"required":["searchEngine","url"],"type":"object"},"sites.sitemaps.list.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"generation":{"anyOf":[{"additionalProperties":false,"properties":{"completeness":{"additionalProperties":false,"properties":{"_tag":{"const":"complete","type":"string"}},"required":["_tag"],"type":"object"},"id":{"minLength":1,"type":"string"},"legacyImport":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"none","type":"string"}},"required":["_tag"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"metadata_only","type":"string"},"importedAt":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"recordCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"source":{"const":"gsc_sitemaps","type":"string"}},"required":["_tag","importedAt","recordCount","source"],"type":"object"}]},"membershipHistoryAvailableFrom":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"observedAt":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"publishedAt":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["id","observedAt","publishedAt","completeness","membershipHistoryAvailableFrom","legacyImport"],"type":"object"},{"type":"null"}]},"history":{"items":{"additionalProperties":{},"properties":{"date":{"type":"string"},"errors":{"type":"number"},"urlCount":{"type":"number"},"urlDelta":{"type":"number"},"warnings":{"type":"number"}},"required":["date","errors","warnings","urlCount","urlDelta"],"type":"object"},"type":"array"},"meta":{"additionalProperties":{},"properties":{"gscPropertyUrl":{"type":"string"},"siteUrl":{"type":"string"},"sitemapScope":{"additionalProperties":false,"properties":{"duplicateCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"excludedCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["excludedCount","duplicateCount"],"type":"object"},"syncStatus":{"type":["string","null"]}},"required":["siteUrl","syncStatus","sitemapScope"],"type":"object"},"perSitemapHistory":{"additionalProperties":{"items":{"additionalProperties":{},"properties":{"changed":{"type":"boolean"},"date":{"type":"string"},"urlCount":{"type":"number"},"urlDelta":{"type":"number"}},"required":["date","urlCount","changed","urlDelta"],"type":"object"},"type":"array"},"propertyNames":{"type":"string"},"type":"object"},"sitemaps":{"items":{"additionalProperties":{},"properties":{"contentHash":{"type":["string","null"]},"errors":{"type":"number"},"feed":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"counted","type":"string"}},"required":["_tag"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"dropped","type":"string"},"since":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"anyOf":[{"const":404,"type":"number"},{"const":410,"type":"number"}]}},"required":["_tag","status","since"],"type":"object"}]},"fetchedAt":{"type":["number","null"]},"isIndex":{"type":"boolean"},"isPending":{"type":"boolean"},"lastDownloaded":{"type":["string","null"]},"lastError":{"type":["string","null"]},"path":{"type":"string"},"urlCount":{"type":"number"},"warnings":{"type":"number"}},"required":["path","urlCount","errors","warnings"],"type":"object"},"type":"array"}},"required":["sitemaps","history","perSitemapHistory","meta","generation"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"sites.sitemaps.list.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"sites.sitemaps.list.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"sites.sitemaps.submission.read.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"callerCanAct":{"type":"boolean"},"gscPropertyUrl":{"minLength":1,"type":"string"},"searchEngine":{"const":"google","type":"string"},"state":{"anyOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"listed","type":"string"},"checkedOn":{"format":"date","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])))$","type":"string"},"sitemapCount":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["_tag","checkedOn","sitemapCount"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"awaiting-google","type":"string"},"checkedOn":{"format":"date","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])))$","type":"string"},"sitemapCount":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"sitemapUrl":{"format":"uri","type":"string"}},"required":["_tag","checkedOn","sitemapUrl","sitemapCount"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"ready","type":"string"},"sitemapUrl":{"format":"uri","type":"string"},"writeAccess":{"enum":["granted","unknown"],"type":"string"}},"required":["_tag","sitemapUrl","writeAccess"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"needs-write-access","type":"string"},"grantHolder":{"additionalProperties":false,"properties":{"_tag":{"enum":["caller","site-owner"],"type":"string"}},"required":["_tag"],"type":"object"},"requiredScope":{"const":"https://www.googleapis.com/auth/webmasters","type":"string"},"sitemapUrl":{"format":"uri","type":"string"}},"required":["_tag","sitemapUrl","requiredScope","grantHolder"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"insufficient-permission","type":"string"},"grantHolder":{"additionalProperties":false,"properties":{"_tag":{"enum":["caller","site-owner"],"type":"string"}},"required":["_tag"],"type":"object"},"permissionLevel":{"minLength":1,"type":"string"},"requiredPermissionLevels":{"items":{"enum":["siteOwner","siteFullUser"],"type":"string"},"minItems":1,"type":"array"},"sitemapUrl":{"format":"uri","type":"string"}},"required":["_tag","sitemapUrl","permissionLevel","requiredPermissionLevels","grantHolder"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"no-sitemap-found","type":"string"},"checkedOn":{"format":"date","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])))$","type":"string"}},"required":["_tag","checkedOn"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"not-checked","type":"string"}},"required":["_tag"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"unavailable","type":"string"},"reason":{"enum":["permission-lost","grant-missing"],"type":"string"}},"required":["_tag","reason"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"unknown","type":"string"}},"required":["_tag"],"type":"object"}]}},"required":["searchEngine","gscPropertyUrl","callerCanAct","state"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"sites.sitemaps.submission.read.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"sites.sitemaps.submission.read.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"sites.sitemaps.urls.list.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"generation":{"additionalProperties":false,"properties":{"completeness":{"additionalProperties":false,"properties":{"_tag":{"const":"complete","type":"string"}},"required":["_tag"],"type":"object"},"id":{"minLength":1,"type":"string"},"legacyImport":{"oneOf":[{"additionalProperties":false,"properties":{"_tag":{"const":"none","type":"string"}},"required":["_tag"],"type":"object"},{"additionalProperties":false,"properties":{"_tag":{"const":"metadata_only","type":"string"},"importedAt":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"recordCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"source":{"const":"gsc_sitemaps","type":"string"}},"required":["_tag","importedAt","recordCount","source"],"type":"object"}]},"membershipHistoryAvailableFrom":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"observedAt":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"publishedAt":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["id","observedAt","publishedAt","completeness","membershipHistoryAvailableFrom","legacyImport"],"type":"object"},"items":{"items":{"additionalProperties":false,"properties":{"feedpath":{"type":"string"},"firstSeenAt":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"lastSeenAt":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"lastmod":{"type":["string","null"]},"url":{"type":"string"}},"required":["url","feedpath","lastmod","firstSeenAt","lastSeenAt"],"type":"object"},"type":"array"},"page":{"additionalProperties":false,"properties":{"limit":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"nextCursor":{"type":["string","null"]}},"required":["nextCursor","limit"],"type":"object"}},"required":["generation","items","page"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"sites.sitemaps.urls.list.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"sites.sitemaps.urls.list.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"sites.sitemaps.urls.list.query.request":{"additionalProperties":false,"properties":{"cursor":{"minLength":1,"type":"string"},"feedpath":{"minLength":1,"type":"string"},"generationId":{"minLength":1,"type":"string"},"limit":{"maximum":10000,"minimum":1,"type":"integer"}},"type":"object"},"sites.status.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"assessment":{"anyOf":[{"additionalProperties":false,"properties":{"aggregate":{"anyOf":[{"additionalProperties":false,"properties":{"assessedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"headlineAxis":{"type":["string","null"]},"healthStage":{"type":["string","null"]},"reachStage":{"type":["string","null"]},"recommendation":{"type":"string"},"summary":{"type":"string"}},"required":["reachStage","healthStage","headlineAxis","summary","recommendation","assessedAt"],"type":"object"},{"type":"null"}]},"assessedAt":{"anyOf":[{"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":"string"},{"type":"null"}]},"headlineAxis":{"type":["string","null"]},"healthStage":{"type":["string","null"]},"reachStage":{"type":["string","null"]},"recommendation":{"type":"string"},"scope":{"enum":["site","route-family"],"type":"string"},"summary":{"type":"string"}},"required":["reachStage","healthStage","headlineAxis","summary","recommendation","assessedAt","scope","aggregate"],"type":"object"},{"type":"null"}]},"available":{"type":"boolean"},"changes":{"items":{"additionalProperties":false,"properties":{"deltaPct":{"type":["number","null"]},"direction":{"enum":["up","down","flat"],"type":"string"},"kind":{"type":"string"},"label":{"type":"string"},"meaning":{"type":["string","null"]},"source":{"type":["string","null"]},"value":{"type":["string","null"]},"window":{"type":["string","null"]}},"required":["kind","source","label","direction","value","deltaPct","window","meaning"],"type":"object"},"type":"array"},"counts":{"additionalProperties":false,"properties":{"inProgress":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"landed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"noEffect":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"open":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"shipped":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["open","inProgress","shipped","landed","noEffect"],"type":"object"},"dataQuality":{"additionalProperties":false,"properties":{"reason":{"type":["string","null"]},"status":{"enum":["complete","degraded","unavailable"],"type":"string"},"unavailableProofs":{"items":{"type":"string"},"type":"array"}},"required":["status","reason","unavailableProofs"],"type":"object"},"degradedSteps":{"items":{"type":"string"},"type":"array"},"message":{"type":["string","null"]},"nextAction":{"anyOf":[{"additionalProperties":false,"properties":{"actionId":{"type":["string","null"]},"citedProofKey":{"type":["string","null"]},"detail":{"type":["string","null"]},"dimension":{"type":["string","null"]},"focus":{"type":["string","null"]},"impact":{"type":["number","null"]},"kind":{"enum":["connect","action","dimension"],"type":"string"},"label":{"type":"string"},"urgent":{"type":"boolean"}},"required":["kind","label","detail","focus","dimension","urgent","impact","actionId","citedProofKey"],"type":"object"},{"type":"null"}]},"openCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"receipts":{"items":{"additionalProperties":false,"properties":{"actionId":{"minLength":1,"type":"string"},"note":{"type":["string","null"]},"observedAt":{"type":"string"},"outcome":{"type":"string"},"title":{"type":"string"}},"required":["actionId","title","outcome","observedAt","note"],"type":"object"},"type":"array"},"site":{"type":"string"},"verifiedCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["site","available","message","assessment","nextAction","dataQuality","openCount","verifiedCount","counts","degradedSteps","changes","receipts"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"sites.status.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"sites.status.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"timeline.annotations.create.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"annotation":{"additionalProperties":false,"properties":{"date":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"note":{"type":["string","null"]},"title":{"type":"string"},"url":{"type":["string","null"]}},"required":["id","date","title","note","url"],"type":"object"}},"required":["annotation"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"timeline.annotations.create.body.request":{"additionalProperties":false,"properties":{"date":{"format":"date","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])))$","type":"string"},"note":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}]},"title":{"maxLength":120,"minLength":1,"type":"string"},"url":{"anyOf":[{"format":"uri","maxLength":500,"type":"string"},{"type":"null"}]}},"required":["date","title"],"type":"object"},"timeline.annotations.create.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"timeline.annotations.create.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"timeline.annotations.delete.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"annotationId":{"minLength":1,"type":"string"},"deleted":{"const":true,"type":"boolean"}},"required":["annotationId","deleted"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"timeline.annotations.delete.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"timeline.annotations.delete.path.request":{"additionalProperties":false,"properties":{"annotationId":{"minLength":1,"type":"string"},"siteId":{"minLength":1,"type":"string"}},"required":["siteId","annotationId"],"type":"object"},"timeline.annotations.list.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"annotations":{"items":{"additionalProperties":false,"properties":{"date":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"note":{"type":["string","null"]},"title":{"type":"string"},"url":{"type":["string","null"]}},"required":["id","date","title","note","url"],"type":"object"},"type":"array"},"limit":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["annotations","total","limit"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"timeline.annotations.list.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"timeline.annotations.list.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"timeline.annotations.update.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"annotation":{"additionalProperties":false,"properties":{"date":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"note":{"type":["string","null"]},"title":{"type":"string"},"url":{"type":["string","null"]}},"required":["id","date","title","note","url"],"type":"object"}},"required":["annotation"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"timeline.annotations.update.body.request":{"additionalProperties":false,"properties":{"date":{"format":"date","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])))$","type":"string"},"note":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}]},"title":{"maxLength":120,"minLength":1,"type":"string"},"url":{"anyOf":[{"format":"uri","maxLength":500,"type":"string"},{"type":"null"}]}},"type":"object"},"timeline.annotations.update.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"timeline.annotations.update.path.request":{"additionalProperties":false,"properties":{"annotationId":{"minLength":1,"type":"string"},"siteId":{"minLength":1,"type":"string"}},"required":["siteId","annotationId"],"type":"object"},"timeline.entries.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"counts":{"additionalProperties":{"type":"number"},"propertyNames":{"type":"string"},"type":"object"},"entries":{"items":{"additionalProperties":false,"properties":{"id":{"type":"string"},"kind":{"type":"string"},"occurredAt":{"type":"string"},"payload":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"rendered":{"anyOf":[{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},{"type":"null"}]},"severity":{"anyOf":[{"enum":["info","notable","high"],"type":"string"},{"type":"null"}]}},"required":["id","kind","severity","occurredAt","rendered","payload"],"type":"object"},"type":"array"},"nextCursor":{"type":["string","null"]}},"required":["entries","nextCursor","counts"],"type":"object"},"meta":{"additionalProperties":false,"properties":{"requestId":{"minLength":1,"type":"string"},"version":{"const":"1.0","type":"string"}},"required":["requestId","version"],"type":"object"}},"required":["data","meta"],"type":"object"},"timeline.entries.error":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","unauthorized","forbidden","not_found","site_ambiguous","auth_expired","entitlement_required","quota_exhausted","provider_unavailable","stale_evidence","conflict","rate_limited","contract_violation","internal_error"],"type":"string"},"details":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","requestId","retryable","details"],"type":"object"}},"required":["error"],"type":"object"},"timeline.entries.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"timeline.entries.query.request":{"additionalProperties":false,"properties":{"cursor":{"minLength":1,"type":"string"},"feature":{"minLength":1,"type":"string"},"includeClosed":{"anyOf":[{"type":"boolean"},{"enum":["true","false"],"type":"string"}],"default":false},"kinds":{"type":"string"},"limit":{"default":25,"maximum":100,"minimum":1,"type":"integer"},"severity":{"type":"string"},"since":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}},"type":"object"}},"securitySchemes":{"bearerAuth":{"bearerFormat":"NuxtSEO API token","scheme":"bearer","type":"http"},"sessionAuth":{"in":"cookie","name":"nuxt-session","type":"apiKey"}}},"info":{"description":"Stable Team-scoped operations used by NuxtSEO clients.","title":"NuxtSEO Public API","version":"1.0"},"openapi":"3.1.0","paths":{"/api/v1/account/feedback":{"post":{"description":"Stores an agent report in the existing feedback queue. Operators track fixes there and review unresolved reports during health checks. No Site or paid subscription is required. Send sanitized reproduction details only. This operation does not retry.","operationId":"account.feedback","requestBody":{"content":{"application/json":{"example":{"agent":"Codex","cliVersion":"0.2.1","command":"search cohorts","comment":"Agent report by Codex. Expected a reason for missing data. Received an empty list.","intent":"bug"},"schema":{"$ref":"#/components/schemas/account.feedback.body.request"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"id":"fb_01JXYZ","status":"new"},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/account.feedback.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.feedback","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account.feedback.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.feedback","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account.feedback.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.feedback","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account.feedback.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.feedback","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account.feedback.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.feedback","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account.feedback.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.feedback","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Submit CLI feedback","tags":["Account"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"team","scopes":["feedback:write"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":10,"name":"cli-feedback","windowSeconds":3600}},"x-nuxtseo-resources":{"changes":[{"idFrom":"team.id","type":"account.feedback"}],"reads":[]},"x-nuxtseo-semantics":{"kind":"mutation","readConsistency":null,"retry":"never","sideEffects":"state"}}},"/api/v1/account/token":{"get":{"description":"Returns the Team, role, granted scopes, and expiry of the credential on this request. It spends no quota and reads no Site.","operationId":"account.token","responses":{"200":{"content":{"application/json":{"example":{"data":{"credential":"api_token","role":"admin","scopes":["account:read","sites:read"],"team":{"id":"team_01JXYZ","name":"Example","plan":"pro"},"token":{"client":null,"createdAt":"2026-08-01T00:00:00.000Z","expiresAt":null,"id":"token_01JXYZ","label":"CLI on laptop","lastUsedAt":"2026-08-20T00:00:00.000Z"},"user":{"email":"agent@example.com","id":"user_01JXYZ"}},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/account.token.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.token","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account.token.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.token","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account.token.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.token","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account.token.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.token","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account.token.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.token","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Describe the presented credential","tags":["Account"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"team","scopes":["account:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"team.id","type":"account.usage"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/account/usage":{"get":{"description":"Returns current Team-scoped public meter readings without spending quota.","operationId":"account.usage","parameters":[{"in":"query","name":"group","required":false,"schema":{"$ref":"#/components/schemas/account.usage.query.request/properties/group"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"meters":[{"blocked":false,"description":"Third-party research requests used by live market analysis.","group":"integrations","key":"dataforseo","label":"Research lookups","limit":100,"overCap":false,"resetsAt":"2026-09-01T00:00:00.000Z","unit":"requests","upgradeCopy":[{"gain":"Increase monthly research capacity.","tier":"pro"}],"used":8}],"plan":"pro"},"meta":{"requestId":"req_01JXYZ","total":1,"version":"1.0"}},"schema":{"$ref":"#/components/schemas/account.usage.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.usage","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account.usage.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.usage","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account.usage.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.usage","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account.usage.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.usage","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account.usage.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.usage","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account.usage.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"account.usage","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Read Team usage","tags":["Account"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"team","scopes":["account:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"team.id","type":"account.usage"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites":{"get":{"description":"Lists the stable public identity and current integration state of sites owned by the authenticated Team.","operationId":"sites.list","responses":{"200":{"content":{"application/json":{"example":{"data":{"page":{"hasMore":false,"limit":1,"offset":0,"total":1},"rows":[{"id":"site_01JXYZ","monitoring":{"analysisAvailable":true,"mode":"full_monitoring","status":"active"},"name":"Example","searchConsole":{"status":"connected"},"url":"https://example.com/"}],"sites":[{"id":"site_01JXYZ","monitoring":{"analysisAvailable":true,"mode":"full_monitoring","status":"active"},"name":"Example","searchConsole":{"status":"connected"},"url":"https://example.com/"}]},"meta":{"requestId":"req_01JXYZ","total":1,"version":"1.0"}},"schema":{"$ref":"#/components/schemas/sites.list.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.list.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.list.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.list.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.list.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.list.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"List accessible sites","tags":["Sites"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"team","scopes":["sites:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"team.id","type":"site.collection"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/actions":{"get":{"description":"Returns the ranked open work for one site with stable evidence and resolution handles. Advisory movement signals remain separate from actionable work.","operationId":"actions.list","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/actions.list.path.request/properties/siteId"}},{"example":10,"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/actions.list.query.request/properties/limit"}},{"example":0,"in":"query","name":"offset","required":false,"schema":{"$ref":"#/components/schemas/actions.list.query.request/properties/offset"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"actions":[],"listedAsOf":"2026-08-10T01:30:00.000Z","page":{"hasMore":false,"limit":0,"offset":0,"total":0},"rows":[]},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/actions.list.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.list.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.list.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.list.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.list.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.list.error"}}},"description":"Stable errors: conflict, stale_evidence.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict","stale_evidence"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.list.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.list.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.list.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"List next actions","tags":["Actions"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["actions:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.actions"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/actions/{actionId}":{"get":{"description":"Reads the versioned evidence reviewed before resolving an action. Evidence group cursors are bound to the artifact version.","operationId":"actions.show","parameters":[{"example":"action_01JXYZ","in":"path","name":"actionId","required":true,"schema":{"$ref":"#/components/schemas/actions.show.path.request/properties/actionId"}},{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/actions.show.path.request/properties/siteId"}},{"in":"query","name":"cursor","required":false,"schema":{"$ref":"#/components/schemas/actions.show.query.request/properties/cursor"}},{"in":"query","name":"groupId","required":false,"schema":{"$ref":"#/components/schemas/actions.show.query.request/properties/groupId"}},{"example":50,"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/actions.show.query.request/properties/limit"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"action":"Restore or redirect the page.","artifactVersion":"te2:action_01JXYZ:scope","asOf":"2026-08-10T01:30:00.000Z","assessmentId":"assessment_01JXYZ","checkBackAt":null,"diagnosis":"One page returns HTTP 404.","evidenceGroups":[],"findingType":"broken-pages","id":"action_01JXYZ","markedAt":null,"materiality":{"affectedSubjects":1,"internalReferrers":2},"status":"open","subject":{"kind":"page","label":"/pricing","url":"https://example.com/pricing"},"verifier":{"_tag":"finding-cleared","findingType":"broken-pages"},"workPrompt":null},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/actions.show.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.show","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.show.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.show","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.show.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.show","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.show.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.show","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.show.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.show","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.show.error"}}},"description":"Stable errors: conflict, stale_evidence.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.show","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict","stale_evidence"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.show.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.show","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.show.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.show","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.show.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.show","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Inspect an action","tags":["Actions"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["actions:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.actions"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/actions/{actionId}/dismiss":{"post":{"description":"Records an owner decision to dismiss an action. A note must explain why it is intentional or incorrect. Stale details and decided actions are rejected. Dismissal preserves observations and does not verify a fix. The action stays dismissed until a person restores it.","operationId":"actions.dismiss","parameters":[{"example":"action_01JXYZ","in":"path","name":"actionId","required":true,"schema":{"$ref":"#/components/schemas/actions.dismiss.path.request/properties/actionId"}},{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/actions.dismiss.path.request/properties/siteId"}}],"requestBody":{"content":{"application/json":{"example":{"artifactVersion":"te2:action_01JXYZ:scope","note":"Temporary retired sitemap. Review after the recovery gate."},"schema":{"$ref":"#/components/schemas/actions.dismiss.body.request"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"actionId":"action_01JXYZ","message":"Dismissed. Your note is saved. No fix was verified.","status":"dismissed"},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/actions.dismiss.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.dismiss","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.dismiss.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.dismiss","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.dismiss.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.dismiss","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.dismiss.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.dismiss","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.dismiss.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.dismiss","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.dismiss.error"}}},"description":"Stable errors: stale_evidence, conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.dismiss","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["stale_evidence","conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.dismiss.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.dismiss","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.dismiss.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.dismiss","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Dismiss an action","tags":["Actions"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"member","ownership":"site","scopes":["actions:write"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[{"idFrom":"params.siteId","type":"site.actions"}],"reads":[{"idFrom":"params.siteId","type":"site.actions"}]},"x-nuxtseo-semantics":{"kind":"mutation","readConsistency":null,"retry":"never","sideEffects":"state"}}},"/api/v1/sites/{siteId}/actions/{actionId}/resolve":{"post":{"description":"Claims a reviewed action against its exact evidence artifact and starts the authoritative verification path. This mutation is deliberately non-retryable because it writes claim clocks and events.","operationId":"actions.resolve","parameters":[{"example":"action_01JXYZ","in":"path","name":"actionId","required":true,"schema":{"$ref":"#/components/schemas/actions.resolve.path.request/properties/actionId"}},{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/actions.resolve.path.request/properties/siteId"}}],"requestBody":{"content":{"application/json":{"example":{"artifactVersion":"te2:action_01JXYZ:scope"},"schema":{"$ref":"#/components/schemas/actions.resolve.body.request"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"actionId":"action_01JXYZ","checkBackAt":"2026-08-10T01:40:00.000Z","markedAt":"2026-08-10T01:30:00.000Z","status":"open","verification":"recheck-queued"},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/actions.resolve.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.resolve","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.resolve.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.resolve","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.resolve.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.resolve","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.resolve.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.resolve","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.resolve.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.resolve","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.resolve.error"}}},"description":"Stable errors: stale_evidence, conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.resolve","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["stale_evidence","conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.resolve.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.resolve","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/actions.resolve.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"actions.resolve","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Resolve an action","tags":["Actions"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"member","ownership":"site","scopes":["actions:write"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[{"idFrom":"params.siteId","type":"site.actions"}],"reads":[{"idFrom":"params.siteId","type":"site.actions"}]},"x-nuxtseo-semantics":{"kind":"mutation","readConsistency":null,"retry":"never","sideEffects":"state"}}},"/api/v1/sites/{siteId}/analytics/{view}":{"get":{"description":"Reads one provider-normalized Web Analytics Site Signal for an owned Site.","operationId":"analytics.query","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/analytics.query.path.request/properties/siteId"}},{"example":"performance","in":"path","name":"view","required":true,"schema":{"$ref":"#/components/schemas/analytics.query.path.request/properties/view"}},{"in":"query","name":"compare","required":false,"schema":{"$ref":"#/components/schemas/analytics.query.query.request/properties/compare"}},{"in":"query","name":"comparePrior","required":false,"schema":{"$ref":"#/components/schemas/analytics.query.query.request/properties/comparePrior"}},{"in":"query","name":"dimension","required":false,"schema":{"$ref":"#/components/schemas/analytics.query.query.request/properties/dimension"}},{"in":"query","name":"filters","required":false,"schema":{"$ref":"#/components/schemas/analytics.query.query.request/properties/filters"}},{"in":"query","name":"fresh","required":false,"schema":{"$ref":"#/components/schemas/analytics.query.query.request/properties/fresh"}},{"in":"query","name":"hostScope","required":false,"schema":{"$ref":"#/components/schemas/analytics.query.query.request/properties/hostScope"}},{"in":"query","name":"performancePhase","required":false,"schema":{"$ref":"#/components/schemas/analytics.query.query.request/properties/performancePhase"}},{"example":"28d","in":"query","name":"period","required":false,"schema":{"$ref":"#/components/schemas/analytics.query.query.request/properties/period"}},{"in":"query","name":"stableData","required":false,"schema":{"$ref":"#/components/schemas/analytics.query.query.request/properties/stableData"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"bounceRate":{"absolute":-0.04,"current":0.38,"prior":0.42,"relative":-0.0952380952},"daily":[{"date":"2026-08-09","pageviews":18,"sessions":12,"users":9}],"dataFrom":"2026-08-09","engagementRate":{"absolute":0.04,"current":0.62,"prior":0.58,"relative":0.0689655172},"keyEvents":{"absolute":3,"current":8,"prior":5,"relative":0.6},"pageviews":{"absolute":30,"current":180,"prior":150,"relative":0.2},"phase":"full","priorDaily":[{"date":"2026-07-12","pageviews":15,"sessions":10,"users":8}],"provider":"ga4","sessions":{"absolute":20,"current":120,"prior":100,"relative":0.2},"users":{"absolute":10,"current":90,"prior":80,"relative":0.125}},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/analytics.query.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/analytics.query.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/analytics.query.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/analytics.query.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/analytics.query.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/analytics.query.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/analytics.query.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/analytics.query.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/analytics.query.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Query Web Analytics","tags":["Web Analytics"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["analytics:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":"growth","idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.analytics"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"replica-ok","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/audit/changes":{"get":{"description":"Compares published crawl generations and keeps no crawl, no baseline, no changes and observed changes as distinct states.","operationId":"audit.changes","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/audit.changes.path.request/properties/siteId"}},{"in":"query","name":"from","required":false,"schema":{"$ref":"#/components/schemas/audit.changes.query.request/properties/from"}},{"in":"query","name":"to","required":false,"schema":{"$ref":"#/components/schemas/audit.changes.query.request/properties/to"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"clicksAtRisk":null,"comparison":null,"generations":[{"buildId":"build_01JXYZ","completedAt":"2026-08-10T01:30:00.000Z","generation":4}],"pages":{"checkTotal":0,"groupTotal":0,"groups":[],"pages":0},"regressionHistory":[],"regressions":{"checkTotal":0,"groupTotal":0,"groups":[],"pages":0},"resolved":{"checkTotal":0,"groupTotal":0,"groups":[],"pages":0},"sampled":false,"state":"no-baseline","verdict":"","window":{"comparedTo":null,"observedAt":"2026-08-10T01:30:00.000Z"}},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/audit.changes.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.changes","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.changes.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.changes","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.changes.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.changes","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.changes.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.changes","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.changes.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.changes","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.changes.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.changes","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.changes.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.changes","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.changes.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.changes","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.changes.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.changes","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Read audit changes","tags":["Audit"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["audit:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.audit"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/audit/content-decay":{"get":{"description":"Lists crawled pages losing Search Console clicks against the prior equal-length window, including coverage state and aggregate loss.","operationId":"audit.content.decay","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/audit.content.decay.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"clicksLost":18,"connected":true,"page":{"hasMore":false,"limit":1,"offset":0,"total":1},"rows":[{"clicks":12,"clicksChangePct":-60,"clicksDelta":-18,"impressions":400,"path":"/guide","position":8.4,"prevClicks":30,"prevImpressions":620,"prevPosition":5.1,"url":"https://example.com/guide"}],"total":1,"truncated":false,"window":{"endDate":"2026-08-09","prevEndDate":"2026-07-12","prevStartDate":"2026-06-15","startDate":"2026-07-13"}},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/audit.content.decay.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.content.decay","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.content.decay.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.content.decay","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.content.decay.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.content.decay","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.content.decay.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.content.decay","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.content.decay.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.content.decay","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.content.decay.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.content.decay","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.content.decay.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.content.decay","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.content.decay.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.content.decay","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.content.decay.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.content.decay","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Read content decay","tags":["Audit"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["audit:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.audit"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/audit/duplicates":{"get":{"description":"Returns unresolved near-duplicate route families, member evidence, title distinctness and an optional traffic-backed keep candidate.","operationId":"audit.duplicate.clusters","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/audit.duplicate.clusters.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"clusters":[{"exactDuplicates":2,"keepPath":"/guides/alpha","members":[{"clicks":14,"impressions":200,"path":"/guides/alpha","url":"https://example.com/guides/alpha"}],"pathPattern":"/guides/*","size":3,"titles":{"distinct":1,"sampled":3,"verdict":"shared"}}],"connected":true,"page":{"hasMore":false,"limit":1,"offset":0,"total":1},"pagesAffected":3,"rows":[{"exactDuplicates":2,"keepPath":"/guides/alpha","members":[{"clicks":14,"impressions":200,"path":"/guides/alpha","url":"https://example.com/guides/alpha"}],"pathPattern":"/guides/*","size":3,"titles":{"distinct":1,"sampled":3,"verdict":"shared"}}],"total":1},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/audit.duplicate.clusters.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.duplicate.clusters","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.duplicate.clusters.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.duplicate.clusters","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.duplicate.clusters.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.duplicate.clusters","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.duplicate.clusters.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.duplicate.clusters","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.duplicate.clusters.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.duplicate.clusters","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.duplicate.clusters.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.duplicate.clusters","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.duplicate.clusters.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.duplicate.clusters","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.duplicate.clusters.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.duplicate.clusters","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.duplicate.clusters.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.duplicate.clusters","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Read duplicate clusters","tags":["Audit"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["audit:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.audit"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/audit/link-opportunities":{"get":{"description":"Returns source pages that mention a target query without linking to its ranking page, with crawl coverage disclosed.","operationId":"audit.link.opportunities","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/audit.link.opportunities.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"connected":true,"page":{"hasMore":false,"limit":1,"offset":0,"total":1},"pagesScanned":152,"pagesTotal":154,"rows":[{"clicks":18,"impressions":900,"phrase":"technical SEO guide","position":8.2,"snippet":"Read our technical SEO guide before launch.","sourcePath":"/handbook","sourceRank":72,"sourceUrl":"https://example.com/handbook","targetPath":"/guide","targetUrl":"https://example.com/guide"}],"textUnavailable":false,"total":1},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/audit.link.opportunities.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.opportunities","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.link.opportunities.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.opportunities","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.link.opportunities.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.opportunities","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.link.opportunities.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.opportunities","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.link.opportunities.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.opportunities","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.link.opportunities.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.opportunities","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.link.opportunities.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.opportunities","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.link.opportunities.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.opportunities","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.link.opportunities.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.opportunities","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Read link opportunities","tags":["Audit"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["audit:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.audit"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/audit/link-structure":{"get":{"description":"Summarizes internal link allocation across template slots, dead-end route families and generic editorial anchors.","operationId":"audit.link.structure","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/audit.link.structure.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"deadEndGroupTotal":1,"deadEndPageTotal":5,"deadEndScanTruncated":false,"deadEnds":[{"examples":["/archive/2024"],"label":"/archive/*","pages":5,"singleUrl":null,"topRank":18}],"editorialLinks":500,"editorialTargets":120,"genericAnchorLinks":9,"genericAnchorTotal":1,"genericAnchors":[{"anchor":"click here","exampleTargets":["/guide"],"links":9,"targets":4}],"gscConnected":true,"internalLinks":1400,"templateLinks":900,"templateSlotTotal":12,"templateSlots":[{"clicks":40,"locations":["nav","footer"],"path":"/pricing","share":0.13,"sourcePages":118,"templateLinks":120,"url":"https://example.com/pricing"}],"templateTargets":12},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/audit.link.structure.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.structure","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.link.structure.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.structure","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.link.structure.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.structure","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.link.structure.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.structure","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.link.structure.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.structure","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.link.structure.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.structure","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.link.structure.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.structure","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.link.structure.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.structure","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/audit.link.structure.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"audit.link.structure","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Read link structure","tags":["Audit"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["audit:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.audit"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/backlinks/anchors":{"get":{"description":"Returns the anchor text distribution of the Site inbound links, most linked first. Use it to find over-optimised or off-brand anchors. An anchor that is the generated sentence of a link spam network carries its id. Cached reads consume no units.","operationId":"backlinks.anchors","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/backlinks.anchors.path.request/properties/siteId"}},{"example":100,"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/backlinks.anchors.query.request/properties/limit"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"evidence":{"_tag":"cache","provider":"dataforseo","spend":{"key":"dataforseo","units":0}},"items":[{"anchor":"nuxt seo","backlinks":212,"firstSeen":"2026-01-04 11:02:11 +00:00","linkSpamNetworkId":null,"lostDate":null,"rank":480,"referringDomains":64,"referringMainDomains":60,"referringPages":190,"spamScore":3}],"limit":100,"target":"example.com","total":1},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/backlinks.anchors.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.anchors","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.anchors.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.anchors","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.anchors.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.anchors","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.anchors.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.anchors","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.anchors.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.anchors","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.anchors.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.anchors","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.anchors.error"}}},"description":"Stable errors: quota_exhausted, rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.anchors","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["quota_exhausted","rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.anchors.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.anchors","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.anchors.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.anchors","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"List Backlink anchors","tags":["Research"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["research:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":"growth","idempotency":{"_tag":"none"},"meter":{"charge":"live-only","key":"dataforseo","units":1},"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.research"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/backlinks/history":{"get":{"description":"Returns a monthly series of inbound link totals with the domains gained and lost in each month. It defaults to about twelve months; pass dateFrom for a longer window. Cached reads consume no units.","operationId":"backlinks.history","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/backlinks.history.path.request/properties/siteId"}},{"example":"2026-01-01","in":"query","name":"dateFrom","required":false,"schema":{"$ref":"#/components/schemas/backlinks.history.query.request/properties/dateFrom"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"evidence":{"_tag":"live","provider":"dataforseo","spend":{"key":"dataforseo","units":1}},"items":[{"backlinks":5120,"date":"2026-08-01","lostBacklinks":62,"lostReferringDomains":4,"newBacklinks":210,"newReferringDomains":18,"rank":214,"referringDomains":412,"referringMainDomains":388,"referringPages":4800}],"target":"example.com","total":1},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/backlinks.history.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.history","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.history.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.history","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.history.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.history","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.history.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.history","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.history.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.history","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.history.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.history","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.history.error"}}},"description":"Stable errors: quota_exhausted, rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.history","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["quota_exhausted","rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.history.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.history","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.history.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.history","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Get Backlinks history","tags":["Research"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["research:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":"growth","idempotency":{"_tag":"none"},"meter":{"charge":"live-only","key":"dataforseo","units":1},"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.research"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/backlinks/recoverable":{"get":{"description":"Returns retained inbound links whose destination is broken, ranked by referring domain authority. Each item carries the referring URL and the destination URL, so a redirect can be written without a crawl. It never starts provider work and does not consume metered units.","operationId":"backlinks.recoverable","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/backlinks.recoverable.path.request/properties/siteId"}},{"example":100,"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/backlinks.recoverable.query.request/properties/limit"}},{"example":0,"in":"query","name":"offset","required":false,"schema":{"$ref":"#/components/schemas/backlinks.recoverable.query.request/properties/offset"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"items":[{"anchor":"Read the full documentation","destinationStatus":404,"destinationUrl":"https://example.com/docs/utils","dofollow":true,"domainRank":529,"firstSeenAt":"2026-02-09T20:43:50.000Z","id":"bl_01JXYZ","lastSeenAt":"2026-07-17T04:40:07.000Z","pageRank":55,"referringDomain":"news.example","referringUrl":"https://news.example/posts/seo"}],"limit":100,"offset":0,"page":{"hasMore":false,"limit":100,"offset":0,"total":1},"rows":[{"anchor":"Read the full documentation","destinationStatus":404,"destinationUrl":"https://example.com/docs/utils","dofollow":true,"domainRank":529,"firstSeenAt":"2026-02-09T20:43:50.000Z","id":"bl_01JXYZ","lastSeenAt":"2026-07-17T04:40:07.000Z","pageRank":55,"referringDomain":"news.example","referringUrl":"https://news.example/posts/seo"}],"total":1},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/backlinks.recoverable.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.recoverable","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.recoverable.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.recoverable","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.recoverable.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.recoverable","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.recoverable.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.recoverable","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.recoverable.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.recoverable","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.recoverable.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.recoverable","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.recoverable.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.recoverable","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.recoverable.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.recoverable","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"List recoverable Backlinks","tags":["Research"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["research:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.1.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.research"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/backlinks/referring-domains":{"get":{"description":"Returns the domains that link to the Site, highest authority first, with spam score and broken-link counts. When a Web Analytics property is linked, returned domain rows can carry recorded 90-day referral sessions. Missing or omitted domain counts remain null. These counts do not attribute sessions to individual backlinks. A row that is a known member of a link spam network carries its id. Cached reads consume no units.","operationId":"backlinks.referring.domains","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/backlinks.referring.domains.path.request/properties/siteId"}},{"example":100,"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/backlinks.referring.domains.query.request/properties/limit"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"evidence":{"_tag":"cache","provider":"dataforseo","spend":{"key":"dataforseo","units":0}},"items":[{"backlinks":12,"brokenBacklinks":0,"brokenPages":0,"domain":"news.example","firstSeen":"2026-02-09 20:43:50 +00:00","linkSpamNetworkId":null,"lostDate":null,"rank":529,"referringPages":9,"sessions":143,"spamScore":2}],"limit":100,"target":"example.com","total":1},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/backlinks.referring.domains.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.referring.domains","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.referring.domains.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.referring.domains","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.referring.domains.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.referring.domains","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.referring.domains.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.referring.domains","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.referring.domains.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.referring.domains","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.referring.domains.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.referring.domains","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.referring.domains.error"}}},"description":"Stable errors: quota_exhausted, rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.referring.domains","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["quota_exhausted","rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.referring.domains.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.referring.domains","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.referring.domains.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.referring.domains","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"List referring domains","tags":["Research"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["research:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":"growth","idempotency":{"_tag":"none"},"meter":{"charge":"live-only","key":"dataforseo","units":1},"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.research"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/backlinks/summary":{"get":{"description":"Returns whole-domain inbound link totals for the Site: backlinks, referring domains, broken counts, and the domain rank. It also lists the link spam networks in the retained rows, and the totals without them. Cached reads consume no units.","operationId":"backlinks.summary","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/backlinks.summary.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"backlinks":5120,"brokenBacklinks":34,"brokenPages":7,"crawledPages":890,"evidence":{"_tag":"live","provider":"dataforseo","spend":{"key":"dataforseo","units":1}},"linkSpamNetworks":[{"anchor":"Premium SEO Link Building Experts Helping example.com Websites Rank Higher","backlinks":42,"firstSeen":"2026-08-02T00:00:00.000Z","id":"lsn_5d1c07a2","latestSeen":"2026-09-20T00:00:00.000Z","linkingPath":"/dir/organic-visibility-backlinks-86677","otherSites":201,"referringDomains":42,"targetPaths":["/"]}],"rank":214,"referringDomains":412,"referringDomainsNofollow":88,"referringIps":350,"referringMainDomains":388,"referringPages":4800,"referringSubnets":322,"spamScore":4,"target":"example.com","withoutLinkSpamNetworks":{"backlinks":5078,"referringDomains":370}},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/backlinks.summary.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.summary","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.summary.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.summary","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.summary.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.summary","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.summary.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.summary","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.summary.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.summary","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.summary.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.summary","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.summary.error"}}},"description":"Stable errors: quota_exhausted, rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.summary","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["quota_exhausted","rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.summary.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.summary","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/backlinks.summary.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"backlinks.summary","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Get Backlinks summary","tags":["Research"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["research:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":"growth","idempotency":{"_tag":"none"},"meter":{"charge":"live-only","key":"dataforseo","units":1},"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.research"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/mentions":{"get":{"description":"Returns retained pages and posts that name the Site without linking to it, newest first. Dismissed and lost Mentions are excluded. Pass includeFiltered=1 to keep the ones AI triage marked a false positive. It never starts provider work and does not consume metered units.","operationId":"mentions.list","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/mentions.list.path.request/properties/siteId"}},{"example":"0","in":"query","name":"includeFiltered","required":false,"schema":{"$ref":"#/components/schemas/mentions.list.query.request/properties/includeFiltered"}},{"example":100,"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/mentions.list.query.request/properties/limit"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"items":[{"author":"Ada Lovelace","authorHandle":"ada","domain":"news.ycombinator.com","domainRank":812,"engagement":142,"id":"mn_01JXYZ","publishedAt":"2026-08-01T09:12:00.000Z","sentiment":"positive","snippet":"We moved to example.com last week","source":"hackernews","title":"Show HN: a sitemap module","url":"https://news.ycombinator.com/item?id=1"}],"limit":100,"page":{"hasMore":false,"limit":100,"offset":0,"total":1},"rows":[{"author":"Ada Lovelace","authorHandle":"ada","domain":"news.ycombinator.com","domainRank":812,"engagement":142,"id":"mn_01JXYZ","publishedAt":"2026-08-01T09:12:00.000Z","sentiment":"positive","snippet":"We moved to example.com last week","source":"hackernews","title":"Show HN: a sitemap module","url":"https://news.ycombinator.com/item?id=1"}],"total":1},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/mentions.list.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"mentions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/mentions.list.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"mentions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/mentions.list.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"mentions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/mentions.list.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"mentions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/mentions.list.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"mentions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/mentions.list.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"mentions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/mentions.list.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"mentions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/mentions.list.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"mentions.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"List Mentions","tags":["Research"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["research:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.1.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.research"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/pages/inspect":{"get":{"description":"Returns the current stored crawl, indexing, Lighthouse, and tracked ranking observations for one Page on the Site origin.","operationId":"page.inspect","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/page.inspect.path.request/properties/siteId"}},{"example":"0","in":"query","name":"includeResolved","required":false,"schema":{"$ref":"#/components/schemas/page.inspect.query.request/properties/includeResolved"}},{"example":100,"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/page.inspect.query.request/properties/limit"}},{"example":0,"in":"query","name":"offset","required":false,"schema":{"$ref":"#/components/schemas/page.inspect.query.request/properties/offset"}},{"example":"https://example.com/guide","in":"query","name":"url","required":true,"schema":{"$ref":"#/components/schemas/page.inspect.query.request/properties/url"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"observations":{"coverage":"never-scanned","page":{"hasMore":false,"limit":100,"offset":0,"total":0},"pagination":{"hasMore":false,"limit":100,"offset":0},"rows":[],"total":0},"page":{"path":"/guide","url":"https://example.com/guide"},"performance":{"lighthouse":null},"search":{"keywords":[]}},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/page.inspect.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.inspect.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.inspect.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.inspect.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.inspect.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.inspect.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.inspect.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.inspect.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Inspect a Page","tags":["Pages"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["page:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.page"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/pages/issues":{"get":{"description":"Returns raw page observations for one action id, or for one source and issue pair. Pass actionId, or pass both source and issue; passing both selectors is rejected. When the selector matches nothing, availableKeys lists the pairs this Site does have. These rows are the mutable observation store and never represent canonical action membership. Read coverage before quoting a total: storage retains at most 500 rows per source, and one request returns at most 200 rows, 8 targets, and 5 element samples per row.","operationId":"page.issues","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/page.issues.path.request/properties/siteId"}},{"in":"query","name":"actionId","required":false,"schema":{"$ref":"#/components/schemas/page.issues.query.request/properties/actionId"}},{"example":"0","in":"query","name":"includeResolved","required":false,"schema":{"$ref":"#/components/schemas/page.issues.query.request/properties/includeResolved"}},{"example":"broken-internal-links","in":"query","name":"issue","required":false,"schema":{"$ref":"#/components/schemas/page.issues.query.request/properties/issue"}},{"example":100,"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/page.issues.query.request/properties/limit"}},{"example":0,"in":"query","name":"offset","required":false,"schema":{"$ref":"#/components/schemas/page.issues.query.request/properties/offset"}},{"in":"query","name":"pathPrefix","required":false,"schema":{"$ref":"#/components/schemas/page.issues.query.request/properties/pathPrefix"}},{"example":"crawl","in":"query","name":"source","required":false,"schema":{"$ref":"#/components/schemas/page.issues.query.request/properties/source"}},{"in":"query","name":"url","required":false,"schema":{"$ref":"#/components/schemas/page.issues.query.request/properties/url"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"asOf":null,"availableKeys":null,"coverage":{"perRowElementCap":5,"perRowTargetCap":8,"perSourceCap":500,"possiblyTruncated":false},"issues":[{"detail":{"description":null,"elements":[],"elementsTotal":null,"isNew":true,"label":"Broken internal link","observedAt":null,"observedContentType":"text/html","observedContentTypeCaptured":true,"redirectTarget":null,"resourceUrl":null,"statusCode":404,"targets":[{"status":200,"url":"https://example.com/docs/new"}],"title":null,"wcag":[]},"firstSeenAt":"2026-08-01T00:00:00.000Z","issueType":"broken-internal-links","lastSeenAt":"2026-09-01T00:00:00.000Z","linkedFrom":["https://example.com/docs/index"],"linkedFromTotal":1,"path":"/docs/old","pathWithQuery":null,"resolution":null,"severity":"error","source":"crawl","url":"https://example.com/docs/old"}],"limit":100,"message":null,"offset":0,"semantics":"raw-observations","total":1},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/page.issues.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.issues","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.issues.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.issues","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.issues.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.issues","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.issues.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.issues","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.issues.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.issues","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.issues.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.issues","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.issues.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.issues","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.issues.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.issues","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Browse raw Page observations","tags":["Pages"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["page:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.page"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/pages/scan":{"post":{"description":"Ensures one Page is monitored and starts its mobile and desktop Lighthouse scans. This mutation is deliberately non-retryable because it can create monitoring and scan records.","operationId":"page.scan","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/page.scan.path.request/properties/siteId"}}],"requestBody":{"content":{"application/json":{"example":{"url":"https://example.com/guide"},"schema":{"$ref":"#/components/schemas/page.scan.body.request"}}},"required":true},"responses":{"202":{"content":{"application/json":{"example":{"data":{"pageCreated":true,"pageId":"page_01JXYZ","scanId":"scan_mobile_01JXYZ","scans":[{"pageId":"page_01JXYZ","scanId":"scan_mobile_01JXYZ","strategy":"mobile","url":"https://example.com/guide"},{"pageId":"page_01JXYZ","scanId":"scan_desktop_01JXYZ","strategy":"desktop","url":"https://example.com/guide"}],"status":"running"},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/page.scan.202.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.scan","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.scan.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.scan","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.scan.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.scan","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.scan.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.scan","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.scan.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.scan","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.scan.error"}}},"description":"Stable errors: quota_exhausted, rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.scan","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["quota_exhausted","rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.scan.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.scan","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Scan a Page","tags":["Pages"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"member","ownership":"site","scopes":["page:write"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":"growth","idempotency":{"_tag":"none"},"meter":{"charge":"live-only","key":"lighthouse","units":2},"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[{"idFrom":"params.siteId","type":"site.page"}],"reads":[{"idFrom":"params.siteId","type":"site.page"}]},"x-nuxtseo-semantics":{"kind":"mutation","readConsistency":null,"retry":"never","sideEffects":"state"}}},"/api/v1/sites/{siteId}/performance":{"get":{"description":"Returns stored fleet-level Lighthouse health and the latest mobile and desktop evidence for monitored Pages. Use Page inspection for one Page.","operationId":"page.performance","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/page.performance.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"health":{"a11y":{"median":96,"worst":91},"bestPractices":{"median":92,"worst":86},"cls":{"median":0.08,"statusCounts":{"good":4,"ni":0,"poor":1},"worst":0.26},"lastScanAt":"2026-08-10T01:00:00.000Z","lcp":{"median":2200,"statusCounts":{"good":3,"ni":1,"poor":1},"worst":4100},"perf":{"best":94,"median":82,"worst":68},"scannedPageCount":5,"seo":{"median":98,"worst":94},"tbt":{"median":180,"statusCounts":{"good":3,"ni":1,"poor":1},"worst":650}},"homepage":null,"homepageDesktop":null,"routes":[],"routesDesktop":[]},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/page.performance.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Get Site Performance","tags":["Pages"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["page:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.page"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/performance/pages":{"get":{"description":"Returns the Pages this Site scans on a schedule, in display order, with the last time each one was scanned. Start a Scan for a new Page with the Page scan operation.","operationId":"page.performance.pages","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/page.performance.pages.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"pages":[{"enabled":true,"id":"lhp_01JXYZ","lastScanAt":"2026-08-10T01:00:00.000Z","path":"/","source":"homepage"}],"total":1},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/page.performance.pages.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.pages","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.pages.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.pages","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.pages.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.pages","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.pages.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.pages","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.pages.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.pages","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.pages.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.pages","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.pages.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.pages","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.pages.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.pages","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"List monitored Pages","tags":["Pages"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["page:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.page"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/performance/scans":{"get":{"description":"Returns retained Lighthouse Scans for the Site, newest first, with the scores and lab vitals each one recorded. A failed Scan carries its error. Use one Scan id with the Scan read for the failing checks behind a score.","operationId":"page.performance.scans","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/page.performance.scans.path.request/properties/siteId"}},{"example":25,"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/page.performance.scans.query.request/properties/limit"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"limit":25,"scans":[{"cls":0.08,"completedAt":"2026-08-10T01:00:00.000Z","error":null,"id":"scan_01JXYZ","lcp":2200,"scores":{"a11y":96,"bestPractices":92,"perf":82,"seo":98},"status":"complete","strategy":"mobile","tbt":180,"trigger":"scheduled","url":"https://example.com/"}],"total":1},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/page.performance.scans.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.scans","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.scans.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.scans","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.scans.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.scans","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.scans.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.scans","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.scans.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.scans","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.scans.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.scans","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.scans.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.scans","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.scans.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.scans","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"List Lighthouse Scans","tags":["Pages"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["page:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.page"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/performance/scans/{scanId}":{"get":{"description":"Returns one Scan with the evidence behind its scores: the wasteful assets, the repeat-visit cache policy, the third-party scripts, the LCP element, and every failing accessibility and best-practices check with the CSS selectors and DOM snippets that failed. Read coverage before quoting a total: elements and checks are both capped per Scan.","operationId":"page.performance.scan","parameters":[{"example":"scan_01JXYZ","in":"path","name":"scanId","required":true,"schema":{"$ref":"#/components/schemas/page.performance.scan.path.request/properties/scanId"}},{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/page.performance.scan.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"accessibility":[],"bestPractices":[],"cachePolicy":[],"cls":0.08,"completedAt":"2026-08-10T01:00:00.000Z","coverage":{"accessibilityChecksTotal":0,"bestPracticesChecksTotal":0,"perCheckElementCap":5,"perScanCheckCap":12,"possiblyTruncated":false},"fcp":1100,"id":"scan_01JXYZ","javascript":null,"lcp":2200,"lcpElement":{"elementType":"image","nodeLabel":"Hero","selector":"main > img.hero"},"performanceIssues":[],"scores":{"a11y":96,"bestPractices":92,"perf":82,"seo":98},"speedIndex":2400,"status":"complete","strategy":"mobile","tbt":180,"thirdParties":[],"ttfb":210,"url":"https://example.com/"},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/page.performance.scan.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.scan","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.scan.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.scan","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.scan.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.scan","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.scan.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.scan","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.scan.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.scan","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.scan.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.scan","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.scan.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.scan","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.performance.scan.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.performance.scan","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Get one Lighthouse Scan","tags":["Pages"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["page:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.page"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/research":{"get":{"description":"Returns retained competitor and keyword-gap evidence already collected for the Site. It never starts provider work and does not consume metered units.","operationId":"research.overview","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/research.overview.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"competitors":[],"evidence":{"_tag":"stored","collectedAt":null,"provider":"dataforseo"},"subject":null,"summary":{"competitorCount":0,"quickWins":0,"totalSharedKeywords":0,"totalTrafficValue":0}},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/research.overview.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.overview","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.overview.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.overview","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.overview.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.overview","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.overview.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.overview","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.overview.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.overview","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.overview.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.overview","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.overview.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.overview","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.overview.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.overview","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Get stored Site Research","tags":["Research"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["research:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.research"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/research/competitors":{"get":{"description":"Returns competitors you added to this Site. Suggested competitors stay excluded. Reads start no provider work.","operationId":"research.competitors.list","parameters":[{"example":"s_example","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/research.competitors.list.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"competitors":[{"domain":"rival.com","id":"c_example"}]},"meta":{"requestId":"req_example","version":"1.0"}},"schema":{"$ref":"#/components/schemas/research.competitors.list.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.list.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.list.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.list.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.list.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.list.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.list.error"}}},"description":"Stable errors: quota_exhausted, rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["quota_exhausted","rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.list.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.list.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"List tracked competitors","tags":["Research"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["research:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.research"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}},"post":{"description":"Queues analysis for one public domain you name. The existing Site and Team limits apply. Duplicate domains start no work.","operationId":"research.competitors.add","parameters":[{"example":"s_example","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/research.competitors.add.path.request/properties/siteId"}}],"requestBody":{"content":{"application/json":{"example":{"domain":"rival.com"},"schema":{"$ref":"#/components/schemas/research.competitors.add.body.request"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"competitor":{"domain":"rival.com","id":"c_example"},"status":"queued"},"meta":{"requestId":"req_example","version":"1.0"}},"schema":{"$ref":"#/components/schemas/research.competitors.add.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.add","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.add.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.add","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.add.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.add","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.add.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.add","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.add.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.add","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.add.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.add","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.add.error"}}},"description":"Stable errors: quota_exhausted, rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.add","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["quota_exhausted","rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.add.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.add","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.add.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.add","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Add one tracked competitor","tags":["Research"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"member","ownership":"site","scopes":["research:write"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":"growth","idempotency":{"_tag":"none"},"meter":{"charge":"always","key":"dataforseo","units":1},"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[{"idFrom":"params.siteId","type":"site.research"}],"reads":[{"idFrom":"params.siteId","type":"site.research"}]},"x-nuxtseo-semantics":{"kind":"mutation","readConsistency":null,"retry":"never","sideEffects":"state"}}},"/api/v1/sites/{siteId}/research/competitors/{competitorId}":{"delete":{"description":"Removes a competitor from this Site using its listed id. Removal starts no provider work.","operationId":"research.competitors.remove","parameters":[{"example":"c_example","in":"path","name":"competitorId","required":true,"schema":{"$ref":"#/components/schemas/research.competitors.remove.path.request/properties/competitorId"}},{"example":"s_example","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/research.competitors.remove.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"competitorId":"c_example","deleted":true},"meta":{"requestId":"req_example","version":"1.0"}},"schema":{"$ref":"#/components/schemas/research.competitors.remove.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.remove","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.remove.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.remove","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.remove.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.remove","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.remove.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.remove","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.remove.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.remove","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.remove.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.remove","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.remove.error"}}},"description":"Stable errors: quota_exhausted, rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.remove","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["quota_exhausted","rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.remove.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.remove","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.competitors.remove.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.competitors.remove","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Remove one tracked competitor","tags":["Research"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"member","ownership":"site","scopes":["research:write"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[{"idFrom":"params.siteId","type":"site.research"}],"reads":[{"idFrom":"params.siteId","type":"site.research"}]},"x-nuxtseo-semantics":{"kind":"mutation","readConsistency":null,"retry":"never","sideEffects":"state"}}},"/api/v1/sites/{siteId}/research/domain-availability":{"get":{"description":"Returns the registration status of up to ten domains, with the registrar and expiry when the domain is taken. Repeat the domains parameter for each domain. Cached reads consume no units.","operationId":"research.domain.availability","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/research.domain.availability.path.request/properties/siteId"}},{"example":["example.com","example.dev"],"in":"query","name":"domains","required":true,"schema":{"$ref":"#/components/schemas/research.domain.availability.query.request/properties/domains"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"evidence":{"_tag":"live","provider":"dataforseo","spend":{"key":"dataforseo","units":1}},"message":null,"results":[{"available":false,"created":"1995-08-14","domain":"example.com","expiration":"2027-04-01","note":null,"registrar":"Example Registrar"}]},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/research.domain.availability.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.availability","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.domain.availability.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.availability","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.domain.availability.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.availability","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.domain.availability.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.availability","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.domain.availability.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.availability","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.domain.availability.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.availability","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.domain.availability.error"}}},"description":"Stable errors: quota_exhausted, rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.availability","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["quota_exhausted","rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.domain.availability.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.availability","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.domain.availability.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.availability","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Check domain availability","tags":["Research"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["research:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":"growth","idempotency":{"_tag":"none"},"meter":{"charge":"live-only","key":"dataforseo","units":1},"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.research"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/research/domain-traffic":{"get":{"description":"Returns an estimate of one domain organic search traffic, its trend, its top pages and countries. The domain does not have to be one of your Sites, so this reads a competitor as readily as your own. Cached reads consume no units.","operationId":"research.domain.traffic","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/research.domain.traffic.path.request/properties/siteId"}},{"example":"nuxtseo.com","in":"query","name":"domain","required":true,"schema":{"$ref":"#/components/schemas/research.domain.traffic.query.request/properties/domain"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"changePercent":12.4,"domain":"nuxtseo.com","evidence":{"_tag":"live","provider":"dataforseo","spend":{"key":"dataforseo","units":1}},"keywordFootprint":62,"message":null,"monthlyTraffic":48200,"topCountries":[{"country":"US","percent":41.2}],"topPages":[{"keywords":220,"path":"/docs/sitemap","traffic":4100}],"trafficValue":31200,"trend":"growing"},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/research.domain.traffic.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.traffic","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.domain.traffic.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.traffic","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.domain.traffic.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.traffic","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.domain.traffic.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.traffic","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.domain.traffic.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.traffic","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.domain.traffic.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.traffic","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.domain.traffic.error"}}},"description":"Stable errors: quota_exhausted, rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.traffic","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["quota_exhausted","rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.domain.traffic.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.traffic","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.domain.traffic.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.domain.traffic","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Estimate domain traffic","tags":["Research"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["research:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":"growth","idempotency":{"_tag":"none"},"meter":{"charge":"live-only","key":"dataforseo","units":1},"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.research"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/research/keywords":{"get":{"description":"Returns exact metrics for each requested topic alongside filtered keyword ideas. Missing provider data stays explicit. Local guidance and cached reads consume no units.","operationId":"research.keywords","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/research.keywords.path.request/properties/siteId"}},{"in":"query","name":"includeRelated","required":false,"schema":{"$ref":"#/components/schemas/research.keywords.query.request/properties/includeRelated"}},{"in":"query","name":"intent","required":false,"schema":{"$ref":"#/components/schemas/research.keywords.query.request/properties/intent"}},{"example":20,"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/research.keywords.query.request/properties/limit"}},{"in":"query","name":"locationCode","required":false,"schema":{"$ref":"#/components/schemas/research.keywords.query.request/properties/locationCode"}},{"in":"query","name":"maxDifficulty","required":false,"schema":{"$ref":"#/components/schemas/research.keywords.query.request/properties/maxDifficulty"}},{"in":"query","name":"maxVolume","required":false,"schema":{"$ref":"#/components/schemas/research.keywords.query.request/properties/maxVolume"}},{"in":"query","name":"minDifficulty","required":false,"schema":{"$ref":"#/components/schemas/research.keywords.query.request/properties/minDifficulty"}},{"in":"query","name":"minVolume","required":false,"schema":{"$ref":"#/components/schemas/research.keywords.query.request/properties/minVolume"}},{"example":"nuxt seo","in":"query","name":"topic","required":true,"schema":{"$ref":"#/components/schemas/research.keywords.query.request/properties/topic"}},{"in":"query","name":"verbose","required":false,"schema":{"$ref":"#/components/schemas/research.keywords.query.request/properties/verbose"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"evidence":{"_tag":"live","provider":"dataforseo","spend":{"key":"dataforseo","units":1}},"filters":{"maxDifficulty":60,"maxVolume":10000,"minDifficulty":0,"minVolume":10},"keywords":[],"topic":"nuxt seo","topicMetrics":[{"_tag":"no-data","topic":"nuxt seo"}],"totalFound":0},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/research.keywords.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.keywords","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.keywords.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.keywords","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.keywords.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.keywords","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.keywords.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.keywords","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.keywords.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.keywords","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.keywords.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.keywords","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.keywords.error"}}},"description":"Stable errors: quota_exhausted, rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.keywords","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["quota_exhausted","rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.keywords.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.keywords","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.keywords.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.keywords","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Research keyword ideas","tags":["Research"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["research:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":"growth","idempotency":{"_tag":"none"},"meter":{"charge":"live-only","key":"dataforseo","units":1},"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.research"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/research/rankings":{"get":{"description":"Returns current keyword rankings and domain metrics. Cached reads consume no units.","operationId":"research.rankings","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/research.rankings.path.request/properties/siteId"}},{"example":"nuxtseo.com","in":"query","name":"domain","required":true,"schema":{"$ref":"#/components/schemas/research.rankings.query.request/properties/domain"}},{"example":20,"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/research.rankings.query.request/properties/limit"}},{"in":"query","name":"locationCode","required":false,"schema":{"$ref":"#/components/schemas/research.rankings.query.request/properties/locationCode"}},{"in":"query","name":"maxPosition","required":false,"schema":{"$ref":"#/components/schemas/research.rankings.query.request/properties/maxPosition"}},{"in":"query","name":"minPosition","required":false,"schema":{"$ref":"#/components/schemas/research.rankings.query.request/properties/minPosition"}},{"in":"query","name":"order","required":false,"schema":{"$ref":"#/components/schemas/research.rankings.query.request/properties/order"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"cached":false,"domain":"nuxtseo.com","keywords":[],"metrics":null,"positionRange":{"max":20,"min":1},"totalFound":0},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/research.rankings.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.rankings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.rankings.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.rankings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.rankings.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.rankings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.rankings.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.rankings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.rankings.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.rankings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.rankings.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.rankings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.rankings.error"}}},"description":"Stable errors: quota_exhausted, rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.rankings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["quota_exhausted","rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.rankings.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.rankings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.rankings.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.rankings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Research domain rankings","tags":["Research"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["research:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":"growth","idempotency":{"_tag":"none"},"meter":{"charge":"live-only","key":"dataforseo","units":1},"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.research"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/research/serp":{"get":{"description":"Returns one dated SERP snapshot and its result features. Cached reads consume no units.","operationId":"research.serp","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/research.serp.path.request/properties/siteId"}},{"example":10,"in":"query","name":"depth","required":false,"schema":{"$ref":"#/components/schemas/research.serp.query.request/properties/depth"}},{"example":"nuxt seo","in":"query","name":"keyword","required":true,"schema":{"$ref":"#/components/schemas/research.serp.query.request/properties/keyword"}},{"in":"query","name":"locationCode","required":false,"schema":{"$ref":"#/components/schemas/research.serp.query.request/properties/locationCode"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"cached":false,"depth":10,"fetchedAt":"2026-08-20T00:00:00.000Z","hasAiOverview":false,"hasFeaturedSnippet":false,"hasLocalPack":false,"hasPeopleAlsoAsk":false,"keyword":"nuxt seo","results":[],"serpFeatures":[]},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/research.serp.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.serp","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.serp.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.serp","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.serp.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.serp","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.serp.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.serp","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.serp.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.serp","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.serp.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.serp","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.serp.error"}}},"description":"Stable errors: quota_exhausted, rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.serp","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["quota_exhausted","rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.serp.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.serp","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/research.serp.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"research.serp","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Analyze a Google SERP","tags":["Research"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["research:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":"growth","idempotency":{"_tag":"none"},"meter":{"charge":"live-only","key":"dataforseo","units":1},"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.research"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/search/analytics":{"get":{"description":"Returns a bounded Search Console breakdown, trend, detail, or opportunity analysis for one NuxtSEO Site.","operationId":"sites.search.analytics.query","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.path.request/properties/siteId"}},{"in":"query","name":"brandTerms","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/brandTerms"}},{"in":"query","name":"filter","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/filter"}},{"in":"query","name":"keyword","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/keyword"}},{"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/limit"}},{"in":"query","name":"maxClicks","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/maxClicks"}},{"in":"query","name":"maxCtr","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/maxCtr"}},{"in":"query","name":"maxImpressions","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/maxImpressions"}},{"in":"query","name":"maxPosition","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/maxPosition"}},{"in":"query","name":"minClicks","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/minClicks"}},{"in":"query","name":"minImpressions","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/minImpressions"}},{"in":"query","name":"minPosition","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/minPosition"}},{"in":"query","name":"page","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/page"}},{"in":"query","name":"pageUrl","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/pageUrl"}},{"in":"query","name":"period","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/period"}},{"in":"query","name":"preset","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/preset"}},{"in":"query","name":"search","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/search"}},{"in":"query","name":"sort","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/sort"}},{"in":"query","name":"sortDir","required":false,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/sortDir"}},{"example":"keywords","in":"query","name":"view","required":true,"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.query.request/properties/view"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"page":{"hasMore":false,"limit":25,"offset":0,"total":1},"period":"28d","representedTotals":{"clicks":12,"impressions":100},"representedTotalsScope":"returned rows","rows":[{"change":2,"clicks":12,"ctr":0.12,"impressions":100,"keyword":"nuxt seo","pos":4,"topPage":"https://example.com/docs"}],"site":"https://example.com","total":1,"totals":{"clicks":12,"ctr":0.12,"impressions":100,"position":4},"totalsScope":"full upstream query population","view":"keywords"},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.error"}}},"description":"Stable errors: stale_evidence, conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["stale_evidence","conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.analytics.query.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.analytics.query","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Query Site search analytics","tags":["Sites","Search"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["sites:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.analytics"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"replica-ok","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/search/indexing/cohorts":{"get":{"description":"Returns the not-indexed rate per route family, joined from the Site crawl to Google per-URL index state, so an indexing failure that clusters in one template surfaces as one finding instead of many page-level ones. Read it before listing individual not-indexed URLs. `established` holds only families proven worse than the rest of the Site after a Bonferroni correction; `ranked` orders every family by raw rate with no test applied and is leads only. `analysed: false` means there is no completed crawl or no index state to join, which is not the same as healthy indexing.","operationId":"sites.search.indexing.cohorts.read","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/sites.search.indexing.cohorts.read.path.request/properties/siteId"}},{"example":12,"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/sites.search.indexing.cohorts.read.query.request/properties/limit"}},{"example":5,"in":"query","name":"minSectionPages","required":false,"schema":{"$ref":"#/components/schemas/sites.search.indexing.cohorts.read.query.request/properties/minSectionPages"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"analysed":true,"asOf":"2026-09-01T00:00:00.000Z","baseline":{"notIndexed":180,"notIndexedPercent":15,"pages":1200},"coverage":{"analysed":1200,"excludedFragments":2,"notIndexedNotInCrawl":40},"established":[{"alreadyCountedAbove":0,"confidenceIntervalLower":31.2,"confidenceIntervalUpper":40.4,"dimension":"depth-1","family":"/docs","notIndexed":150,"notIndexedPercent":35.7,"pages":420,"pathPrefix":"/docs","restOfSitePages":780,"restOfSitePercent":3.8}],"establishedNote":null,"familiesTested":9,"message":null,"method":"Wilson score interval per family against its own complement, Bonferroni-corrected across 9 tested families (critical value z=2.77).","minSectionPages":5,"ranked":[{"belowMinimumSample":false,"family":"/docs","notIndexed":150,"notIndexedPercent":35.7,"pages":420,"statisticallyEstablished":true}],"rankedTotal":9,"reason":null},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/sites.search.indexing.cohorts.read.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.cohorts.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.cohorts.read.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.cohorts.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.cohorts.read.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.cohorts.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.cohorts.read.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.cohorts.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.cohorts.read.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.cohorts.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.cohorts.read.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.cohorts.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.cohorts.read.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.cohorts.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.cohorts.read.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.cohorts.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Read indexing by route family","tags":["Search Console"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["sites:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.collection"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/search/indexing/diagnostics":{"get":{"description":"Returns indexed coverage and issue counts, or one filtered page of affected URLs, from retained Search Console evidence.","operationId":"sites.search.indexing.diagnostics.read","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/sites.search.indexing.diagnostics.read.path.request/properties/siteId"}},{"in":"query","name":"issue","required":false,"schema":{"$ref":"#/components/schemas/sites.search.indexing.diagnostics.read.query.request/properties/issue"}},{"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/sites.search.indexing.diagnostics.read.query.request/properties/limit"}},{"in":"query","name":"offset","required":false,"schema":{"$ref":"#/components/schemas/sites.search.indexing.diagnostics.read.query.request/properties/offset"}},{"in":"query","name":"status","required":false,"schema":{"$ref":"#/components/schemas/sites.search.indexing.diagnostics.read.query.request/properties/status"}},{"example":"summary","in":"query","name":"view","required":false,"schema":{"$ref":"#/components/schemas/sites.search.indexing.diagnostics.read.query.request/properties/view"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"asOf":"2026-08-10T00:00:00.000Z","asOfSource":"newest-check","indexed":92,"issues":[],"oldestCheckAt":"2026-07-01T00:00:00.000Z","totalUrls":100,"verdictFreshness":{"olderThan30dPercent":60.5,"olderThan7dPercent":87.4},"view":"summary"},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/sites.search.indexing.diagnostics.read.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.diagnostics.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.diagnostics.read.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.diagnostics.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.diagnostics.read.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.diagnostics.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.diagnostics.read.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.diagnostics.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.diagnostics.read.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.diagnostics.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.diagnostics.read.error"}}},"description":"Stable errors: stale_evidence, conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.diagnostics.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["stale_evidence","conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.diagnostics.read.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.diagnostics.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.diagnostics.read.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.diagnostics.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.diagnostics.read.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.diagnostics.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Diagnose Site indexing","tags":["Sites","Search","Indexing"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["sites:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.page"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"replica-ok","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/search/indexing/history":{"get":{"description":"Returns retained indexing changes as observation windows, preserving uncertainty and candidate deploy correlation.","operationId":"sites.search.indexing.history.read","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/sites.search.indexing.history.read.path.request/properties/siteId"}},{"example":90,"in":"query","name":"days","required":false,"schema":{"$ref":"#/components/schemas/sites.search.indexing.history.read.query.request/properties/days"}},{"example":"coverageState","in":"query","name":"field","required":false,"schema":{"$ref":"#/components/schemas/sites.search.indexing.history.read.query.request/properties/field"}},{"in":"query","name":"url","required":false,"schema":{"$ref":"#/components/schemas/sites.search.indexing.history.read.query.request/properties/url"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"changes":[],"complete":true,"endDate":"2026-08-10","resolvedUrl":null,"scope":{"_tag":"site","field":"coverageState"},"startDate":"2026-05-12","unchanged":null},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/sites.search.indexing.history.read.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.history.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.history.read.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.history.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.history.read.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.history.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.history.read.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.history.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.history.read.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.history.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.history.read.error"}}},"description":"Stable errors: stale_evidence, conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.history.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["stale_evidence","conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.history.read.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.history.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.history.read.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.history.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.history.read.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.history.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Read Site indexing history","tags":["Sites","Search","Indexing"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["sites:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.page"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"replica-ok","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/search/indexing/inspection":{"get":{"description":"Returns the latest retained URL Inspection result, dated local evidence, or an explicit no-data state for one Site URL.","operationId":"sites.search.indexing.inspection.read","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.read.path.request/properties/siteId"}},{"example":"/docs","in":"query","name":"url","required":true,"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.read.query.request/properties/url"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"_tag":"no-inspection-data","requestedUrl":"https://example.com/docs"},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.read.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.read.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.read.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.read.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.read.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.read.error"}}},"description":"Stable errors: stale_evidence, conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["stale_evidence","conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.read.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.read.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.read.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Inspect one indexed URL","tags":["Sites","Search","Indexing"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["sites:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.page"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"replica-ok","retry":"idempotent","sideEffects":"none"}},"post":{"description":"Requests Google URL Inspection through the Site connection. Uses inspection quota and retains the result. Errors and skipped URLs remain explicit.","operationId":"sites.search.indexing.inspection.refresh","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.refresh.path.request/properties/siteId"}}],"requestBody":{"content":{"application/json":{"example":{"url":"/docs"},"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.refresh.body.request"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"checkedAt":"2026-10-05T00:00:00.000Z","errors":[{"error":"Inspection failed","url":"https://example.com/docs"}],"rateLimit":{"limit":10,"remaining":9,"reserved":1},"results":[],"siteId":"site_01JXYZ","skipped":[]},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.refresh.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.refresh","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.refresh.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.refresh","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.refresh.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.refresh","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.refresh.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.refresh","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.refresh.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.refresh","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.refresh.error"}}},"description":"Stable errors: stale_evidence, conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.refresh","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["stale_evidence","conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.refresh.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.refresh","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.refresh.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.refresh","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.inspection.refresh.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.inspection.refresh","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Request a fresh URL Inspection","tags":["Sites","Search","Indexing"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"member","ownership":"site","scopes":["sites:write"]},"x-nuxtseo-lifecycle":{"introduced":"1.3.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[{"idFrom":"params.siteId","type":"site.page"}],"reads":[{"idFrom":"params.siteId","type":"site.page"}]},"x-nuxtseo-semantics":{"kind":"mutation","readConsistency":null,"retry":"never","sideEffects":"state"}}},"/api/v1/sites/{siteId}/search/indexing/watches":{"get":{"description":"Returns retained Watched URLs, scheduled due times, and Checkpoints. An empty list means no retained Checkpoint for this watch.","operationId":"sites.search.indexing.watches.list","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/sites.search.indexing.watches.list.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"cadenceDays":7,"limit":20,"meta":{"siteUrl":"https://example.com"},"watched":[]},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/sites.search.indexing.watches.list.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.watches.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.watches.list.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.watches.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.watches.list.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.watches.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.watches.list.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.watches.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.watches.list.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.watches.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.watches.list.error"}}},"description":"Stable errors: stale_evidence, conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.watches.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["stale_evidence","conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.watches.list.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.watches.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.watches.list.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.watches.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.indexing.watches.list.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.indexing.watches.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"List Site Watched URLs","tags":["Sites","Search","Indexing"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["sites:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.page"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"replica-ok","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/search/status":{"get":{"description":"Returns the stored Search Console connection state. It never waits for Google or another provider.","operationId":"sites.search.status.read","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/sites.search.status.read.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"_tag":"Connected","site":"https://example.com"},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/sites.search.status.read.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.status.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.status.read.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.status.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.status.read.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.status.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.status.read.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.status.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.status.read.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.status.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.status.read.error"}}},"description":"Stable errors: stale_evidence, conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.status.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["stale_evidence","conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.status.read.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.status.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.status.read.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.status.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.search.status.read.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.search.status.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Read Site Search Console connection","tags":["Sites","Search"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["sites:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.identity"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"replica-ok","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/sitemaps":{"get":{"description":"Returns the Search Console sitemap snapshot and its upstream generation for a NuxtSEO Site.","operationId":"sites.sitemaps.list","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/sites.sitemaps.list.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"generation":null,"history":[],"meta":{"gscPropertyUrl":"sc-domain:example.com","siteUrl":"sc-domain:example.com","sitemapScope":{"duplicateCount":0,"excludedCount":0},"syncStatus":"synced"},"perSitemapHistory":{},"sitemaps":[]},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/sites.sitemaps.list.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.list.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.list.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.list.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.list.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.list.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.list.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.list.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.list.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"List Site sitemaps","tags":["Sites","Sitemaps"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["sites:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.sitemaps"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/sitemaps/actions":{"post":{"description":"Submits or deletes one sitemap through the stored Search Console credential bound to the NuxtSEO Site.","operationId":"sites.sitemaps.action.create","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/sites.sitemaps.action.create.path.request/properties/siteId"}}],"requestBody":{"content":{"application/json":{"example":{"action":"submit","sitemapUrl":"https://example.com/sitemap.xml"},"schema":{"$ref":"#/components/schemas/sites.sitemaps.action.create.body.request"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"action":"submitted","sitemapCount":1,"sitemapUrl":"https://example.com/sitemap.xml","success":true},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/sites.sitemaps.action.create.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.action.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.action.create.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.action.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.action.create.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.action.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.action.create.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.action.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.action.create.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.action.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.action.create.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.action.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.action.create.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.action.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.action.create.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.action.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.action.create.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.action.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Submit or delete a Site sitemap","tags":["Sites","Sitemaps"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"member","ownership":"site","scopes":["sites:write"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[{"idFrom":"params.siteId","type":"site.sitemaps"}],"reads":[{"idFrom":"params.siteId","type":"site.sitemaps"}]},"x-nuxtseo-semantics":{"kind":"mutation","readConsistency":null,"retry":"never","sideEffects":"state"}}},"/api/v1/sites/{siteId}/sitemaps/inspect":{"get":{"description":"Reads exact Sitemap listing evidence from Google live or Bing stored data. Every successful read carries its capture time.","operationId":"sites.sitemaps.inspect","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/sites.sitemaps.inspect.path.request/properties/siteId"}},{"example":"google","in":"query","name":"searchEngine","required":true,"schema":{"$ref":"#/components/schemas/sites.sitemaps.inspect.query.request/properties/searchEngine"}},{"example":"https://example.com/sitemap.xml","in":"query","name":"url","required":true,"schema":{"$ref":"#/components/schemas/sites.sitemaps.inspect.query.request/properties/url"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"capture":{"_tag":"captured","capturedAt":"2026-10-08T00:00:00Z","source":"live"},"searchEngine":"google","sitemapUrl":"https://example.com/sitemap.xml","state":{"_tag":"missing"}},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/sites.sitemaps.inspect.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.inspect.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.inspect.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.inspect.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.inspect.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.inspect.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.inspect.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.inspect.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.inspect.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.inspect","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Inspect one Site Sitemap","tags":["Sites","Sitemaps"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["sites:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.sitemaps"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/sitemaps/submission":{"get":{"description":"Returns site-level Google Sitemap submission readiness. It does not prove submission of an arbitrary Sitemap URL.","operationId":"sites.sitemaps.submission.read","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/sites.sitemaps.submission.read.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"callerCanAct":false,"gscPropertyUrl":"sc-domain:example.com","searchEngine":"google","state":{"_tag":"not-checked"}},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/sites.sitemaps.submission.read.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.submission.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.submission.read.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.submission.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.submission.read.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.submission.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.submission.read.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.submission.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.submission.read.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.submission.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.submission.read.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.submission.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.submission.read.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.submission.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.submission.read.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.submission.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.submission.read.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.submission.read","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Read Site Sitemap submission","tags":["Sites","Sitemaps"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["sites:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.sitemaps"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/sitemaps/urls":{"get":{"description":"Returns one cursor page of sitemap membership pinned to an exact upstream generation.","operationId":"sites.sitemaps.urls.list","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/sites.sitemaps.urls.list.path.request/properties/siteId"}},{"in":"query","name":"cursor","required":false,"schema":{"$ref":"#/components/schemas/sites.sitemaps.urls.list.query.request/properties/cursor"}},{"in":"query","name":"feedpath","required":false,"schema":{"$ref":"#/components/schemas/sites.sitemaps.urls.list.query.request/properties/feedpath"}},{"in":"query","name":"generationId","required":false,"schema":{"$ref":"#/components/schemas/sites.sitemaps.urls.list.query.request/properties/generationId"}},{"example":500,"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/sites.sitemaps.urls.list.query.request/properties/limit"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"generation":{"completeness":{"_tag":"complete"},"id":"generation_01JXYZ","legacyImport":{"_tag":"none"},"membershipHistoryAvailableFrom":1786320000000,"observedAt":1786320000000,"publishedAt":1786320000100},"items":[],"page":{"limit":500,"nextCursor":null}},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/sites.sitemaps.urls.list.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.urls.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.urls.list.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.urls.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.urls.list.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.urls.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.urls.list.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.urls.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.urls.list.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.urls.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.urls.list.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.urls.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.urls.list.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.urls.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.urls.list.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.urls.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.sitemaps.urls.list.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.sitemaps.urls.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"List Site sitemap URLs","tags":["Sites","Sitemaps"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["sites:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.sitemaps"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/status":{"get":{"description":"Returns the current assessment for one Site: the verdict, the single ranked Next Action, open and verified counts, the pipeline steps that degraded on the last run, recent changes, and recent Receipts. `available: false` means the first assessment has not run yet. Start here before listing Actions.","operationId":"sites.status","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/sites.status.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"assessment":{"aggregate":{"assessedAt":"2026-09-04T02:00:00.000Z","headlineAxis":"health","healthStage":"at-risk","reachStage":"growing","recommendation":"Fix the canonical tag on /docs pages.","summary":"Indexing is slipping on the docs template."},"assessedAt":"2026-09-04T02:00:00.000Z","headlineAxis":"health","healthStage":"at-risk","reachStage":"growing","recommendation":"Fix the canonical tag on /docs pages.","scope":"site","summary":"Indexing is slipping on the docs template."},"available":true,"changes":[{"deltaPct":18.5,"direction":"up","kind":"indexing","label":"Not-indexed pages rose to 42","meaning":"Google is declining more of this Site than last month.","source":"gsc","value":"42 pages","window":"28d"}],"counts":{"inProgress":2,"landed":0,"noEffect":0,"open":5,"shipped":3},"dataQuality":{"reason":null,"status":"complete","unavailableProofs":[]},"degradedSteps":[],"message":null,"nextAction":{"actionId":"act_01JXYZ","citedProofKey":"gsc.indexState","detail":"Repair the canonical tag on 42 /docs pages","dimension":"indexing","focus":"protect","impact":1840,"kind":"action","label":"Fix indexing","urgent":true},"openCount":7,"receipts":[{"actionId":"act_01JXYA","note":null,"observedAt":"2026-08-30","outcome":"verified","title":"Fixed: broken internal links in /guides"}],"site":"https://example.com","verifiedCount":3},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/sites.status.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.status","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.status.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.status","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.status.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.status","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.status.error"}}},"description":"Stable errors: forbidden, entitlement_required.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.status","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden","entitlement_required"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.status.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.status","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.status.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.status","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.status.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.status","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sites.status.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"sites.status","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Get Site status","tags":["Sites"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["sites:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.actions"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/timeline":{"get":{"description":"What changed on this Site — Timeline Entries such as traffic drops, indexing changes, sitemap changes, rank shifts and deploys. Filter by kind, feature, severity and since; paginated with an opaque cursor.","operationId":"timeline.entries","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/timeline.entries.path.request/properties/siteId"}},{"in":"query","name":"cursor","required":false,"schema":{"$ref":"#/components/schemas/timeline.entries.query.request/properties/cursor"}},{"in":"query","name":"feature","required":false,"schema":{"$ref":"#/components/schemas/timeline.entries.query.request/properties/feature"}},{"in":"query","name":"includeClosed","required":false,"schema":{"$ref":"#/components/schemas/timeline.entries.query.request/properties/includeClosed"}},{"in":"query","name":"kinds","required":false,"schema":{"$ref":"#/components/schemas/timeline.entries.query.request/properties/kinds"}},{"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/timeline.entries.query.request/properties/limit"}},{"example":"high","in":"query","name":"severity","required":false,"schema":{"$ref":"#/components/schemas/timeline.entries.query.request/properties/severity"}},{"in":"query","name":"since","required":false,"schema":{"$ref":"#/components/schemas/timeline.entries.query.request/properties/since"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"counts":{"traffic.dropped":1},"entries":[{"id":"timeline_01JXYZ","kind":"traffic.dropped","occurredAt":"2026-08-10T01:30:00.000Z","payload":{"clicksDelta":-180},"rendered":{"direction":"down","label":"Clicks dropped 42%","value":-0.42},"severity":"high"}],"nextCursor":null},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/timeline.entries.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.entries","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.entries.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.entries","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.entries.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.entries","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.entries.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.entries","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.entries.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.entries","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.entries.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.entries","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.entries.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.entries","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.entries.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.entries","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.entries.error"}}},"description":"Stable errors: provider_unavailable.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.entries","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["provider_unavailable"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Read the Timeline","tags":["Timeline"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["timeline:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.timeline"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/timeline/annotations":{"get":{"description":"Returns this Site own chart annotations, oldest day first. These are the markers a person or an agent placed; detected events and releases are read through the Timeline instead. `limit` is the per-Site cap, not a paging window.","operationId":"timeline.annotations.list","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/timeline.annotations.list.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"annotations":[{"date":"2026-07-30","id":"ann_01JXYZ","note":"Canonical tags repaired across /docs","title":"Shipped v3.2","url":"https://github.com/owner/repo/releases/tag/v3.2.0"}],"limit":100,"total":1},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/timeline.annotations.list.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.list.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.list.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.list.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.list.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.list.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.list.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.list.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"List chart annotations","tags":["Timeline"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["timeline:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.timeline"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}},"post":{"description":"Places one dated marker on this Site charts. Mark the day work shipped, so the next traffic or ranking move has a cause beside it. The Site has a fixed annotation cap; when it is reached the request is rejected and stale markers must be deleted first.","operationId":"timeline.annotations.create","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/timeline.annotations.create.path.request/properties/siteId"}}],"requestBody":{"content":{"application/json":{"example":{"date":"2026-07-30","note":null,"title":"Shipped v3.2","url":null},"schema":{"$ref":"#/components/schemas/timeline.annotations.create.body.request"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"annotation":{"date":"2026-07-30","id":"ann_01JXYZ","note":null,"title":"Shipped v3.2","url":null}},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/timeline.annotations.create.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.create.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.create.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.create.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.create.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.create.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.create.error"}}},"description":"Stable errors: quota_exhausted, rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["quota_exhausted","rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.create.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Create a chart annotation","tags":["Timeline"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"member","ownership":"site","scopes":["timeline:write"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[{"idFrom":"params.siteId","type":"site.timeline"}],"reads":[{"idFrom":"params.siteId","type":"site.timeline"}]},"x-nuxtseo-semantics":{"kind":"mutation","readConsistency":null,"retry":"never","sideEffects":"state"}}},"/api/v1/sites/{siteId}/timeline/annotations/{annotationId}":{"delete":{"description":"Removes one annotation permanently. Deleting frees a slot against the per-Site cap.","operationId":"timeline.annotations.delete","parameters":[{"example":"ann_01JXYZ","in":"path","name":"annotationId","required":true,"schema":{"$ref":"#/components/schemas/timeline.annotations.delete.path.request/properties/annotationId"}},{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/timeline.annotations.delete.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"annotationId":"ann_01JXYZ","deleted":true},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/timeline.annotations.delete.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.delete","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.delete.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.delete","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.delete.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.delete","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.delete.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.delete","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.delete.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.delete","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.delete.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.delete","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.delete.error"}}},"description":"Stable errors: quota_exhausted, rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.delete","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["quota_exhausted","rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.delete.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.delete","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Delete a chart annotation","tags":["Timeline"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"member","ownership":"site","scopes":["timeline:write"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[{"idFrom":"params.siteId","type":"site.timeline"}],"reads":[{"idFrom":"params.siteId","type":"site.timeline"}]},"x-nuxtseo-semantics":{"kind":"mutation","readConsistency":null,"retry":"never","sideEffects":"state"}},"patch":{"description":"Changes the day, title, note, or link of one annotation. Send only the fields that change. Pass null for note or url to clear it.","operationId":"timeline.annotations.update","parameters":[{"example":"ann_01JXYZ","in":"path","name":"annotationId","required":true,"schema":{"$ref":"#/components/schemas/timeline.annotations.update.path.request/properties/annotationId"}},{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/timeline.annotations.update.path.request/properties/siteId"}}],"requestBody":{"content":{"application/json":{"example":{"title":"Shipped v3.2.1"},"schema":{"$ref":"#/components/schemas/timeline.annotations.update.body.request"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"annotation":{"date":"2026-07-30","id":"ann_01JXYZ","note":null,"title":"Shipped v3.2.1","url":null}},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/timeline.annotations.update.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.update","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.update.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.update","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.update.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.update","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.update.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.update","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.update.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.update","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.update.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.update","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.update.error"}}},"description":"Stable errors: quota_exhausted, rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.update","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["quota_exhausted","rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/timeline.annotations.update.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"timeline.annotations.update","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Update a chart annotation","tags":["Timeline"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"member","ownership":"site","scopes":["timeline:write"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[{"idFrom":"params.siteId","type":"site.timeline"}],"reads":[{"idFrom":"params.siteId","type":"site.timeline"}]},"x-nuxtseo-semantics":{"kind":"mutation","readConsistency":null,"retry":"never","sideEffects":"state"}}},"/api/v1/sites/{siteId}/vitals":{"get":{"description":"Returns Core Web Vitals from CrUX real-user field data for the Site origin, or for one Page when url is given. The summary view returns the latest p75 and its change over the window. The trend view returns the 25-week p75 series. For lab scan scores use the Site performance overview. For the DOM element behind a failing vital use the field vitals findings.","operationId":"page.vitals","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/page.vitals.path.request/properties/siteId"}},{"example":"PHONE","in":"query","name":"formFactor","required":false,"schema":{"$ref":"#/components/schemas/page.vitals.query.request/properties/formFactor"}},{"in":"query","name":"url","required":false,"schema":{"$ref":"#/components/schemas/page.vitals.query.request/properties/url"}},{"example":"summary","in":"query","name":"view","required":false,"schema":{"$ref":"#/components/schemas/page.vitals.query.request/properties/view"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"available":true,"formFactor":"PHONE","message":null,"mode":"origin","summary":{"asOf":"2026-08-24","cls":{"asOf":"2026-08-24","deltaOverPeriod":null,"p75":0.08,"status":"good"},"inp":{"asOf":"2026-08-24","deltaOverPeriod":10,"p75":180,"status":"good"},"lcp":{"asOf":"2026-08-24","deltaOverPeriod":-150,"p75":2400,"status":"needs-improvement"},"overall":"ni"},"target":"https://example.com","trend":null,"view":"summary"},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/page.vitals.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.vitals","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.vitals.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.vitals","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.vitals.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.vitals","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.vitals.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.vitals","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.vitals.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.vitals","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.vitals.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.vitals","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.vitals.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.vitals","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.vitals.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.vitals","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Get field Core Web Vitals","tags":["Pages"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["page:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.page"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}},"/api/v1/sites/{siteId}/vitals/findings":{"get":{"description":"Returns each failing real-user vital attributed to the DOM element behind it, with the p75, the CSS selector, and a ready-to-apply fix prompt. It requires a connected Web Analytics provider. If no provider is connected, findings is empty and message says so.","operationId":"page.vitals.findings","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/page.vitals.findings.path.request/properties/siteId"}},{"example":20,"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/page.vitals.findings.query.request/properties/limit"}},{"in":"query","name":"metrics","required":false,"schema":{"$ref":"#/components/schemas/page.vitals.findings.query.request/properties/metrics"}},{"example":0,"in":"query","name":"offset","required":false,"schema":{"$ref":"#/components/schemas/page.vitals.findings.query.request/properties/offset"}},{"example":"1","in":"query","name":"onlyFailing","required":false,"schema":{"$ref":"#/components/schemas/page.vitals.findings.query.request/properties/onlyFailing"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"findings":[{"estimatedViews":1840,"fixPrompt":"The LCP element on /blog is main > img.hero at 4300ms.","metric":"lcp","p75":4300,"route":"/blog","selector":"main > img.hero","severity":"poor"}],"limit":20,"message":null,"offset":0,"source":"cloudflare","total":1},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/page.vitals.findings.200.response"}}},"description":"Successful response.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.vitals.findings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.vitals.findings.error"}}},"description":"Stable errors: invalid_request.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.vitals.findings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["invalid_request"]},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.vitals.findings.error"}}},"description":"Stable errors: unauthorized, auth_expired.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.vitals.findings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["unauthorized","auth_expired"]},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.vitals.findings.error"}}},"description":"Stable errors: forbidden.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.vitals.findings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["forbidden"]},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.vitals.findings.error"}}},"description":"Stable errors: not_found.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.vitals.findings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.vitals.findings.error"}}},"description":"Stable errors: conflict.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.vitals.findings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["conflict"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.vitals.findings.error"}}},"description":"Stable errors: rate_limited.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.vitals.findings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/page.vitals.findings.error"}}},"description":"Stable errors: contract_violation, internal_error.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"page.vitals.findings","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["contract_violation","internal_error"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"List field Core Web Vitals findings","tags":["Pages"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["page:read"]},"x-nuxtseo-lifecycle":{"introduced":"1.2.0"},"x-nuxtseo-policy":{"entitlement":null,"idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[],"reads":[{"idFrom":"params.siteId","type":"site.page"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}}}}}
