@nuxtseo/protocol 0.1.4 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"components":{"schemas":{"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.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"}},"required":["actions","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"},"status":{"minLength":1,"type":"string"},"verification":{"enum":["recheck-queued","scan-queued","next-assessment","metric-watch","user-resolved"],"type":"string"}},"required":["actionId","status","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"},"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":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"minLength":1,"type":"string"},"url":{"format":"uri","type":"string"}},"required":["_tag","id","url","detail"],"type":"object"}]},"type":"array"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"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"},"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"}]}},"required":["id","status","findingType","artifactVersion","assessmentId","asOf","diagnosis","subject","action","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":{"anyOf":[{"type":"number"},{"type":"null"}]},"comparison":{"anyOf":[{"additionalProperties":false,"properties":{"from":{"additionalProperties":false,"properties":{"buildId":{"anyOf":[{"type":"string"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"generation":{"type":"number"}},"required":["generation","buildId","completedAt"],"type":"object"},"to":{"additionalProperties":false,"properties":{"buildId":{"anyOf":[{"type":"string"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"generation":{"type":"number"}},"required":["generation","buildId","completedAt"],"type":"object"}},"required":["from","to"],"type":"object"},{"type":"null"}]},"generations":{"items":{"additionalProperties":false,"properties":{"buildId":{"anyOf":[{"type":"string"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string"},{"type":"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":{"anyOf":[{"type":"string"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string"},{"type":"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":{"anyOf":[{"type":"string"},{"type":"null"}]},"observedAt":{"anyOf":[{"type":"string"},{"type":"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"},"rows":{"items":{"additionalProperties":false,"properties":{"clicks":{"type":"number"},"clicksChangePct":{"type":"number"},"clicksDelta":{"type":"number"},"impressions":{"type":"number"},"path":{"type":"string"},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"prevClicks":{"type":"number"},"prevImpressions":{"type":"number"},"prevPosition":{"anyOf":[{"type":"number"},{"type":"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","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":{"anyOf":[{"type":"string"},{"type":"null"}]},"members":{"items":{"additionalProperties":false,"properties":{"clicks":{"anyOf":[{"type":"number"},{"type":"null"}]},"impressions":{"anyOf":[{"type":"number"},{"type":"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"},"pagesAffected":{"type":"number"},"total":{"type":"number"}},"required":["connected","clusters","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"},"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":{"anyOf":[{"type":"number"},{"type":"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","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":{"anyOf":[{"type":"string"},{"type":"null"}]},"topRank":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"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.recoverable.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"anchor":{"anyOf":[{"type":"string"},{"type":"null"}]},"destinationStatus":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"destinationUrl":{"minLength":1,"type":"string"},"dofollow":{"anyOf":[{"type":"boolean"},{"type":"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"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","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"},"content.briefs.create.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"brief":{"additionalProperties":false,"properties":{"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"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"generatedAt":{"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"},"keyword":{"minLength":1,"type":"string"},"markedPublishedAt":{"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"}]},"markedWrittenAt":{"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"}]},"payload":{"anyOf":[{"additionalProperties":false,"properties":{"currentClicks":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"currentImpressions":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"currentRank":{"type":"number"},"internalLinks":{"items":{"additionalProperties":false,"properties":{"anchorSuggestion":{"type":"string"},"excerpt":{"type":"string"},"impressions":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"position":{"type":"number"},"reasoning":{"type":"string"},"url":{"format":"uri","type":"string"}},"required":["url","reasoning"],"type":"object"},"type":"array"},"notes":{"items":{"type":"string"},"type":"array"},"outline":{"items":{"additionalProperties":false,"properties":{"annotation":{"type":"string"},"existingCoverageExcerpt":{"type":"string"},"existingCoverageUrl":{"format":"uri","type":"string"},"heading":{"type":"string"},"level":{"enum":["h1","h2","h3"],"type":"string"},"sourceResultUrls":{"items":{"format":"uri","type":"string"},"type":"array"},"tag":{"enum":["intent-match","your-strength","gap","from-paa","from-aio"],"type":"string"},"wordCountTarget":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["level","heading"],"type":"object"},"type":"array"},"serp":{"additionalProperties":false,"properties":{"aiOverviewPresent":{"type":"boolean"},"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"},"medianWordCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"paa":{"items":{"additionalProperties":false,"properties":{"answer":{"type":"string"},"question":{"type":"string"}},"required":["question"],"type":"object"},"type":"array"},"serpFeatures":{"items":{"type":"string"},"type":"array"},"topResults":{"items":{"additionalProperties":false,"properties":{"domain":{"type":"string"},"position":{"type":"number"},"snippet":{"type":"string"},"title":{"type":"string"},"url":{"format":"uri","type":"string"},"wordCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["position","url","title","domain"],"type":"object"},"type":"array"}},"required":["fetchedAt","topResults"],"type":"object"},"summary":{"type":"string"},"targetPage":{"format":"uri","type":"string"}},"type":"object"},{"type":"null"}]},"siteId":{"minLength":1,"type":"string"},"status":{"enum":["queued","researching","ready","written","published","stale","failed","archived"],"type":"string"},"updatedAt":{"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","siteId","keyword","status","error","generatedAt","markedPublishedAt","updatedAt","payload","createdAt","markedWrittenAt"],"type":"object"},"created":{"type":"boolean"}},"required":["brief","created"],"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"},"content.briefs.create.body.request":{"additionalProperties":false,"properties":{"currentClicks":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"currentImpressions":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"currentRank":{"type":"number"},"keyword":{"maxLength":200,"minLength":1,"type":"string"},"targetPage":{"format":"uri","type":"string"}},"required":["keyword"],"type":"object"},"content.briefs.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"},"content.briefs.create.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"content.briefs.list.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"briefs":{"items":{"additionalProperties":false,"properties":{"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"generatedAt":{"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"},"keyword":{"minLength":1,"type":"string"},"markedPublishedAt":{"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"}]},"siteId":{"minLength":1,"type":"string"},"status":{"enum":["queued","researching","ready","written","published","stale","failed","archived"],"type":"string"},"updatedAt":{"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","siteId","keyword","status","error","generatedAt","markedPublishedAt","updatedAt"],"type":"object"},"type":"array"},"page":{"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"}},"required":["total","limit","offset","hasMore"],"type":"object"}},"required":["briefs","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"},"content.briefs.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"},"content.briefs.list.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"content.briefs.list.query.request":{"additionalProperties":false,"properties":{"limit":{"default":25,"maximum":100,"minimum":1,"type":"integer"},"offset":{"default":0,"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["queued","researching","ready","written","published","stale","failed","archived"],"type":"string"}},"type":"object"},"content.briefs.show.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"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"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"generatedAt":{"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"},"keyword":{"minLength":1,"type":"string"},"markedPublishedAt":{"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"}]},"markedWrittenAt":{"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"}]},"payload":{"anyOf":[{"additionalProperties":false,"properties":{"currentClicks":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"currentImpressions":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"currentRank":{"type":"number"},"internalLinks":{"items":{"additionalProperties":false,"properties":{"anchorSuggestion":{"type":"string"},"excerpt":{"type":"string"},"impressions":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"position":{"type":"number"},"reasoning":{"type":"string"},"url":{"format":"uri","type":"string"}},"required":["url","reasoning"],"type":"object"},"type":"array"},"notes":{"items":{"type":"string"},"type":"array"},"outline":{"items":{"additionalProperties":false,"properties":{"annotation":{"type":"string"},"existingCoverageExcerpt":{"type":"string"},"existingCoverageUrl":{"format":"uri","type":"string"},"heading":{"type":"string"},"level":{"enum":["h1","h2","h3"],"type":"string"},"sourceResultUrls":{"items":{"format":"uri","type":"string"},"type":"array"},"tag":{"enum":["intent-match","your-strength","gap","from-paa","from-aio"],"type":"string"},"wordCountTarget":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["level","heading"],"type":"object"},"type":"array"},"serp":{"additionalProperties":false,"properties":{"aiOverviewPresent":{"type":"boolean"},"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"},"medianWordCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"paa":{"items":{"additionalProperties":false,"properties":{"answer":{"type":"string"},"question":{"type":"string"}},"required":["question"],"type":"object"},"type":"array"},"serpFeatures":{"items":{"type":"string"},"type":"array"},"topResults":{"items":{"additionalProperties":false,"properties":{"domain":{"type":"string"},"position":{"type":"number"},"snippet":{"type":"string"},"title":{"type":"string"},"url":{"format":"uri","type":"string"},"wordCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["position","url","title","domain"],"type":"object"},"type":"array"}},"required":["fetchedAt","topResults"],"type":"object"},"summary":{"type":"string"},"targetPage":{"format":"uri","type":"string"}},"type":"object"},{"type":"null"}]},"siteId":{"minLength":1,"type":"string"},"status":{"enum":["queued","researching","ready","written","published","stale","failed","archived"],"type":"string"},"updatedAt":{"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","siteId","keyword","status","error","generatedAt","markedPublishedAt","updatedAt","payload","createdAt","markedWrittenAt"],"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"},"content.briefs.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"},"content.briefs.show.path.request":{"additionalProperties":false,"properties":{"briefId":{"minLength":1,"type":"string"},"siteId":{"minLength":1,"type":"string"}},"required":["siteId","briefId"],"type":"object"},"mentions.list.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"author":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorHandle":{"anyOf":[{"type":"string"},{"type":"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":{"anyOf":[{"type":"string"},{"type":"null"}]},"snippet":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"minLength":1,"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"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"}},"required":["items","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"],"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"},"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","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":{"anyOf":[{"type":"number"},{"type":"null"}]},"bestPractices":{"anyOf":[{"type":"number"},{"type":"null"}]},"cls":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"null"}]},"performance":{"anyOf":[{"type":"number"},{"type":"null"}]},"scanId":{"minLength":1,"type":"string"},"seo":{"anyOf":[{"type":"number"},{"type":"null"}]},"strategy":{"enum":["mobile","desktop"],"type":"string"},"tbt":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"null"}]},"volume":{"anyOf":[{"type":"number"},{"type":"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.performance.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"health":{"anyOf":[{"additionalProperties":false,"properties":{"a11y":{"additionalProperties":false,"properties":{"median":{"anyOf":[{"type":"number"},{"type":"null"}]},"worst":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["median","worst"],"type":"object"},"bestPractices":{"additionalProperties":false,"properties":{"median":{"anyOf":[{"type":"number"},{"type":"null"}]},"worst":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["median","worst"],"type":"object"},"cls":{"additionalProperties":false,"properties":{"median":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["median","worst","statusCounts"],"type":"object"},"perf":{"additionalProperties":false,"properties":{"best":{"anyOf":[{"type":"number"},{"type":"null"}]},"median":{"anyOf":[{"type":"number"},{"type":"null"}]},"worst":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["median","worst","best"],"type":"object"},"scannedPageCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"seo":{"additionalProperties":false,"properties":{"median":{"anyOf":[{"type":"number"},{"type":"null"}]},"worst":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["median","worst"],"type":"object"},"tbt":{"additionalProperties":false,"properties":{"median":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"null"}]},"bestPractices":{"anyOf":[{"type":"number"},{"type":"null"}]},"cls":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"null"}]},"perf":{"anyOf":[{"type":"number"},{"type":"null"}]},"scanId":{"minLength":1,"type":"string"},"seo":{"anyOf":[{"type":"number"},{"type":"null"}]},"tbt":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"null"}]},"bestPractices":{"anyOf":[{"type":"number"},{"type":"null"}]},"cls":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"null"}]},"perf":{"anyOf":[{"type":"number"},{"type":"null"}]},"scanId":{"minLength":1,"type":"string"},"seo":{"anyOf":[{"type":"number"},{"type":"null"}]},"tbt":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"null"}]},"bestPractices":{"anyOf":[{"type":"number"},{"type":"null"}]},"cls":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"null"}]},"pageId":{"minLength":1,"type":"string"},"path":{"type":"string"},"perf":{"anyOf":[{"type":"number"},{"type":"null"}]},"seo":{"anyOf":[{"type":"number"},{"type":"null"}]},"tbt":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"null"}]},"bestPractices":{"anyOf":[{"type":"number"},{"type":"null"}]},"cls":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"null"}]},"pageId":{"minLength":1,"type":"string"},"path":{"type":"string"},"perf":{"anyOf":[{"type":"number"},{"type":"null"}]},"seo":{"anyOf":[{"type":"number"},{"type":"null"}]},"tbt":{"anyOf":[{"type":"number"},{"type":"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.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"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"},"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":{"anyOf":[{"type":"number"},{"type":"null"}]},"competition":{"anyOf":[{"type":"number"},{"type":"null"}]},"competitionLevel":{"anyOf":[{"enum":["LOW","MEDIUM","HIGH"],"type":"string"},{"type":"null"}]},"cpc":{"anyOf":[{"type":"number"},{"type":"null"}]},"difficulty":{"anyOf":[{"type":"number"},{"type":"null"}]},"highBid":{"anyOf":[{"type":"number"},{"type":"null"}]},"intent":{"anyOf":[{"type":"string"},{"type":"null"}]},"keyword":{"minLength":1,"type":"string"},"lowBid":{"anyOf":[{"type":"number"},{"type":"null"}]},"referringDomains":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"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"},"totalFound":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["topic","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":{"anyOf":[{"type":"number"},{"type":"null"}]},"organicTraffic":{"anyOf":[{"type":"number"},{"type":"null"}]},"totalKeywords":{"anyOf":[{"type":"number"},{"type":"null"}]},"trafficValue":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"string"},{"type":"null"}]},"keyword":{"minLength":1,"type":"string"},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"traffic":{"anyOf":[{"type":"number"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]},"volume":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["keyword","position","volume","traffic","url","intent"],"type":"object"},"type":"array"},"metrics":{"additionalProperties":false,"properties":{"keywordFootprint":{"anyOf":[{"type":"number"},{"type":"null"}]},"organicTraffic":{"anyOf":[{"type":"number"},{"type":"null"}]},"totalKeywords":{"anyOf":[{"type":"number"},{"type":"null"}]},"trafficValue":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"string"},{"type":"null"}]},"keyword":{"minLength":1,"type":"string"},"position":{"anyOf":[{"type":"number"},{"type":"null"}]},"traffic":{"anyOf":[{"type":"number"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]},"volume":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"null"}]},"organicTraffic":{"anyOf":[{"type":"number"},{"type":"null"}]},"totalKeywords":{"anyOf":[{"type":"number"},{"type":"null"}]},"trafficValue":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"null"}]},"organicTraffic":{"anyOf":[{"type":"number"},{"type":"null"}]},"totalKeywords":{"anyOf":[{"type":"number"},{"type":"null"}]},"trafficValue":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"string"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"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":{"anyOf":[{"type":"number"},{"type":"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":{"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","archived","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"],"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":{"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":{"anyOf":[{"type":"number"},{"type":"null"}]},"clicks":{"type":"number"},"ctr":{"type":"number"},"impressions":{"type":"number"},"keyword":{"anyOf":[{"type":"string"},{"type":"null"}]},"pos":{"type":"number"},"prevClicks":{"type":"number"},"prevPos":{"type":"number"},"url":{"minLength":1,"type":"string"}},"required":["url","clicks","impressions","ctr","pos","keyword","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":"pages","type":"string"}},"required":["site","type","period","total","totals","totalsScope","representedTotals","representedTotalsScope","rows"],"type":"object"},{"additionalProperties":false,"properties":{"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":{"anyOf":[{"type":"number"},{"type":"null"}]},"clicks":{"type":"number"},"ctr":{"type":"number"},"impressions":{"type":"number"},"keyword":{"minLength":1,"type":"string"},"pos":{"type":"number"},"prevClicks":{"type":"number"},"prevPos":{"type":"number"},"topPage":{"anyOf":[{"type":"string"},{"type":"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","type":"string"}},"required":["site","type","period","total","totals","totalsScope","representedTotals","representedTotalsScope","rows"],"type":"object"},{"additionalProperties":false,"properties":{"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":{"anyOf":[{"type":"number"},{"type":"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","type":"string"}},"required":["site","type","period","total","totals","totalsScope","representedTotals","representedTotalsScope","rows"],"type":"object"},{"additionalProperties":false,"properties":{"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","type":"string"}},"required":["site","type","period","total","totals","totalsScope","representedTotals","representedTotalsScope","rows"],"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","type":"string"}},"required":["site","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","type":"string"}},"required":["site","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","type":"string"}},"required":["site","type","keyword","period","totals","rows"],"type":"object"},{"additionalProperties":false,"properties":{"criteria":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"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"},"posChange":{"type":"number"},"potentialClicks":{"type":"number"},"prevClicks":{"type":"number"},"prevPos":{"type":"number"}},"required":["keyword","clicks","impressions","ctr","pos"],"type":"object"},"type":"array"},"site":{"minLength":1,"type":"string"},"summary":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},"propertyNames":{"type":"string"},"type":"object"},{"type":"null"}]},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"type":{"const":"analysis","type":"string"}},"required":["site","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.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"}]},"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"},"totalUrls":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"view":{"const":"summary","type":"string"}},"required":["view","totalUrls","indexed","asOf","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"},"urls":{"items":{"additionalProperties":false,"properties":{"coverageState":{"anyOf":[{"type":"string"},{"type":"null"}]},"googleCanonical":{"anyOf":[{"type":"string"},{"type":"null"}]},"indexingState":{"anyOf":[{"type":"string"},{"type":"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":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"minLength":1,"type":"string"},"userCanonical":{"anyOf":[{"type":"string"},{"type":"null"}]},"verdict":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["url","verdict","coverageState","indexingState","userCanonical","googleCanonical","lastCrawlTime","lastCheckedAt"],"type":"object"},"type":"array"},"view":{"const":"urls","type":"string"}},"required":["view","total","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":{"anyOf":[{"type":"string"},{"type":"null"}]},"observedOverDays":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"toValue":{"anyOf":[{"type":"string"},{"type":"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":{"anyOf":[{"type":"string"},{"type":"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":{"anyOf":[{"type":"string"},{"type":"null"}]},"crawledAs":{"anyOf":[{"type":"string"},{"type":"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":{"anyOf":[{"type":"string"},{"type":"null"}]},"indexingState":{"anyOf":[{"type":"string"},{"type":"null"}]},"inspectedUrl":{"minLength":1,"type":"string"},"inspectionResultLink":{"anyOf":[{"type":"string"},{"type":"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":{"anyOf":[{"type":"string"},{"type":"null"}]},"pageFetchState":{"anyOf":[{"type":"string"},{"type":"null"}]},"referringUrls":{"items":{"type":"string"},"type":"array"},"requestedUrl":{"minLength":1,"type":"string"},"robotsTxtState":{"anyOf":[{"type":"string"},{"type":"null"}]},"sitemaps":{"items":{"type":"string"},"type":"array"},"userCanonical":{"anyOf":[{"type":"string"},{"type":"null"}]},"verdict":{"anyOf":[{"type":"string"},{"type":"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":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidenceUrl":{"minLength":1,"type":"string"},"googleCanonical":{"anyOf":[{"type":"string"},{"type":"null"}]},"issueType":{"minLength":1,"type":"string"},"label":{"anyOf":[{"type":"string"},{"type":"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":{"anyOf":[{"type":"string"},{"type":"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.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.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":{"anyOf":[{"type":"string"},{"type":"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":{"anyOf":[{"type":"string"},{"type":"null"}]},"errors":{"type":"number"},"fetchedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"isIndex":{"type":"boolean"},"isPending":{"type":"boolean"},"lastDownloaded":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastError":{"anyOf":[{"type":"string"},{"type":"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.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":{"anyOf":[{"type":"string"},{"type":"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":{"anyOf":[{"type":"string"},{"type":"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"},"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":{"anyOf":[{"type":"string"},{"type":"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/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 account 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":{"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}},"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","diagnosis":"One page returns HTTP 404.","evidenceGroups":[],"findingType":"broken-pages","id":"action_01JXYZ","materiality":{"affectedSubjects":1,"internalReferrers":2},"status":"open","subject":{"kind":"page","label":"/pricing","url":"https://example.com/pricing"},"verifier":{"_tag":"finding-cleared","findingType":"broken-pages"}},"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}/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","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"]},"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,"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"]},"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,"pagesAffected":3,"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"]},"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,"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"]},"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"]},"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/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,"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"]},"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}/content/briefs":{"get":{"description":"Lists one page of Content Brief summaries owned by a NuxtSEO Site.","operationId":"content.briefs.list","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/content.briefs.list.path.request/properties/siteId"}},{"example":25,"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/content.briefs.list.query.request/properties/limit"}},{"example":0,"in":"query","name":"offset","required":false,"schema":{"$ref":"#/components/schemas/content.briefs.list.query.request/properties/offset"}},{"in":"query","name":"status","required":false,"schema":{"$ref":"#/components/schemas/content.briefs.list.query.request/properties/status"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"briefs":[{"error":null,"generatedAt":"2026-08-10T00:00:00.000Z","id":"brief_01JXYZ","keyword":"nuxt seo","markedPublishedAt":null,"siteId":"site_01JXYZ","status":"ready","updatedAt":"2026-08-10T00:00:00.000Z"}],"page":{"hasMore":false,"limit":25,"offset":0,"total":1}},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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 Content Briefs","tags":["Content"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["content: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.content"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}},"post":{"description":"Creates or returns the existing Site-owned Content Brief for a canonical target keyword.","operationId":"content.briefs.create","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/content.briefs.create.path.request/properties/siteId"}}],"requestBody":{"content":{"application/json":{"example":{"keyword":"nuxt seo","targetPage":"https://example.com/guide"},"schema":{"$ref":"#/components/schemas/content.briefs.create.body.request"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"brief":{"createdAt":"2026-08-10T00:00:00.000Z","error":null,"generatedAt":"2026-08-10T00:00:00.000Z","id":"brief_01JXYZ","keyword":"nuxt seo","markedPublishedAt":null,"markedWrittenAt":null,"payload":{"internalLinks":[],"outline":[{"heading":"Nuxt SEO","level":"h1"}],"targetPage":"https://example.com/guide"},"siteId":"site_01JXYZ","status":"ready","updatedAt":"2026-08-10T00:00:00.000Z"},"created":true},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.create.error"}}},"description":"Stable errors: rate_limited, quota_exhausted.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"content.briefs.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited","quota_exhausted"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/content.briefs.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":"content.briefs.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 Content Brief","tags":["Content"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"member","ownership":"site","scopes":["content:write"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":"pro","idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[{"idFrom":"params.siteId","type":"site.content"}],"reads":[{"idFrom":"params.siteId","type":"site.content"}]},"x-nuxtseo-semantics":{"kind":"mutation","readConsistency":null,"retry":"never","sideEffects":"state"}}},"/api/v1/sites/{siteId}/content/briefs/{briefId}":{"get":{"description":"Returns one Content Brief with its grounded SERP, outline, and internal-link evidence.","operationId":"content.briefs.show","parameters":[{"example":"brief_01JXYZ","in":"path","name":"briefId","required":true,"schema":{"$ref":"#/components/schemas/content.briefs.show.path.request/properties/briefId"}},{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/content.briefs.show.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"createdAt":"2026-08-10T00:00:00.000Z","error":null,"generatedAt":"2026-08-10T00:00:00.000Z","id":"brief_01JXYZ","keyword":"nuxt seo","markedPublishedAt":null,"markedWrittenAt":null,"payload":{"internalLinks":[],"outline":[{"heading":"Nuxt SEO","level":"h1"}],"targetPage":"https://example.com/guide"},"siteId":"site_01JXYZ","status":"ready","updatedAt":"2026-08-10T00:00:00.000Z"},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.show.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":"content.briefs.show","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/content.briefs.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":"content.briefs.show","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Show a Content Brief","tags":["Content"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["content: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.content"}]},"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},"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"]},"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","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"]},"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/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":80,"statusCounts":{"good":4,"ni":0,"poor":1},"worst":260},"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"]},"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}/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"]},"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/keywords":{"get":{"description":"Returns keyword ideas with volume, difficulty, intent, cost data, and explicit provider execution and spend evidence. 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","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":{"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","type":"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/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","indexed":92,"issues":[],"totalUrls":100,"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"}}},"/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"]},"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.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"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"]},"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"]},"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/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"]},"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}/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"]},"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"}}}}}
1
+ {"components":{"schemas":{"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","content:read","content: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"}},"required":["artifactVersion"],"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"}},"required":["actions","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"},"status":{"minLength":1,"type":"string"},"verification":{"enum":["recheck-queued","scan-queued","next-assessment","metric-watch","user-resolved"],"type":"string"}},"required":["actionId","status","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"},"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"}]},"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"},"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"}]}},"required":["id","status","findingType","artifactVersion","assessmentId","asOf","diagnosis","subject","action","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"},"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","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"]},"pagesAffected":{"type":"number"},"total":{"type":"number"}},"required":["connected","clusters","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"},"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","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"]},"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"],"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"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","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"]},"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"],"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"}]},"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"}},"required":["target","rank","backlinks","brokenBacklinks","brokenPages","crawledPages","spamScore","referringDomains","referringDomainsNofollow","referringMainDomains","referringIps","referringSubnets","referringPages","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"},"content.briefs.create.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"brief":{"additionalProperties":false,"properties":{"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"}]},"error":{"type":["string","null"]},"generatedAt":{"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"},"keyword":{"minLength":1,"type":"string"},"markedPublishedAt":{"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"}]},"markedWrittenAt":{"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"}]},"payload":{"anyOf":[{"additionalProperties":false,"properties":{"currentClicks":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"currentImpressions":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"currentRank":{"type":"number"},"internalLinks":{"items":{"additionalProperties":false,"properties":{"anchorSuggestion":{"type":"string"},"excerpt":{"type":"string"},"impressions":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"position":{"type":"number"},"reasoning":{"type":"string"},"url":{"format":"uri","type":"string"}},"required":["url","reasoning"],"type":"object"},"type":"array"},"notes":{"items":{"type":"string"},"type":"array"},"outline":{"items":{"additionalProperties":false,"properties":{"annotation":{"type":"string"},"existingCoverageExcerpt":{"type":"string"},"existingCoverageUrl":{"format":"uri","type":"string"},"heading":{"type":"string"},"level":{"enum":["h1","h2","h3"],"type":"string"},"sourceResultUrls":{"items":{"format":"uri","type":"string"},"type":"array"},"tag":{"enum":["intent-match","your-strength","gap","from-paa","from-aio"],"type":"string"},"wordCountTarget":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["level","heading"],"type":"object"},"type":"array"},"serp":{"additionalProperties":false,"properties":{"aiOverviewPresent":{"type":"boolean"},"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"},"medianWordCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"paa":{"items":{"additionalProperties":false,"properties":{"answer":{"type":"string"},"question":{"type":"string"}},"required":["question"],"type":"object"},"type":"array"},"serpFeatures":{"items":{"type":"string"},"type":"array"},"topResults":{"items":{"additionalProperties":false,"properties":{"domain":{"type":"string"},"position":{"type":"number"},"snippet":{"type":"string"},"title":{"type":"string"},"url":{"format":"uri","type":"string"},"wordCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["position","url","title","domain"],"type":"object"},"type":"array"}},"required":["fetchedAt","topResults"],"type":"object"},"summary":{"type":"string"},"targetPage":{"format":"uri","type":"string"}},"type":"object"},{"type":"null"}]},"siteId":{"minLength":1,"type":"string"},"status":{"enum":["queued","researching","ready","written","published","stale","failed","archived"],"type":"string"},"updatedAt":{"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","siteId","keyword","status","error","generatedAt","markedPublishedAt","updatedAt","payload","createdAt","markedWrittenAt"],"type":"object"},"created":{"type":"boolean"}},"required":["brief","created"],"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"},"content.briefs.create.body.request":{"additionalProperties":false,"properties":{"currentClicks":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"currentImpressions":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"currentRank":{"type":"number"},"keyword":{"maxLength":200,"minLength":1,"type":"string"},"targetPage":{"format":"uri","type":"string"}},"required":["keyword"],"type":"object"},"content.briefs.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"},"content.briefs.create.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"content.briefs.list.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"briefs":{"items":{"additionalProperties":false,"properties":{"error":{"type":["string","null"]},"generatedAt":{"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"},"keyword":{"minLength":1,"type":"string"},"markedPublishedAt":{"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"}]},"siteId":{"minLength":1,"type":"string"},"status":{"enum":["queued","researching","ready","written","published","stale","failed","archived"],"type":"string"},"updatedAt":{"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","siteId","keyword","status","error","generatedAt","markedPublishedAt","updatedAt"],"type":"object"},"type":"array"},"page":{"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"}},"required":["total","limit","offset","hasMore"],"type":"object"}},"required":["briefs","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"},"content.briefs.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"},"content.briefs.list.path.request":{"additionalProperties":false,"properties":{"siteId":{"minLength":1,"type":"string"}},"required":["siteId"],"type":"object"},"content.briefs.list.query.request":{"additionalProperties":false,"properties":{"limit":{"default":25,"maximum":100,"minimum":1,"type":"integer"},"offset":{"default":0,"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["queued","researching","ready","written","published","stale","failed","archived"],"type":"string"}},"type":"object"},"content.briefs.show.200.response":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"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"}]},"error":{"type":["string","null"]},"generatedAt":{"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"},"keyword":{"minLength":1,"type":"string"},"markedPublishedAt":{"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"}]},"markedWrittenAt":{"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"}]},"payload":{"anyOf":[{"additionalProperties":false,"properties":{"currentClicks":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"currentImpressions":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"currentRank":{"type":"number"},"internalLinks":{"items":{"additionalProperties":false,"properties":{"anchorSuggestion":{"type":"string"},"excerpt":{"type":"string"},"impressions":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"position":{"type":"number"},"reasoning":{"type":"string"},"url":{"format":"uri","type":"string"}},"required":["url","reasoning"],"type":"object"},"type":"array"},"notes":{"items":{"type":"string"},"type":"array"},"outline":{"items":{"additionalProperties":false,"properties":{"annotation":{"type":"string"},"existingCoverageExcerpt":{"type":"string"},"existingCoverageUrl":{"format":"uri","type":"string"},"heading":{"type":"string"},"level":{"enum":["h1","h2","h3"],"type":"string"},"sourceResultUrls":{"items":{"format":"uri","type":"string"},"type":"array"},"tag":{"enum":["intent-match","your-strength","gap","from-paa","from-aio"],"type":"string"},"wordCountTarget":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["level","heading"],"type":"object"},"type":"array"},"serp":{"additionalProperties":false,"properties":{"aiOverviewPresent":{"type":"boolean"},"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"},"medianWordCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"paa":{"items":{"additionalProperties":false,"properties":{"answer":{"type":"string"},"question":{"type":"string"}},"required":["question"],"type":"object"},"type":"array"},"serpFeatures":{"items":{"type":"string"},"type":"array"},"topResults":{"items":{"additionalProperties":false,"properties":{"domain":{"type":"string"},"position":{"type":"number"},"snippet":{"type":"string"},"title":{"type":"string"},"url":{"format":"uri","type":"string"},"wordCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["position","url","title","domain"],"type":"object"},"type":"array"}},"required":["fetchedAt","topResults"],"type":"object"},"summary":{"type":"string"},"targetPage":{"format":"uri","type":"string"}},"type":"object"},{"type":"null"}]},"siteId":{"minLength":1,"type":"string"},"status":{"enum":["queued","researching","ready","written","published","stale","failed","archived"],"type":"string"},"updatedAt":{"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","siteId","keyword","status","error","generatedAt","markedPublishedAt","updatedAt","payload","createdAt","markedWrittenAt"],"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"},"content.briefs.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"},"content.briefs.show.path.request":{"additionalProperties":false,"properties":{"briefId":{"minLength":1,"type":"string"},"siteId":{"minLength":1,"type":"string"}},"required":["siteId","briefId"],"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"}},"required":["items","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"},"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","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":{"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"},"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"}]},"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","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":{"deltaOverPeriod":{"type":["number","null"]},"p75":{"type":["number","null"]},"status":{"anyOf":[{"enum":["good","needs-improvement","poor"],"type":"string"},{"type":"null"}]}},"required":["p75","status","deltaOverPeriod"],"type":"object"},"inp":{"additionalProperties":false,"properties":{"deltaOverPeriod":{"type":["number","null"]},"p75":{"type":["number","null"]},"status":{"anyOf":[{"enum":["good","needs-improvement","poor"],"type":"string"},{"type":"null"}]}},"required":["p75","status","deltaOverPeriod"],"type":"object"},"lcp":{"additionalProperties":false,"properties":{"deltaOverPeriod":{"type":["number","null"]},"p75":{"type":["number","null"]},"status":{"anyOf":[{"enum":["good","needs-improvement","poor"],"type":"string"},{"type":"null"}]}},"required":["p75","status","deltaOverPeriod"],"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.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"},"totalFound":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["topic","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":{"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","archived","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"],"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":{"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":{"type":["string","null"]},"pos":{"type":"number"},"prevClicks":{"type":"number"},"prevPos":{"type":"number"},"url":{"minLength":1,"type":"string"}},"required":["url","clicks","impressions","ctr","pos","keyword","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":"pages","default":"pages","type":"string"},"view":{"const":"pages","type":"string"}},"required":["site","view","type","period","total","totals","totalsScope","representedTotals","representedTotalsScope","rows"],"type":"object"},{"additionalProperties":false,"properties":{"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"},"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"],"type":"object"},{"additionalProperties":false,"properties":{"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"],"type":"object"},{"additionalProperties":false,"properties":{"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"],"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"},"posChange":{"type":"number"},"potentialClicks":{"type":"number"},"prevClicks":{"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"},"notIndexedButNeverCrawled":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["analysed","notIndexedButNeverCrawled","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"}]},"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"},"totalUrls":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"view":{"const":"summary","type":"string"}},"required":["view","totalUrls","indexed","asOf","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"},"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","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.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.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"},"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.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":{"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"}]},"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/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 account 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":{"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}},"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","diagnosis":"One page returns HTTP 404.","evidenceGroups":[],"findingType":"broken-pages","id":"action_01JXYZ","materiality":{"affectedSubjects":1,"internalReferrers":2},"status":"open","subject":{"kind":"page","label":"/pricing","url":"https://example.com/pricing"},"verifier":{"_tag":"finding-cleared","findingType":"broken-pages"}},"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":"Dismisses a broken-page action when its evidence is complete and shows no internal referrers, so the removed page stays removed. It is rejected when the action has other evidence, when it is already decided, or when the artifactVersion no longer matches. 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"},"schema":{"$ref":"#/components/schemas/actions.dismiss.body.request"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"actionId":"action_01JXYZ","message":"Dismissed. This page can stay removed.","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","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"]},"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,"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"]},"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,"pagesAffected":3,"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"]},"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,"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"]},"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"]},"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. 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","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,"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"]},"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, each row also carries its 90-day referral sessions, so a link that sends nobody is visible. 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","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. 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}},"rank":214,"referringDomains":412,"referringDomainsNofollow":88,"referringIps":350,"referringMainDomains":388,"referringPages":4800,"referringSubnets":322,"spamScore":4,"target":"example.com"},"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}/content/briefs":{"get":{"description":"Lists one page of Content Brief summaries owned by a NuxtSEO Site.","operationId":"content.briefs.list","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/content.briefs.list.path.request/properties/siteId"}},{"example":25,"in":"query","name":"limit","required":false,"schema":{"$ref":"#/components/schemas/content.briefs.list.query.request/properties/limit"}},{"example":0,"in":"query","name":"offset","required":false,"schema":{"$ref":"#/components/schemas/content.briefs.list.query.request/properties/offset"}},{"in":"query","name":"status","required":false,"schema":{"$ref":"#/components/schemas/content.briefs.list.query.request/properties/status"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"briefs":[{"error":null,"generatedAt":"2026-08-10T00:00:00.000Z","id":"brief_01JXYZ","keyword":"nuxt seo","markedPublishedAt":null,"siteId":"site_01JXYZ","status":"ready","updatedAt":"2026-08-10T00:00:00.000Z"}],"page":{"hasMore":false,"limit":25,"offset":0,"total":1}},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.list","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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 Content Briefs","tags":["Content"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["content: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.content"}]},"x-nuxtseo-semantics":{"kind":"query","readConsistency":"primary","retry":"idempotent","sideEffects":"none"}},"post":{"description":"Creates or returns the existing Site-owned Content Brief for a canonical target keyword.","operationId":"content.briefs.create","parameters":[{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/content.briefs.create.path.request/properties/siteId"}}],"requestBody":{"content":{"application/json":{"example":{"keyword":"nuxt seo","targetPage":"https://example.com/guide"},"schema":{"$ref":"#/components/schemas/content.briefs.create.body.request"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"brief":{"createdAt":"2026-08-10T00:00:00.000Z","error":null,"generatedAt":"2026-08-10T00:00:00.000Z","id":"brief_01JXYZ","keyword":"nuxt seo","markedPublishedAt":null,"markedWrittenAt":null,"payload":{"internalLinks":[],"outline":[{"heading":"Nuxt SEO","level":"h1"}],"targetPage":"https://example.com/guide"},"siteId":"site_01JXYZ","status":"ready","updatedAt":"2026-08-10T00:00:00.000Z"},"created":true},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.create.error"}}},"description":"Stable errors: rate_limited, quota_exhausted.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"Retry-After":{"description":"Delay in seconds before a retry when the response is retryable.","schema":{"minimum":0,"type":"integer"}},"X-NuxtSEO-Operation":{"schema":{"const":"content.briefs.create","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["rate_limited","quota_exhausted"]},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/content.briefs.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":"content.briefs.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 Content Brief","tags":["Content"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"member","ownership":"site","scopes":["content:write"]},"x-nuxtseo-lifecycle":{"introduced":"1.0.0"},"x-nuxtseo-policy":{"entitlement":"pro","idempotency":{"_tag":"none"},"meter":null,"rate":{"limit":50,"name":"public-v1-fixed-window","windowSeconds":60}},"x-nuxtseo-resources":{"changes":[{"idFrom":"params.siteId","type":"site.content"}],"reads":[{"idFrom":"params.siteId","type":"site.content"}]},"x-nuxtseo-semantics":{"kind":"mutation","readConsistency":null,"retry":"never","sideEffects":"state"}}},"/api/v1/sites/{siteId}/content/briefs/{briefId}":{"get":{"description":"Returns one Content Brief with its grounded SERP, outline, and internal-link evidence.","operationId":"content.briefs.show","parameters":[{"example":"brief_01JXYZ","in":"path","name":"briefId","required":true,"schema":{"$ref":"#/components/schemas/content.briefs.show.path.request/properties/briefId"}},{"example":"site_01JXYZ","in":"path","name":"siteId","required":true,"schema":{"$ref":"#/components/schemas/content.briefs.show.path.request/properties/siteId"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"createdAt":"2026-08-10T00:00:00.000Z","error":null,"generatedAt":"2026-08-10T00:00:00.000Z","id":"brief_01JXYZ","keyword":"nuxt seo","markedPublishedAt":null,"markedWrittenAt":null,"payload":{"internalLinks":[],"outline":[{"heading":"Nuxt SEO","level":"h1"}],"targetPage":"https://example.com/guide"},"siteId":"site_01JXYZ","status":"ready","updatedAt":"2026-08-10T00:00:00.000Z"},"meta":{"requestId":"req_01JXYZ","version":"1.0"}},"schema":{"$ref":"#/components/schemas/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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/content.briefs.show.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":"content.briefs.show","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/content.briefs.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":"content.briefs.show","type":"string"}},"X-NuxtSEO-Version":{"schema":{"const":"1.0","type":"string"}},"X-Request-Id":{"schema":{"type":"string"}}},"x-nuxtseo-error-codes":["not_found"]},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/content.briefs.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":"content.briefs.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/content.briefs.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":"content.briefs.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"]}},"security":[{"sessionAuth":[]},{"bearerAuth":[]}],"summary":"Show a Content Brief","tags":["Content"],"x-nuxtseo-auth":{"credentials":["session","api_token"],"minimumRole":"viewer","ownership":"site","scopes":["content: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.content"}]},"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},"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"]},"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","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"]},"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":80,"statusCounts":{"good":4,"ni":0,"poor":1},"worst":260},"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"]},"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"]},"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"]},"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","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"]},"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"]},"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/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 keyword ideas with volume, difficulty, intent, cost data, and explicit provider execution and spend evidence. 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","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":{"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,"notIndexedButNeverCrawled":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","indexed":92,"issues":[],"totalUrls":100,"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"}}},"/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"]},"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.","headers":{"RateLimit":{"description":"Remaining quota and reset metadata after a valid scoped principal consumes quota.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Active quota policy. This is present even when the request did not consume quota.","schema":{"type":"string"}},"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"]},"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"]},"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/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"]},"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":{"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."},"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"]},"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"]},"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":{"deltaOverPeriod":null,"p75":0.08,"status":"good"},"inp":{"deltaOverPeriod":10,"p75":180,"status":"good"},"lcp":{"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"]},"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"]},"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"}}}}}