@nuxtseo/protocol 0.1.3 → 0.1.4
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.
- package/dist/v1/actions.d.ts +52 -26
- package/dist/v1/actions.js +16 -9
- package/dist/v1/core.d.ts +3 -3
- package/dist/v1/core.js +2 -0
- package/dist/v1/index.d.ts +3 -0
- package/dist/v1/index.js +3 -0
- package/dist/v1/timeline.d.ts +517 -0
- package/dist/v1/timeline.js +150 -0
- package/generated/openapi.v1.json +1 -1
- package/package.json +7 -2
|
@@ -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","ticket-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"}},"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":"ticket_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:ticket_01JXYZ:scope","asOf":"2026-08-10T01:30:00.000Z","assessmentId":"assessment_01JXYZ","diagnosis":"One page returns HTTP 404.","evidenceGroups":[],"findingType":"broken-pages","id":"ticket_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":"ticket_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:ticket_01JXYZ:scope"},"schema":{"$ref":"#/components/schemas/actions.resolve.body.request"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"actionId":"ticket_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"}}}}}
|
|
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"}}}}}
|