{"openapi":"3.1.0","info":{"title":"Evidence-led AI site check","version":"2026-11-06.1","description":"Free public API; no API key or account. Ten admitted checks per trusted public Cloudflare edge source address per UTC day, shared by the site audit, request inspector and HTML form. Partial and failed admitted checks count; shared networks share an allowance. Native short-burst controls are local and eventually consistent; the daily D1 allowance is atomic. Reports preserve unavailable evidence and method versions. They do not establish provider access, JavaScript rendering, citation, human identity or organic discovery.","license":{"name":"MIT (code); CC BY-NC-ND 4.0 (publication content)","url":"https://gkoreli.com/license"}},"servers":[{"url":"https://gkoreli.com"}],"security":[],"externalDocs":{"description":"Tool, API examples and evidence limits","url":"https://gkoreli.com/ai-check"},"paths":{"/api/ai-check":{"post":{"operationId":"checkAiSite","summary":"Inspect one public HTTPS page and bounded origin discovery files","description":"Accepts a public DNS hostname with optional path. Bare hostnames receive https://. Credentials, IP literals, private/special hostnames, custom ports, queries and fragments are rejected. The JSON body is limited to 4096 UTF-8 bytes and three seconds to read. HTML is inspected without executing JavaScript. Every declared-UA comparison is a synthetic request from this service. Optional discovery files have no readiness-score penalty.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["url"],"properties":{"url":{"type":"string","minLength":1,"maxLength":2048,"description":"Public page URL or bare hostname; no credentials, query, fragment or custom port.","examples":["https://gkoreli.com/ai-fetcher-browser-crawler-headers"]}}}}}},"responses":{"200":{"description":"Assessment completed, possibly with partial or unavailable resources. Inspect report.complete and each resource.outcome.","headers":{"X-RateLimit-Limit":{"description":"Daily allowance; present after daily admission is assessed.","schema":{"type":"integer","const":10}},"X-RateLimit-Remaining":{"description":"Remaining daily checks after this admission; zero on daily exhaustion.","schema":{"type":"integer","minimum":0,"maximum":9}},"X-RateLimit-Reset":{"description":"Next UTC midnight as Unix epoch seconds.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteCheckResponse"}}}},"400":{"description":"Malformed JSON, unexpected fields, invalid UTF-8 or unsupported target.","headers":{"X-RateLimit-Limit":{"description":"Daily allowance; present after daily admission is assessed.","schema":{"type":"integer","const":10}},"X-RateLimit-Remaining":{"description":"Remaining daily checks after this admission; zero on daily exhaustion.","schema":{"type":"integer","minimum":0,"maximum":9}},"X-RateLimit-Reset":{"description":"Next UTC midnight as Unix epoch seconds.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Cross-origin browser request rejected. Browser calls must use this origin; server clients may omit Origin.","headers":{"X-RateLimit-Limit":{"description":"Daily allowance; present after daily admission is assessed.","schema":{"type":"integer","const":10}},"X-RateLimit-Remaining":{"description":"Remaining daily checks after this admission; zero on daily exhaustion.","schema":{"type":"integer","minimum":0,"maximum":9}},"X-RateLimit-Reset":{"description":"Next UTC midnight as Unix epoch seconds.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Unsupported method; use the operation documented for this path.","headers":{"Allow":{"description":"Supported method for this path.","required":true,"schema":{"type":"string","enum":["GET","POST"]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"The request body did not finish within three seconds; daily admission has not occurred.","headers":{"X-RateLimit-Limit":{"description":"Daily allowance; present after daily admission is assessed.","schema":{"type":"integer","const":10}},"X-RateLimit-Remaining":{"description":"Remaining daily checks after this admission; zero on daily exhaustion.","schema":{"type":"integer","minimum":0,"maximum":9}},"X-RateLimit-Reset":{"description":"Next UTC midnight as Unix epoch seconds.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 4096 bytes.","headers":{"X-RateLimit-Limit":{"description":"Daily allowance; present after daily admission is assessed.","schema":{"type":"integer","const":10}},"X-RateLimit-Remaining":{"description":"Remaining daily checks after this admission; zero on daily exhaustion.","schema":{"type":"integer","minimum":0,"maximum":9}},"X-RateLimit-Reset":{"description":"Next UTC midnight as Unix epoch seconds.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","headers":{"X-RateLimit-Limit":{"description":"Daily allowance; present after daily admission is assessed.","schema":{"type":"integer","const":10}},"X-RateLimit-Remaining":{"description":"Remaining daily checks after this admission; zero on daily exhaustion.","schema":{"type":"integer","minimum":0,"maximum":9}},"X-RateLimit-Reset":{"description":"Next UTC midnight as Unix epoch seconds.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Daily or short-burst allowance exhausted. Daily quota fields are present for daily exhaustion; burst rejection occurs before daily admission.","headers":{"X-RateLimit-Limit":{"description":"Daily allowance; present after daily admission is assessed.","schema":{"type":"integer","const":10}},"X-RateLimit-Remaining":{"description":"Remaining daily checks after this admission; zero on daily exhaustion.","schema":{"type":"integer","minimum":0,"maximum":9}},"X-RateLimit-Reset":{"description":"Next UTC midnight as Unix epoch seconds.","schema":{"type":"integer","minimum":0}},"Retry-After":{"description":"Seconds until the UTC reset, or 60 seconds for burst rejection.","required":true,"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Missing trusted edge/configuration evidence, admission-store failure or assessment failure. Fails closed; an already admitted assessment failure can consume one daily check.","headers":{"X-RateLimit-Limit":{"description":"Daily allowance; present after daily admission is assessed.","schema":{"type":"integer","const":10}},"X-RateLimit-Remaining":{"description":"Remaining daily checks after this admission; zero on daily exhaustion.","schema":{"type":"integer","minimum":0,"maximum":9}},"X-RateLimit-Reset":{"description":"Next UTC midnight as Unix epoch seconds.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/request-check":{"get":{"operationId":"checkIncomingRequest","summary":"Assess the actual request arriving at this endpoint","description":"Shares the daily allowance. Returns independent lexical declarations, reader category/reason, navigation and form claims, network context and local/native signature evidence. No JSON header bag is accepted, and no raw IP, raw User-Agent or arbitrary request headers are echoed or persisted by this assessment. The endpoint cannot inspect requests arriving at another site. The browser button sends a fetch request; navigating to this URL sends a navigation request with potentially different evidence.","responses":{"200":{"description":"Versioned evidence for this received request and its remaining quota.","headers":{"X-RateLimit-Limit":{"description":"Daily allowance; present after daily admission is assessed.","schema":{"type":"integer","const":10}},"X-RateLimit-Remaining":{"description":"Remaining daily checks after this admission; zero on daily exhaustion.","schema":{"type":"integer","minimum":0,"maximum":9}},"X-RateLimit-Reset":{"description":"Next UTC midnight as Unix epoch seconds.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestCheckResponse"}}}},"403":{"description":"Cross-origin browser request rejected. Browser calls must use this origin; server clients may omit Origin.","headers":{"X-RateLimit-Limit":{"description":"Daily allowance; present after daily admission is assessed.","schema":{"type":"integer","const":10}},"X-RateLimit-Remaining":{"description":"Remaining daily checks after this admission; zero on daily exhaustion.","schema":{"type":"integer","minimum":0,"maximum":9}},"X-RateLimit-Reset":{"description":"Next UTC midnight as Unix epoch seconds.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Unsupported method; use the operation documented for this path.","headers":{"Allow":{"description":"Supported method for this path.","required":true,"schema":{"type":"string","enum":["GET","POST"]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"User-Agent exceeds the 8192-character request-assessment input limit.","headers":{"X-RateLimit-Limit":{"description":"Daily allowance; present after daily admission is assessed.","schema":{"type":"integer","const":10}},"X-RateLimit-Remaining":{"description":"Remaining daily checks after this admission; zero on daily exhaustion.","schema":{"type":"integer","minimum":0,"maximum":9}},"X-RateLimit-Reset":{"description":"Next UTC midnight as Unix epoch seconds.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Daily or short-burst allowance exhausted. Daily quota fields are present for daily exhaustion; burst rejection occurs before daily admission.","headers":{"X-RateLimit-Limit":{"description":"Daily allowance; present after daily admission is assessed.","schema":{"type":"integer","const":10}},"X-RateLimit-Remaining":{"description":"Remaining daily checks after this admission; zero on daily exhaustion.","schema":{"type":"integer","minimum":0,"maximum":9}},"X-RateLimit-Reset":{"description":"Next UTC midnight as Unix epoch seconds.","schema":{"type":"integer","minimum":0}},"Retry-After":{"description":"Seconds until the UTC reset, or 60 seconds for burst rejection.","required":true,"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Missing trusted edge/configuration evidence, admission-store failure or assessment failure. Fails closed; an already admitted assessment failure can consume one daily check.","headers":{"X-RateLimit-Limit":{"description":"Daily allowance; present after daily admission is assessed.","schema":{"type":"integer","const":10}},"X-RateLimit-Remaining":{"description":"Remaining daily checks after this admission; zero on daily exhaustion.","schema":{"type":"integer","minimum":0,"maximum":9}},"X-RateLimit-Reset":{"description":"Next UTC midnight as Unix epoch seconds.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/ai-check/schema":{"get":{"operationId":"getAiCheckSchema","summary":"Read this OpenAPI contract without consuming a check","responses":{"200":{"description":"OpenAPI 3.1 document.","content":{"application/json":{"schema":{"type":"object"}}}},"405":{"description":"Unsupported method; use the operation documented for this path.","headers":{"Allow":{"description":"Supported method for this path.","required":true,"schema":{"type":"string","enum":["GET","POST"]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Quota":{"type":"object","additionalProperties":false,"required":["limit","remaining","resetAt"],"properties":{"limit":{"const":10},"remaining":{"type":"integer","minimum":0,"maximum":9},"resetAt":{"type":"string","format":"date-time"}},"description":"Daily admission state. Address sharing is possible; this is not an identified-person quota."},"Error":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"},"quota":{"$ref":"#/components/schemas/Quota"},"schema":{"type":"string","const":"/api/ai-check/schema"}},"description":"Closed error message. Quota is included only after daily admission is assessed; schema is an optional contract link."},"SiteCheckResponse":{"type":"object","additionalProperties":false,"required":["report","quota"],"properties":{"report":{"$ref":"#/components/schemas/SiteAuditReport"},"quota":{"$ref":"#/components/schemas/Quota"}}},"RequestCheckResponse":{"type":"object","additionalProperties":false,"required":["request","quota"],"properties":{"request":{"$ref":"#/components/schemas/RequestAssessment"},"quota":{"$ref":"#/components/schemas/Quota"}}},"SiteAuditReport":{"type":"object","additionalProperties":false,"required":["version","checkedAt","target","complete","resources","page","robots","discovery","findings","limits"],"properties":{"version":{"const":"2026-11-06.1"},"checkedAt":{"type":"string","format":"date-time"},"target":{"type":"string","format":"uri"},"complete":{"type":"boolean","description":"All planned resources were received and robots parsing/evaluation stayed within policy limits; does not mean every vendor policy is known, HTTP success, provider access or absence of findings."},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceEvidence"}},"page":{"$ref":"#/components/schemas/PageEvidence"},"robots":{"$ref":"#/components/schemas/RobotsEvidence"},"discovery":{"$ref":"#/components/schemas/DiscoveryEvidence"},"findings":{"type":"array","items":{"$ref":"#/components/schemas/Finding"}},"limits":{"type":"array","items":{"type":"string"}}}},"ResourceEvidence":{"type":"object","additionalProperties":false,"required":["kind","requestedUrl","finalUrl","outcome","status","contentType","bytes","elapsedMs","redirects","probeAgent","headers"],"properties":{"kind":{"type":"string","enum":["page","robots","llms","sitemap","markdown","probe"]},"requestedUrl":{"type":"string","format":"uri"},"finalUrl":{"type":"string","format":"uri"},"outcome":{"type":"string","enum":["received","blocked-target","dns-error","network-error","timeout","too-large","redirect-limit","budget-exhausted"]},"status":{"type":["integer","null"],"minimum":100,"maximum":599},"contentType":{"type":["string","null"]},"bytes":{"type":"integer","minimum":0},"elapsedMs":{"type":"number","minimum":0},"redirects":{"type":"integer","minimum":0},"probeAgent":{"type":["string","null"],"description":"Synthetic User-Agent product used by this checker, or null for ordinary resources. Never provider authentication."},"headers":{"type":"object","additionalProperties":false,"required":["robots","link","contentLocation","vary"],"properties":{"robots":{"type":["string","null"]},"link":{"type":["string","null"]},"contentLocation":{"type":["string","null"]},"vary":{"type":["string","null"]}},"description":"Selected bounded response headers: X-Robots-Tag, Link, Content-Location and Vary. Null means no value was captured."}}},"PageEvidence":{"type":"object","additionalProperties":false,"required":["title","description","canonical","language","textCharacters","headings","links","scriptElements","metaRobots","structuredDataTypes","structuredDataBlocks","invalidStructuredDataBlocks","alternateLinks","parseState"],"properties":{"title":{"type":["string","null"]},"description":{"type":["string","null"]},"canonical":{"type":["string","null"]},"language":{"type":["string","null"]},"textCharacters":{"type":"integer","minimum":0},"headings":{"type":"integer","minimum":0},"links":{"type":"integer","minimum":0},"scriptElements":{"type":"integer","minimum":0},"metaRobots":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["agent","value"],"properties":{"agent":{"type":"string"},"value":{"type":"string"}}}},"structuredDataTypes":{"type":"array","items":{"type":"string"}},"structuredDataBlocks":{"type":"integer","minimum":0},"invalidStructuredDataBlocks":{"type":"integer","minimum":0},"alternateLinks":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["type","href"],"properties":{"type":{"type":"string"},"href":{"type":"string"}}}},"parseState":{"type":"string","enum":["parsed","not-html","unavailable"]}},"description":"Observations from initial HTML only. Canonical/alternate href values are untrusted claims. JSON-LD observations do not establish schema validity or rich-result eligibility."},"RobotsEvidence":{"type":"object","additionalProperties":false,"required":["state","groups","rules","sitemaps","bots"],"properties":{"state":{"type":"string","enum":["parsed","missing","unreachable","unavailable"]},"groups":{"type":"integer","minimum":0},"rules":{"type":"integer","minimum":0},"sitemaps":{"type":"array","items":{"type":"string"}},"bots":{"type":"array","items":{"$ref":"#/components/schemas/BotRuleAssessment"}}}},"BotRuleAssessment":{"type":"object","additionalProperties":false,"required":["token","provider","role","source","decision","matchedGroups","matchedRule","reason"],"properties":{"token":{"type":"string"},"provider":{"type":"string"},"role":{"type":"string","enum":["training-control","search","assistant","other"]},"source":{"type":"string","format":"uri"},"decision":{"type":"string","enum":["allowed","disallowed","unknown"]},"matchedGroups":{"type":"array","items":{"type":"string"}},"matchedRule":{"type":["string","null"]},"reason":{"type":"string"}},"description":"Path-policy evaluation for a reviewed product token. Provider labels/source documents are catalogue context; neither policy nor a copied declaration authenticates a request."},"DiscoveryEvidence":{"type":"object","additionalProperties":false,"required":["llms","llmsLinks","sitemap","markdown"],"properties":{"llms":{"type":"string","enum":["present","missing","unavailable"]},"llmsLinks":{"type":"integer","minimum":0},"sitemap":{"type":"string","enum":["xml-observed","missing","unavailable","unexpected-content"]},"markdown":{"type":"string","enum":["negotiated","not-negotiated","unavailable"]}},"description":"Optional discovery and representation observations. Presence does not prove indexing, ranking, citations or endpoint behavior."},"Finding":{"type":"object","additionalProperties":false,"required":["id","severity","title","evidence","recommendation"],"properties":{"id":{"type":"string"},"severity":{"type":"string","enum":["action","review","info"]},"title":{"type":"string"},"evidence":{"type":"string"},"recommendation":{"type":"string"}}},"RequestAssessment":{"type":"object","additionalProperties":false,"required":["version","checkedAt","provenance","classification","evidence","clientForm","network","signature","limits"],"properties":{"version":{"const":"2026-11-06.2"},"checkedAt":{"type":"string","format":"date-time"},"provenance":{"const":"incoming-request"},"classification":{"type":"object","additionalProperties":false,"required":["trafficClass","readerKind","reason"],"properties":{"trafficClass":{"type":"string","enum":["browser","bot","ai"]},"readerKind":{"type":"string","enum":["signed-agent","ai-assistant","ai-search","ai-crawler","search-crawler","seo-crawler","preview-or-feed","headless-browser","other-bot","cloud-browser","http-client","legacy-browser","browser","unresolved"]},"reason":{"type":"string"}}},"evidence":{"$ref":"#/components/schemas/ClassificationEvidence"},"clientForm":{"$ref":"#/components/schemas/ClientFormEvidence"},"network":{"type":"object","additionalProperties":false,"required":["asn","vendorNetwork"],"properties":{"asn":{"type":["integer","null"],"minimum":1,"maximum":4294967294},"vendorNetwork":{"$ref":"#/components/schemas/VendorNetworkEvidence"}}},"signature":{"$ref":"#/components/schemas/SignatureEvidence"},"limits":{"type":"array","items":{"type":"string"}}},"description":"Current-request assessment; declarations, network, local verification and native provider evidence remain independent. Raw request headers and addresses are not returned."},"ClassificationEvidence":{"type":"object","description":"Closed derived facts under the reported classifierProfile and evidence version. Bit fields retain separately versioned encodings; missing evidence is not a negative identity result.","additionalProperties":true,"required":["version","classifierProfile","declarations","declaredCategoryBits","fetchMetadataBits","categoryAgreement","network","navigationShaped","activation","referrerContext"],"properties":{"version":{"const":"2026-11-06.1"},"classifierProfile":{"type":"string"},"declarations":{"type":"object","additionalProperties":false,"required":["status","candidates","browserFamily","productProfile","matchedProductBits"],"properties":{"status":{"type":"string","enum":["none","single","multiple"]},"candidates":{"type":"array","items":{"type":"string"}},"browserFamily":{"type":"string","enum":["chromium","firefox","webkit","unrecognized"]},"productProfile":{"const":"2026-11-06.1"},"matchedProductBits":{"type":"string","minLength":1,"maxLength":19,"pattern":"^(?:0|[1-9a-f][0-9a-f]{0,17}|[1-3][0-9a-f]{18})$","description":"Canonical minimal lowercase hexadecimal bitset, at most 74 bits. Decode with retainedMatchedProducts from @gkoreli/analytics/retained-client-products; the immutable RETAINED_CLIENT_PRODUCTS_20261106 alias order belongs to productProfile, independently of the live registry. Unknown profiles or malformed encodings are unavailable evidence."}}},"declaredCategoryBits":{"type":"integer","minimum":0},"fetchMetadataBits":{"type":"integer","minimum":0},"categoryAgreement":{"type":"string","enum":["no-match","single-match","multiple-same-category","multiple-categories"]},"network":{"type":"string","enum":["missing","hosting-listed","archiver-listed","not-listed"]},"navigationShaped":{"type":"boolean"},"activation":{"type":"string","enum":["true-claim","absent","other-value","invalid","policy-limit","not-assessed"]},"referrerContext":{"type":"string","enum":["external-with-same-origin","no-conflict-observed","not-assessed"]}}},"ClientFormEvidence":{"type":"object","additionalProperties":false,"required":["profile","form","markers","browserFamily","mobileHint","comparison","legacyCompatibility"],"properties":{"profile":{"type":"string"},"form":{"type":"string","enum":["mobile-marker","tablet-marker","conflicting-markers","mobile-preference","non-mobile-preference","no-form-marker","unknown"]},"markers":{"type":"array","items":{"type":"string","enum":["Mobile","iPhone","iPod","IEMobile","iPad","Tablet","PlayBook"]}},"browserFamily":{"type":"string","enum":["chromium","firefox","webkit","unrecognized"]},"mobileHint":{"type":"string","enum":["mobile","non-mobile","absent","unsupported"]},"comparison":{"type":"string","enum":["aligned-mobile","different-indicators","not-comparable"]},"legacyCompatibility":{"type":"object","additionalProperties":false,"required":["value","defaulted"],"properties":{"value":{"type":"string","enum":["desktop","mobile","tablet"]},"defaulted":{"type":"boolean"}},"description":"Deprecated compatibility label, not identified hardware."}},"description":"Claims already sent in the request; no active device probe or high-entropy client-hint request."},"VendorNetworkEvidence":{"type":"object","description":"Published client-specific IP-feed membership, independent from ASN list context and signatures. No reader address is returned. Feed freshness and failure semantics are versioned by profile.","additionalProperties":true,"required":["profile","method","source","checkedAt","address","declarationCount","configuredDeclarationCount","unmappedDeclarationCount","summary","checks"],"properties":{"profile":{"type":"string"},"method":{"const":"published-ip-feed"},"source":{"const":"local-vendor-ip"},"checkedAt":{"type":"string","format":"date-time"},"address":{"type":"object","additionalProperties":false,"required":["state","header","family"],"properties":{"state":{"type":"string","enum":["usable","missing","invalid","special-range","worker-subrequest","edge-context-unavailable"]},"header":{"enum":["cf-connecting-ip","cf-connecting-ipv6",null]},"family":{"enum":["ipv4","ipv6",null]}}},"declarationCount":{"type":"integer","minimum":0},"configuredDeclarationCount":{"type":"integer","minimum":0},"unmappedDeclarationCount":{"type":"integer","minimum":0},"summary":{"type":"object","additionalProperties":false,"required":["listed","notListed","unavailable","notAssessed"],"properties":{"listed":{"type":"boolean"},"notListed":{"type":"boolean"},"unavailable":{"type":"boolean"},"notAssessed":{"type":"boolean"}}},"checks":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["source","outcome","reason","snapshot","cache"],"properties":{"source":{"type":"string"},"outcome":{"type":"string","enum":["listed","not-listed","unavailable","not-assessed"]},"reason":{"type":["string","null"]},"snapshot":{"anyOf":[{"$ref":"#/components/schemas/FeedSnapshot"},{"type":"null"}]},"cache":{"anyOf":[{"type":"object","description":"Versioned cache-access and policy facts, not current reader identity.","additionalProperties":true,"required":["access","policy"],"properties":{"access":{"type":"string","enum":["fetched","revalidated","memory","coalesced","cooldown","failed"]},"policy":{"type":["object","null"],"additionalProperties":true}}},{"type":"null"}]}}}}}},"FeedSnapshot":{"type":"object","additionalProperties":false,"required":["sha256","fetchedAt","validatedAt","freshUntil","publisherVersion","prefixCount"],"properties":{"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"fetchedAt":{"type":"string","format":"date-time"},"validatedAt":{"type":"string","format":"date-time"},"freshUntil":{"type":"string","format":"date-time"},"publisherVersion":{"type":["string","null"]},"prefixCount":{"type":"integer","minimum":0}}},"SignatureEvidence":{"type":"object","description":"Local verification outcome under verifierProfile, plus separately sourced native and vendor-method evidence. test-injected has no production coverage/profile claim. A verified publisher may leave the User-Agent unsigned. Replay policy is expiry-only.","additionalProperties":true,"required":["version","source","verifierProfile","localStatus","localReason","localReasons","localOutcome","signer","vendor","directoryPublication","coverage","native"],"properties":{"version":{"type":"string"},"source":{"type":"string","enum":["local-webbotauth","test-injected"]},"verifierProfile":{"type":["string","null"]},"signerDisplayProfile":{"type":"string"},"localStatus":{"type":"string","enum":["verified","unverified","absent"]},"localReason":{"type":["string","null"]},"localReasons":{"type":"array","items":{"type":"string"}},"localOutcome":{"type":"string","enum":["verified","absent","test-injected","invalid","unsupported","unavailable","policy-rejected","not-applicable","indeterminate"]},"signer":{"type":["string","null"],"description":"Reviewed public display label for a verified publisher; not a raw signer URI or the declared software identity."},"vendor":{"type":"object","description":"Per-client documented signing-method assessment, independent from the local cryptographic verdict.","additionalProperties":true,"required":["profile","method","documentedDeclarationCount","unmappedDeclarationCount","expectedOriginCount","matchingDeclarationCount","differentOriginDeclarationCount","status","userAgentCovered"],"properties":{"profile":{"type":"string"},"method":{"const":"documented-signing-origin"},"documentedDeclarationCount":{"type":"integer","minimum":0},"unmappedDeclarationCount":{"type":"integer","minimum":0},"expectedOriginCount":{"type":"integer","minimum":0},"matchingDeclarationCount":{"type":["integer","null"],"minimum":0},"differentOriginDeclarationCount":{"type":["integer","null"],"minimum":0},"status":{"type":"string","enum":["no-declaration","not-configured","not-verified","matching-origin","different-origin","conflicting-origins","test-injected"]},"userAgentCovered":{"type":["boolean","null"]}}},"directoryPublication":{"type":"object","description":"Reviewed publisher-directory publication assessment. Publication does not by itself prove key possession.","additionalProperties":true,"required":["profile","method","reviewedOn","configuredDeclarationCount","unmappedDeclarationCount","status"],"properties":{"profile":{"type":"string"},"method":{"const":"reviewed-first-party-directory"},"reviewedOn":{"type":"string","format":"date"},"configuredDeclarationCount":{"type":"integer","minimum":0},"unmappedDeclarationCount":{"type":"integer","minimum":0},"status":{"type":"string","enum":["no-declaration","not-configured","not-verified","matching-publisher","different-publisher","partial-mapping","conflicting-publishers","test-injected"]}}},"coverage":{"anyOf":[{"$ref":"#/components/schemas/SignatureCoverage"},{"type":"null"}]},"native":{"type":"object","additionalProperties":false,"required":["verifiedBot","signedAgent","category"],"properties":{"verifiedBot":{"type":["boolean","null"]},"signedAgent":{"type":["boolean","null"]},"category":{"type":"object","additionalProperties":false,"required":["version","status","value"],"properties":{"version":{"type":"string"},"status":{"type":"string","enum":["known","empty","unavailable","unrecognized"]},"value":{"type":["string","null"]}}}},"description":"Available request.cf fields, independently supplied by Cloudflare. Null does not mean false."}}},"SignatureCoverage":{"type":"object","description":"Components covered by the selected locally verified proof. Coverage is not content use or human-trigger evidence. contentDigest records signed header coverage, not comparison with a body.","additionalProperties":true,"required":["version","headerForm","covered","otherComponentCount","validitySeconds","ageSeconds","replayPolicy"],"properties":{"version":{"type":"string"},"headerForm":{"type":"string","enum":["dictionary","legacy-string","bare-uri"]},"covered":{"type":"object","additionalProperties":false,"required":["authority","targetUri","method","path","query","userAgent","contentDigest"],"properties":{"authority":{"type":"boolean"},"targetUri":{"type":"boolean"},"method":{"type":"boolean"},"path":{"type":"boolean"},"query":{"type":"boolean"},"userAgent":{"type":"boolean"},"contentDigest":{"type":"boolean"}}},"otherComponentCount":{"type":"integer","minimum":0},"validitySeconds":{"type":"number"},"ageSeconds":{"type":"number"},"replayPolicy":{"const":"expiry-only"},"selection":{"type":"object","additionalProperties":false,"required":["policy","matchedCandidates","taggedCandidates","attemptedCandidates","unassessedCandidates"],"properties":{"policy":{"const":"first-valid-in-input-order"},"matchedCandidates":{"type":"integer","minimum":0},"taggedCandidates":{"type":"integer","minimum":0},"attemptedCandidates":{"type":"integer","minimum":0},"unassessedCandidates":{"type":"integer","minimum":0}}}}}}}}