Door
Reference
Every path the door answers, rendered from the document it publishes at build and refresh time: never a second, hand-kept copy of the same facts.
partner
GET /partner/v1/fighters/search
Resolve a fighter: up to 10 candidates with a confidence band and the anchors that matched
Parameters
| Name | In | Required | Type |
|---|---|---|---|
| name | query | Required | string |
| hometown | query | Optional | string |
| division | query | Optional | string |
| discipline | query | Optional | string (enum) |
Responses
200 OK
Response schema
response object (SearchResponse)
- asOf string (date-time)
sources array
item object (PartnerSource)
- key string
- name string
- country string
- region string
- notice string
query object
- name string
- hometown string
- division string
- discipline string
candidates array
item object (SearchCandidate)
- id string (uuid)
- slug string
- name string
- hometown object (Hometown)
disciplines array
- item string
commissions array
- item string
- boutsOnFile integer
- lastBoutDate string (date)
- confidence string
matched array
- item string
401 No key, malformed, unknown or revoked key
Response schema
403 Scope missing or partner suspended
Response schema
429 Per-minute limit or monthly quota reached; honour Retry-After
Response schema
GET /partner/v1/claimed/lookup
Batched lookup of claimed subjects by name-hash prefix or kind:handle pair (up to 200 of each): the record-level flag, the name and the page link
A client never sends a name: it sends the first 5 hex characters of sha256 of the folded display name in `p`, and/or `kind:handle` pairs in `h`, and matches the full hash locally. At least one of the two is required; each takes up to 200 items on a key (the tier is the only difference from the public route). `matches` holds only published, offerable subjects; `handles` echoes the asked pairs IN ORDER, with `found: false` byte-identical for an unknown, an unpublished, a taken-down, a reserved and an ill-shaped handle. A keyed answer is nobody's page: the class guard marks it private and not to be stored (the PUBLIC route at `/claimed/lookup` is the one a shared cache may keep, for 60 seconds). A store that cannot answer is a 503 for the WHOLE answer: an outage is never read as an absent record.
Parameters
| Name | In | Required | Type |
|---|---|---|---|
| h | query | Optional | string |
| p | query | Optional | string |
Responses
200 OK
Response schema
response object (ClaimedLookupView)
- prefixLength integer
matches array
item object (ClaimedLookupMatch)
- hash string
- kind string
- handle string
- displayName string
- url string
- recordStatus object (ClaimedRecordStatus)
handles array
item object (ClaimedLookupHandle)
- kind string
- handle string
- found boolean
- displayName string
- url string
recordStatus object
- status string
- label string
- lastReviewed string (date-time)
- document object
- checkedAt string (date-time)
400 Give hash prefixes of five hex characters, or kind:handle pairs, within the batch size of your tier.
Response schema
401 No key, malformed, unknown or revoked key
Response schema
403 Scope missing or partner suspended
Response schema
429 Per-minute limit or monthly quota reached; honour Retry-After
Response schema
503 The store could not answer. The WHOLE answer is 503 — never a partial list and never an empty `matches`.
Response schema
GET /partner/v1/fighters/{id}
Identity + the verified record (and the reported grade when released), never summed; with the signed record-status link
Parameters
| Name | In | Required | Type |
|---|---|---|---|
| id | path | Required | string |
| cursor | query | Optional | string |
Responses
200 OK
Response schema
response object (FighterRecordResponse)
- asOf string (date-time)
sources array
item object (PartnerSource)
- key string
- name string
- country string
- region string
- notice string
fighter object
- id string (uuid)
- slug string
- pagePath string
- name string
aliases array
- item string
hometown object (Hometown)
- city string
- region string
- country string
division object
- value string
- publisher string
disciplines array
- item string
- claimedHandle string
record object
status object
- status string
- label string
- lastReviewed string (date-time)
document object
- url string
- sha256 string
verified object
tally object (VerifiedTally)
- wins integer
- losses integer
- draws integer
- nc integer
- onFileFrom string (date)
- label string
- bouts integer
bouts array
- item object (VerifiedBout)
- nextCursor string
reported object
- count integer
bouts array
- item object (ReportedBout)
statusLink object
- slug string
- fighterId string (uuid)
recordStatus object (RecordStatusFlag)
- status string
- label string
- lastReviewed string (date-time)
- document object
- token string
- expiresAt string (date-time)
- pageUrl string
- badgePath string
- vocabulary string
401 No key, malformed, unknown or revoked key
Response schema
403 Scope missing or partner suspended
Response schema
429 Per-minute limit or monthly quota reached; honour Retry-After
Response schema
GET /partner/v1/fighters/{id}/bouts
The next page of verified bouts (cursor, ≤ 50)
Parameters
| Name | In | Required | Type |
|---|---|---|---|
| id | path | Required | string |
| cursor | query | Optional | string |
Responses
200 OK
Response schema
response object (BoutsPageResponse)
- asOf string (date-time)
sources array
item object (PartnerSource)
- key string
- name string
- country string
- region string
- notice string
- fighterId string
bouts array
item object (VerifiedBout)
- date string (date)
opponent object
- id string
- slug string
- name string
- result string
- method string
rounds object
- ended integer
- discipline string
- amateur boolean
- commission string
event object
- name string
- city string
- region string
- date string (date)
document object
- url string
- sha256 string
recordStatus object
- status string
- label string
- lastReviewed string (date-time)
- document object
- nextCursor string
401 No key, malformed, unknown or revoked key
Response schema
403 Scope missing or partner suspended
Response schema
429 Per-minute limit or monthly quota reached; honour Retry-After
Response schema
GET /partner/v1/fighters/{id}/clearance
What our sources say: suspensions on file, last bout, coverage, and a state — facts, not advice
Parameters
| Name | In | Required | Type |
|---|---|---|---|
| id | path | Required | string |
| region | query | Optional | string |
Responses
200 OK
Response schema
response object (ClearanceResponse)
- asOf string (date-time)
sources array
item object (PartnerSource)
- key string
- name string
- country string
- region string
- notice string
- fighterId string
- state string
suspensions array
item object (Suspension)
- until string (date)
- reasonAsPrinted string
- commission string
sourceDocument object
- url string
- sha256 string
- readAt string (date-time)
bout object
- date string (date)
- opponentName string
- current boolean
lastBout object
- date string
- result string
- method string
- commission string
- daysSinceLastBout integer
- koLossWithin90Days boolean
coverage array
item object (CoverageRow)
- key string
- name string
- country string
- region string
- earliest string (date)
- latest string (date)
- bouts integer
regionAsked object
- region string
- covered boolean
recordStatus object
- status string
- label string
- lastReviewed string (date-time)
document object
- url string
- sha256 string
401 No key, malformed, unknown or revoked key
Response schema
403 Scope missing or partner suspended
Response schema
429 Per-minute limit or monthly quota reached; honour Retry-After
Response schema
GET /partner/v1/providers/{npi}/clearance
What NPPES and OIG LEIE say about a provider: exclusions on file, name-only candidates, and deactivation — facts, not advice
Parameters
| Name | In | Required | Type |
|---|---|---|---|
| npi | path | Required | string |
Responses
200 OK
Response schema
response object (ProviderClearanceResponse)
- asOf string (date-time)
sources array
item object (PartnerSource)
- key string
- name string
- country string
- region string
- notice string
- npi string
excluded oneOf
- option 1 boolean
- option 2 string
- deactivated boolean
exclusions array
item object (ProviderExclusion)
- grade string
- lastName string
- firstName string
- middleName string
- businessName string
- general string
- specialty string
- npi string
- city string
- state string
- zip string
- exclusionType string
- exclusionDate string (date)
- reinstatementDate string (date)
- waiverDate string (date)
- waiverState string
possibleExclusions array
item object (ProviderPossibleExclusion)
- grade string
- lastName string
- firstName string
- middleName string
- businessName string
- general string
- specialty string
- npi string
- city string
- state string
- zip string
- exclusionType string
- exclusionDate string (date)
- reinstatementDate string (date)
- waiverDate string (date)
- waiverState string
- note string
- listDate string (date)
provenance array
item object (ProviderProvenance)
- issuer string
- fileName string
- sha256 string
- publishedAt string (date)
receipt object (ClearanceReceipt)
- id string (uuid)
- issuedAt string (date-time)
- digest string
401 No key, malformed, unknown or revoked key
Response schema
403 Scope missing or partner suspended
Response schema
404 No provider with this NPI on file, an NPI that is not 10 Luhn-valid digits, or the route is not yet open. A bare 404, no body.
Response schema
429 Per-minute limit or monthly quota reached; honour Retry-After
Response schema
503 The register could not be read right now. Retry later; an outage is never read as a clean answer.
Response schema
POST /partner/v1/bouts
Submit a made bout (idempotent on partnerRef); stored as a partner-graded row, never in the verified record
Responses
201 OK
Response schema
response object (IntakeResponse)
- asOf string (date-time)
sources array
item object (PartnerSource)
- key string
- name string
- country string
- region string
- notice string
- id string
- partnerRef string
- status string
corners object
- a string
- b string
- outcome string
matched object
- boutId string
- leadDays integer
- evidenceHash string
401 No key, malformed, unknown or revoked key
Response schema
403 Scope missing or partner suspended
Response schema
429 Per-minute limit or monthly quota reached; honour Retry-After
Response schema
GET /partner/v1/usage
The caller's own budgets and this month's usage
Responses
200 OK
Response schema
response object (UsageResponse)
- asOf string (date-time)
sources array
item object (PartnerSource)
- key string
- name string
- country string
- region string
- notice string
key object
- prefix string
- sandbox boolean
scopes array
- item string
partner object
- name string
- status string
budgets object
- perMinute integer
- monthlyQuota integer
- global boolean
usage object
- month string
- calls integer
- errors integer
byRoute array
item object
- route string
- calls integer
- errors integer
401 No key, malformed, unknown or revoked key
Response schema
403 Scope missing or partner suspended
Response schema
429 Per-minute limit or monthly quota reached; honour Retry-After
Response schema
corpora
GET /corpora
The open registry of record corpora: kind, description, search hint, an id example and what each kind holds, visible kinds only
Responses
200 OK
Response schema
response object (CorporaListResponse)
corpora array
item object (CorpusDescription)
- kind string
- description string
- searchHint string
- idExample string
- noun string
- count integer
- exact boolean
- countWords string
- since string
- updatedAt string
- homeUrl string
- browseUrl string
gap object
- kind string
- risk object
- correction object
- asOf string
GET /corpora/gap
The per-corpus scatter-risk and correction index, plus the rulings file that produced it — per CORPUS, never per record or subject
Responses
200 OK
Response schema
response object (CorporaGapResponse)
- asOf string
- rulings object
formula object
- risk string
- achieved string
- achievable string
kinds array
item object (GapIndex)
- kind string
risk object
- level string
- severity integer
- weight number
- keepers integer
- bucket integer
- value number
correction object
- achievable number
- achieved number
- loadedShare number
- publishableShare number
- joined boolean
- rail boolean
- asOf string
503 Gap index temporarily unavailable.
Response schema
GET /corpora/{kind}/keys
Per-corpus keyset key discovery — every key a kind holds, paged, for a sitemap or an IndexNow walk
`after` is the last key already read (absent = from the start); `limit` defaults to 1000 and clamps at 5000 (a non-integer or a value under 1 is a 400). A kind with no keyset discovery of its own answers a typed 501.
Parameters
| Name | In | Required | Type |
|---|---|---|---|
| kind | path | Required | string |
| limit | query | Optional | integer |
| after | query | Optional | string |
Responses
200 OK
Response schema
response object (CorpusKeysPage)
keys array
item object
- key string
- updatedAt string (date-time)
- next string
400 limit must be a positive integer.
Response schema
404 No such kind. GET corpora lists them.
Response schema
501 This kind has no keyset key discovery: { unsupported: true, kind } — never a 500.
Response schema
503 Lookup temporarily unavailable.
Response schema
GET /corpora/{kind}/sources
Every stored source file for a kind's register, newest first — the manifest behind each fetch
`limit` defaults to 50 and clamps at 200 (a non-integer or a value under 1 is a 400). A kind with no source listing of its own answers a typed 501.
Parameters
| Name | In | Required | Type |
|---|---|---|---|
| kind | path | Required | string |
| limit | query | Optional | integer |
Responses
200 OK
Response schema
response object (CorpusSourcesPage)
- kind string
sources array
item object (SourceManifest)
- register string
- publisher string
- homeUrl string
- sourceUrl string
- fileName string
- sha256 string
- bytes integer
- publishedAt string
- fetchedAt string
- terms object (RecordProvenanceTerms)
- retained boolean
- retainedAt string (date-time)
- staleAfter string (date-time)
- supersedingPending boolean
400 limit must be a positive integer.
Response schema
404 No such kind. GET corpora lists them.
Response schema
501 This kind has no source listing: { unsupported: true, kind } — never a 500.
Response schema
503 Lookup temporarily unavailable.
Response schema
records
GET /records/search
Search every visible corpus, grouped and faceted — the REST answer the web reads
A query under 3 code points answers an empty list (no adapter is called); over 200 is a 400. `kind`, when given, must be a kind `GET corpora` lists (a visible kind) or the answer is a 404. The search order is the same as the MCP connector's `search` tool on the public tier, for the same query; this document additionally carries each result's `kind` and, where the adapter has one, a one-line `meta`, plus per-kind `facets` — the MCP tool's own bytes are unchanged.
Parameters
| Name | In | Required | Type |
|---|---|---|---|
| kind | query | Optional | string |
| q | query | Optional | string |
Responses
200 OK
Response schema
response object (RecordsSearchDocument)
results array
item object (RecordsSearchResult)
- id string
- title string
- url string
- kind string
- meta string
- notice string
facets array
item object (RecordsSearchFacet)
- kind string
- hits integer
- cap integer
400 Give a search of at most 200 characters.
Response schema
404 No such kind. GET corpora lists them.
Response schema
503 Lookup temporarily unavailable.
Response schema
GET /records/answer
A plain-language answer composed and walled over the visible corpora — the record, in a sentence
A query under 3 code points answers an idle document (no build, no call); over 200 is a 400. `kind`, when given, must be a kind `GET corpora` lists (a visible kind) or the answer is a 404. Every sentence carries the record ids it rests on; a code checker drops anything the cited records did not print before this document is ever built — the model is a renderer, never a source; what the register does NOT hold is stated by the service, never the model. `unavailable` (a spent budget, a resting renderer, or part of the register that could not be read) still carries the grouped evidence, so the web's list of records renders regardless.
Parameters
| Name | In | Required | Type |
|---|---|---|---|
| kind | query | Optional | string |
| q | query | Optional | string |
Responses
200 OK
Response schema
response object (AnswerDocument)
- query string
- state string
sentences array
item object (AnswerSentence)
- text string
ids array
- item string
notFound array
- item string
holdings array
item object (AnswerHolding)
- kind string
- noun string
- countWords string
renderer object
- provider string
- model string
evidenceIds array
- item string
evidence array
item object (AnswerEvidence)
- id string
- kind string
- title string
- url string
- grade string
unavailable object
- reason string
- sentence string
- cached boolean
checker object
- rendered integer
- rejected integer
400 Give a search of at most 200 characters.
Response schema
404 No such kind. GET corpora lists them.
Response schema
503 Lookup temporarily unavailable.
Response schema
GET /records/{id}
One record by an id `GET records/search` returned — the same answer the MCP connector's `fetch` tool gives, as REST
The id is `<kind>:<ref>`; a ref may itself carry `/` (present raw or percent-encoded, both open the same record). An ill-shaped or dark-kind id is a 400 naming the visible kinds; an unknown id is a 404 in the adapter's own words.
Parameters
| Name | In | Required | Type |
|---|---|---|---|
| id | path | Required | string |
| accept | header | Optional | string |
| view | query | Optional | string (enum) |
Responses
200 OK — ConnectorDocument (the plain document) when ?view is absent or not "fields"/"provenance"; RecordFieldsView when ?view=fields; RecordProvenanceView (the verify door) when ?view=provenance. On ?view=provenance, an Accept header naming application/vnd.pansofica.receipt+json answers that Content-Type instead of the default application/json.
Response schema
response oneOf
option 1 object (ConnectorDocument)
- id string
- title string
- text string
- url string
metadata object
- kind string
option 2 object (RecordFieldsView)
- id string
- kind string
- key string
- title string
- url string
- status string
- citeAs string
fields array
item object (RecordViewField)
- label string
- value string
- grade string
provenance object (RecordViewProvenance)
- register string
- publisher string
- homeUrl string
- fileName string
- sha256 string
bytes oneOf
- option 1 number
- option 2 string
- publishedAt string
- fetchedAt string
- terms string
- sourceUrl string
- retainedAt string (date-time)
- staleAfter string (date-time)
links array
item object (RecordViewLink)
- label string
- url string
option 3 object (RecordProvenanceView)
- id string
- kind string
- key string
- register string
- publisher string
- homeUrl string
- sourceUrl string
- fileName string
- sha256 string
- bytes integer
- publishedAt string
- fetchedAt string
terms object (RecordProvenanceTerms)
- text string
- url string
- readOn string
- retained boolean
- retainedAt string (date-time)
- staleAfter string (date-time)
- supersedingPending boolean
verify object
- method string
- command string
- download string
400 The registry's id-shape sentence, listing the visible kinds' id examples.
Response schema
404 The adapter's own not-found sentence
Response schema
501 ?view=fields or ?view=provenance on a kind whose adapter has no structured view / no verify door: { unsupported: true, id, kind } — never a 500.
Response schema
response object (RecordViewUnsupported)
- unsupported boolean
- id string
- kind string
503 Lookup temporarily unavailable.
Response schema
receipts
GET /receipts/spec
The Receipt Specification v1 schema door
version the receipt object itself never carries; schema the emitted JSON Schema (draft 2020-12) a validator reads directly; document the human-readable specification page.
Responses
200 OK
Response schema
response object (ReceiptSpecDocument)
- version string
- schema object
- document string (uri)
POST /receipts/validate
Validate a receipt, by URL (fetched, bounded, guarded) or given inline
Exactly one of `url` or `receipt`. Checks: the Receipt Specification v1 schema; sha256 is 64 lowercase hex; every date is RFC 3339 or, where the spec allows it, a plain date; fetchedAt on or after publishedAt (warning); terms.text non-empty; for a `.receipt.json` sidecar URL, the named sourceUrl's Content-Length against bytes (warning). The validator never downloads the published file and stores nothing it is given or fetches.
Responses
200 OK
Response schema
response object (ReceiptValidationResponse)
- valid boolean
- version string
findings array
item object (ReceiptFinding)
- path string
- rule string
- message string
- severity string
checked object
- schema boolean
- hashRecomputed boolean
400 Neither or both of url/receipt were given, or the body is over 256 KB
Response schema
GET /receipts/mark/{register}.svg
A register's trust mark: an SVG badge naming its latest valid receipt
Answers an SVG badge reading "Receipted · YYYY-MM-DD" (the UTC date of the register's latest completed receipt's fetchedAt), with a second line "bytes kept" when that receipt has retained:true. A register with no valid receipt (unknown register, no rows, or an invalid manifest) answers 404, never a grey badge. `theme` is `light` or `dark` (default dark); any other value is a 400.
Parameters
| Name | In | Required | Type |
|---|---|---|---|
| register | path | Required | string |
| theme | query | Optional | string (enum) |
Responses
200 An SVG badge, cached one hour
Response schema
400 theme must be light or dark: { error: "invalid_theme" }
Response schema
404 Unknown register, or no valid receipt yet: { error: "no_valid_receipt", register }
Response schema
observatory
GET /observatory/refreshes
The refresh log: every source file this door has fetched, newest first — corpus and register only, never a subject or a person
`since` is an ISO lower bound on fetchedAt (a value that fails to parse is treated as absent). `kind` filters by the register’s own corpus kind (a kind no register declares answers an empty page). `limit` defaults to 100 and clamps at 500 (never a 400). `before` is the previous page’s own `next`, opaque; a malformed cursor is a 400.
Parameters
| Name | In | Required | Type |
|---|---|---|---|
| before | query | Optional | string |
| limit | query | Optional | integer |
| kind | query | Optional | string |
| since | query | Optional | string |
Responses
200 OK
Response schema
response object (ObservatoryRefreshesResponse)
items array
item object (ObservatoryRefreshItem)
- kind string
- register string
- fileName string
- fetchedAt string (date-time)
- publishedAt string (date-time)
- sha256 string
- bytes integer
- changed boolean
- retained boolean
- supersedingPending boolean
- next string
400 Malformed `before` cursor: `{ error }`.
Response schema
503 Refresh log temporarily unavailable.
Response schema
GET /observatory/corrections
The corrections log: flags, claims and disputes, by month and corpus kind — counts only, never an id, a subject or a person
`since` is a `YYYY-MM` lower bound (a value that fails to parse falls back to the default 12-month window). `kind` filters the merged rows by corpus kind. A `(month, kind)` row is included only when at least one count is non-zero.
Parameters
| Name | In | Required | Type |
|---|---|---|---|
| kind | query | Optional | string |
| since | query | Optional | string |
Responses
200 OK
Response schema
response object (ObservatoryCorrectionsResponse)
months array
item object (ObservatoryCorrectionsMonth)
- month string
- kind string
- flagsOpened integer
- flagsResolved integer
- claimsPublished integer
- disputesOpened integer
- disputesResolved integer
503 Corrections log temporarily unavailable.
Response schema
GET /observatory/state/latest
The newest frozen issue of The State of the Public Record
Served verbatim from the minted file — never recomputed. 404 when no issue has been minted yet.
Responses
200 OK
Response schema
response object (ObservatoryIssue)
- issue string
- issuedAt string (date-time)
- title string
methodology object
- gap string
- gapRulingsSha256 string
- refresh string
- corrections string
- catalog string
door object
- corpora integer
- records integer
gap object (CorporaGapResponse)
- asOf string
- rulings object
formula object
- risk string
- achieved string
- achievable string
kinds array
- item object (GapIndex)
catalogue object
- cataloged integer
- public integer
- loadedDark integer
- specWritten integer
- probed integer
- candidate integer
- refused integer
termsVerdicts object
- open integer
- non_commercial integer
- unknown integer
- refused integer
openedSince array
item object
- register string
- publisher string
- on string (date)
- status string
refresh object
- windowDays integer
last30d object
- runs integer
- changed integer
- unchanged integer
- bytesRetained integer
- registers integer
corrections object
- windowDays integer
last30d object
- flagsOpened integer
- flagsResolved integer
- claimsPublished integer
- disputesOpened integer
- disputesResolved integer
sources object
- gap string
- coverage string
- refreshes string
- corrections string
404 No issue has been minted yet: `{ error: "no issue" }`.
Response schema
GET /observatory/state/{issue}
One frozen issue of The State of the Public Record, by id
Served verbatim from the minted file — never recomputed. 404 when the id is not YYYY-MM, or no such issue was minted.
Parameters
| Name | In | Required | Type |
|---|---|---|---|
| issue | path | Required | string |
Responses
200 OK
Response schema
response object (ObservatoryIssue)
- issue string
- issuedAt string (date-time)
- title string
methodology object
- gap string
- gapRulingsSha256 string
- refresh string
- corrections string
- catalog string
door object
- corpora integer
- records integer
gap object (CorporaGapResponse)
- asOf string
- rulings object
formula object
- risk string
- achieved string
- achievable string
kinds array
- item object (GapIndex)
catalogue object
- cataloged integer
- public integer
- loadedDark integer
- specWritten integer
- probed integer
- candidate integer
- refused integer
termsVerdicts object
- open integer
- non_commercial integer
- unknown integer
- refused integer
openedSince array
item object
- register string
- publisher string
- on string (date)
- status string
refresh object
- windowDays integer
last30d object
- runs integer
- changed integer
- unchanged integer
- bytesRetained integer
- registers integer
corrections object
- windowDays integer
last30d object
- flagsOpened integer
- flagsResolved integer
- claimsPublished integer
- disputesOpened integer
- disputesResolved integer
sources object
- gap string
- coverage string
- refreshes string
- corrections string
404 Not YYYY-MM, or no such issue: `{ error: "unknown issue" }`.
Response schema
door
GET /door/status
The service's own self-measured availability: per-target availability and latency, corpus freshness, and incident runs
The service probes itself through the public load balancer every 5 minutes (leader node only) and records the result. Availability is a 0-100 percentage with two decimals, or null when a window held zero checks — never 100 by default. Latency percentiles are over the last 24h; incidents are runs of 2 or more consecutive failed checks over the last 30 days. The whole body is cached in-process for 60 seconds.
Responses
200 OK
Response schema
response object (DoorStatusResponse)
- asOf string (date-time)
targets object
corpora object (DoorTargetStatus)
- availability object (DoorTargetAvailability)
- latency object (DoorTargetLatency)
search object (DoorTargetStatus)
- availability object (DoorTargetAvailability)
- latency object (DoorTargetLatency)
provenance object (DoorTargetStatus)
- availability object (DoorTargetAvailability)
- latency object (DoorTargetLatency)
corpora array
item object (DoorCorpusStatus)
- kind string
- count integer
- updatedAt string (date-time)
- staleAfter string (date-time)
- fresh boolean
lastRefresh object
- at string (date-time)
- changed boolean
incidents array
item object (DoorIncident)
- from string (date-time)
- to string (date-time)
- target string
503 Status temporarily unavailable.
Response schema
GET /door/openapi
The Partner OpenAPI document, parsed, as JSON
The committed, generated docs/partner-api/openapi.yaml, parsed and served verbatim.
Responses
200 OK
Response schema
503 OpenAPI document temporarily unavailable.
Response schema
GET /door/changelog
The repo's own changelog, generated from every merge note, newest first
docs/changelog/CHANGELOG.json, generated by scripts/changelog-from-merge-notes.ts from every docs/features/*-MERGE-NOTE.md (title, date, and the "what shipped" summary), sorted newest first. Committed, never hand-edited. Cached in-process for the process lifetime: it only changes with a deploy.
Responses
200 OK
Response schema
response object (DoorChangelogResponse)
- generatedAt string (date-time)
- count integer
entries array
item object (DoorChangelogEntry)
- title string
- date string (date)
- summary string
- note string
503 Changelog temporarily unavailable.
Response schema