{"openapi":"3.1.0","info":{"title":"Resolvd API","description":"Company entity resolution with an honest abstention tier.\n\n**Billing is charge-on-success.** A `match` or `no_match` costs credits; an\n`unresolved` outcome costs nothing at any stage, and a byte-identical\nre-submission is a free replay on every plan. Resolve, match and completed batch\nresponses carry the operation's `usage` receipt. A keyed retry returns that\noriginal receipt without a new ledger charge. Control and read operations state\ntheir billing rules on each operation below.\n\nEvery resolution returns a `decision_id`; `GET /v1/decisions/{decision_id}`\nreturns the features, thresholds, cited evidence and a replay of the score.\n`POST /v1/match` is stateless and mints no such receipt.\n","version":"2026.09.0"},"paths":{"/v1/investigations/capabilities":{"get":{"tags":["investigations"],"summary":"Capabilities","description":"Read deployment availability. **Billing:** free; no agent work is started.","operationId":"capabilities_v1_investigations_capabilities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/investigations":{"post":{"tags":["investigations"],"summary":"Create","description":"Start a tenant-owned unresolved-case investigation.\n\n**Billing:** agent usage is billed to the deployment's OpenAI project.\nEntityBind resolution tools consume the caller's existing credits; case\ncreation itself has no separate EntityBind credit charge.","operationId":"create_v1_investigations_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInvestigation"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvestigationView"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]},"get":{"tags":["investigations"],"summary":"List Investigations","description":"List saved cases. **Billing:** free; no new agent turn is started.","operationId":"list_investigations_v1_investigations_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvestigationList"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/investigations/{case_id}":{"get":{"tags":["investigations"],"summary":"Get","description":"Recover saved research and verified receipts.\n\n**Billing:** free; this read starts no new agent turn or resolution call.","operationId":"get_v1_investigations__case_id__get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"title":"Case Id"}},{"name":"after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvestigationView"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]},"delete":{"tags":["investigations"],"summary":"Delete Investigation","description":"Delete the remote session before removing its local ownership record.\n\n**Billing:** deletion is free and does not reverse charges already incurred.","operationId":"delete_investigation_v1_investigations__case_id__delete","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"title":"Case Id"}}],"responses":{"204":{"description":"Successful Response","headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/investigations/{case_id}/messages":{"post":{"tags":["investigations"],"summary":"Send","description":"Continue or steer a case with a bounded, idempotent message.\n\n**Billing:** new agent usage is billed to the deployment's OpenAI project;\nEntityBind resolution tools consume the caller's existing credits.","operationId":"send_v1_investigations__case_id__messages_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"title":"Case Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessage"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvestigationView"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/investigations/{case_id}/cancel":{"post":{"tags":["investigations"],"summary":"Cancel","description":"Request that the provider stop the active turn.\n\n**Billing:** cancellation is free and does not undo charges or resolution\ncalls already completed.","operationId":"cancel_v1_investigations__case_id__cancel_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"title":"Case Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvestigationView"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/resolve":{"post":{"tags":["resolution"],"summary":"Resolve","description":"Resolve one record.\n\nReturns `decision_id` — the receipt, readable back at\n`GET /v1/decisions/{decision_id}` — and, on an abstention, `review_id` plus\nthe ranked `candidates` the cascade could not choose between. `client_ref`\ncomes back verbatim so the answer can be joined to the row it came from.\n\nAn actionable `clarification` names typed answer fields and visible candidate\nclues. Resubmit your own corrected record with the same `client_ref` and\n`clarification_of={record_id, decision_id}` from the unresolved response.\nCandidate options are unverified alternatives. The new attempt runs normal\nverification, plan limits and billing; it never binds a chosen candidate directly.\n\n**Billing:** 1 credit for a deterministic or probabilistic decision, 5 for\none that required LLM adjudication or agentic research, 0 for a cache replay\nand 0 for `unresolved`. Cap the spend with `depth`.\nAn explicit quality profile can request fresh field research on a cached\nidentity; that new attempt uses the five-credit research rate.\n\n**Egress:** `depth=probabilistic` makes no external call of any kind, and\n`enrich=false` turns the registries off at any depth — deduplication against\nyour own store only, for callers whose contract forbids the lookup.","operationId":"resolve_v1_resolve_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/match":{"post":{"tags":["resolution"],"summary":"Match","description":"Compare two records without writing anything.\n\nStateless by design: nothing is stored, so this endpoint mints no\n`record_id`, no `entity_id` and **no decision receipt** — there is no\n`decision_id` to fetch afterwards. Use `/v1/resolve` when the decision has\nto be auditable later.\n\nAn `unresolved` answer carries `depth_capped` and `escalation_unavailable`,\nwhich say which kind of \"cannot tell\" this is: your cap, our adjudicator\nbeing unavailable, or genuine ambiguity in the evidence. Only the first two\nare worth retrying.\n\n**Billing:** 1 credit for a `match`/`no_match` call, 5 if adjudication was\nneeded, 0 for `unresolved`. `depth` caps the pair the same way it caps a\nresolve.","operationId":"match_v1_match_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MatchResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/batch":{"post":{"tags":["resolution"],"summary":"Batch","description":"Resolve up to `max_batch_size` records under one idempotency key.\n\nEach outcome carries its own `decision_id`, `client_ref` and — on an\nabstention — `review_id`, in request order.\n\n**Pairs.** A batch also compares your rows against each other, and two of\nthose comparisons produce no outcome row because nothing landed anywhere.\n`blocked_pairs` are merges we proposed and our own guard refused, naming the\nfields of yours that disagreed — the prevented merges. `withheld_pairs` are\npairs we compared and deliberately did not merge: an abstention, not a\nverdict that they are different companies. Both are capped, and\n`pair_disclosure` reports what was found against what was returned so a\ntruncated list is never mistaken for a complete one.\n\n**Billing:** each record is metered independently under the same rules as\n`/v1/resolve`; `usage.credits_charged` is the batch total. `depth` is per\nrecord, so a bulk batch can carry a handful of rows worth researching.","operationId":"batch_v1_batch_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/entities":{"get":{"tags":["entities"],"summary":"List Entities","description":"Enumerate the entities you own, oldest first.\n\nThe catalogue you can page through, sync from and — because erasure is per\nentity — the only way to erase at scale. `updated_since` is the incremental\nsync filter: entities touched since your last run. `q` matches a substring of\na name, domain, website, registration number or LEI; `country` matches the\ncountry or jurisdiction.\n\n`total` counts the filtered set, not the page, so a caller knows whether they\nhave reached the end of their data or the end of a page.\n\nFollow `next_cursor` with the same filters to avoid skipped rows when earlier\nentities are erased. Do not combine cursor with a nonzero offset. Cursors\nare positions, never credentials; every page rechecks tenant authorization.\nThis is a live catalogue, so matches and totals can change between pages.\n\nOrdered by creation, oldest first, with the id as tie-break: a stable order\nis what makes paging safe when new entities are being resolved underneath.\n\n**Billing:** free. Reading back what you already paid to resolve is not a\nsecond resolution.","operationId":"list_entities_v1_entities_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"updated_since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated Since"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Country"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Q"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/export":{"get":{"tags":["entities"],"summary":"Export Entities","description":"Stream every entity you own as NDJSON — one golden record per line.\n\nThe portability path (GDPR art. 20): the full record, every field's\nprovenance and the `member_record_ids` crosswalk back to your own rows, in a\nformat that is machine-readable and streams at any size. The same filters as\nthe listing apply, so an incremental export is `?updated_since=`.\n\nStreamed rather than paged into a JSON array because an export has no\nbounded size and neither end should have to hold it. There is no `usage`\nblock for the same reason — the response begins before the work finishes.\n\n**Billing:** free, and rate-limited as a batch. Charging to leave is the\nbehaviour this product is positioned against.","operationId":"export_entities_v1_entities_export_get","parameters":[{"name":"updated_since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated Since"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Country"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/x-ndjson":{}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/search":{"get":{"tags":["entities"],"summary":"Search Entities","description":"Ask whether this tenant already knows a company, without resolving it.\n\nCandidate retrieval over the same blocking keys the cascade uses: no\nscoring, no adjudication and — the point — **no writes**. `POST /v1/resolve`\nwas the only way to ask this question, and it mints a record and often an\nentity, so nobody could evaluate against production data without changing\nit. An empty page means no known entity shares an identifier or a name key\nwith the input; it is not a claim that the company is unknown to the world.\n\nResults are RANKED by the same calibrated scorer the cascade uses, best\nfirst, so the first hit is the likeliest company rather than whichever\nentity id sorted lowest. Ranking is not deciding: no probability is\nreturned, because a score against a triage query is not a match claim and\npublishing one here would invite callers to threshold it themselves.\n\nSupply at least one of name, domain, registration_number or lei. Country\nnarrows a query but cannot retrieve on its own.\n\n**Billing:** free, and never metered. Triage is not resolution.","operationId":"search_entities_v1_entities_search_get","parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Name"}},{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":253},{"type":"null"}],"title":"Domain"}},{"name":"registration_number","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Registration Number"}},{"name":"lei","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Lei"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Country"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitySearchResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/reconcile":{"post":{"tags":["entities"],"summary":"Reconcile Entities","description":"Map natural identifiers back to the entity ids they name in this store.\n\nThe repair path for `entity_id`, which is a uuid4 minted per store: re-import\nyour catalogue into a fresh tenant and every id changes, so every foreign key\nyou published against the old ones dangles. Nothing about the companies\nchanged and nothing can be re-derived from them, because the ids were never a\nfunction of their content.\n\nSupply the identifiers you already store beside your foreign key — `lei`,\n`registration_number` (+`jurisdiction`), or `domain` — with your own\n`client_ref` on each, and get back the id that names that company here today.\nMatching is EXACT on the same normalized forms the cascade matches on, so a\nzero-padded company number still reconciles.\n\nA name is deliberately not accepted, and an identifier held by two entities\nreturns `ambiguous` rather than a pick. Reconciliation that guessed would\nsilently repoint a foreign key at the wrong company — strictly worse than an\nhonest miss, which you can re-resolve.\n\n**Billing:** free, and never metered. This is not a resolution; it reads back\nids you already paid for, and repairing them is not a second sale.","operationId":"reconcile_entities_v1_entities_reconcile_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReconcileRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReconcileResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/{entity_id}":{"get":{"tags":["entities"],"summary":"Get Entity","description":"Read a resolved entity, with per-field provenance and freshness.\n\n`member_record_ids` lists every submission bound to this entity, which is\nwhat lets a caller join the golden record back to their own rows.\n\n**Billing:** free. Reading back an entity you already paid to resolve is\nnot a second resolution.","operationId":"get_entity_v1_entities__entity_id__get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","maxLength":100,"title":"Entity Id"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"},"maxItems":64},{"type":"null"}],"title":"Fields"}},{"name":"field_packs","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"},"maxItems":8},{"type":"null"}],"title":"Field Packs"}},{"name":"include_field_status","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Field Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]},"delete":{"tags":["entities"],"summary":"Delete Entity","description":"Hard-delete one entity and its facts — the erasure path (EH-GOV-01).\n\n**Billing:** free. Erasure is an obligation, not a product.","operationId":"delete_entity_v1_entities__entity_id__delete","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","maxLength":100,"title":"Entity Id"}}],"responses":{"204":{"description":"Successful Response","headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["erase"]}},"/v1/entities/{entity_id}/ultimate-owner":{"get":{"tags":["identity"],"summary":"Entity Ultimate Owner","description":"Read sourced organizational ultimate-owner assertions, bounded observed corporate-control paths and accounting-consolidation parent reports separately. Reports retain their effective dates and citations. A graph endpoint is never promoted to a verified global ultimate owner; unknown global coverage and conflicts stay explicit. Natural-person ownership is outside this company-only summary. **Billing:** free local reads, no provider calls, AI, resolution or writes.","operationId":"entity_ultimate_owner_v1_entities__entity_id__ultimate_owner_get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Entity Id"}},{"name":"max_hops","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"default":3,"title":"Max Hops"}},{"name":"as_of","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"As Of"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UltimateOwnerResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/{entity_id}/identity":{"get":{"tags":["identity"],"summary":"Entity Identity","description":"Project portable official-registry references, dated names and cited address roles from a tenant-owned entity. Public IDs are stable per registry identifier across tenant imports and renames; they are not a single globally verified entity ID. The same entity may have several public IDs, and conflicts are explicit. A public ID grants no cross-tenant access. Parent and subsidiary references stay separate. Headquarters, registered and mailing addresses never imply operating activity. Source freshness is returned on each observation. Historical names and identifiers are included through `as_of`; future-effective observations are excluded. **Billing:** free; reads existing facts only, with no external lookups or mutations.","operationId":"entity_identity_v1_entities__entity_id__identity_get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"title":"Entity Id"}},{"name":"as_of","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"As Of"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/{entity_id}/ownership-plan":{"get":{"tags":["identity"],"summary":"Entity Ownership Plan","description":"Walk existing tenant ownership facts and return bounded, cited next steps. A missing registry identifier produces a suggested `/v1/resolve` request; ambiguous, truncated or name-only references require evidence review. No suggested request is executed. Accounting consolidation is distinct from beneficial ownership; unknown registry coverage never establishes no owners. **Billing:** this plan is free. Executing a suggested resolve is a separate operation under the normal resolution and provider budget rules.","operationId":"entity_ownership_plan_v1_entities__entity_id__ownership_plan_get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"title":"Entity Id"}},{"name":"max_hops","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"default":3,"title":"Max Hops"}},{"name":"as_of","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"As Of"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OwnershipPlanResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/{entity_id}/market-cap-history":{"get":{"tags":["market capitalization"],"summary":"Entity Market Cap History","description":"Read up to 60 completed calendar month ends before the as_of month. An available point requires a cited, explicitly month-end, unadjusted valuation of the requested issuer or share class, with its actual close, publication and capture dates. Unknown publication dates stay null. Quotes more than seven calendar days before month-end are stale; conflicts have no selected value. No interpolation, currency conversion, share-class aggregation or reconstruction from adjusted prices and current shares is performed. Missing data is not zero. **Billing:** free local read; no external, registry or AI calls.","operationId":"entity_market_cap_history_v1_entities__entity_id__market_cap_history_get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Entity Id"}},{"name":"months","in":"query","required":false,"schema":{"type":"integer","maximum":60,"minimum":1,"default":60,"title":"Months"}},{"name":"as_of","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"As Of"}},{"name":"scope","in":"query","required":false,"schema":{"enum":["issuer","share_class"],"type":"string","default":"issuer","title":"Scope"}},{"name":"currency","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}],"title":"Currency"}},{"name":"share_class","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":2000},{"type":"null"}],"title":"Share Class"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketCapHistoryResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/{entity_id}/intelligence":{"get":{"tags":["intelligence"],"summary":"Get Intelligence","description":"Read current intelligence and its field provenance for an owned entity.\n\nRe-evaluates local authorized observations and temporal facts. Does not\ncontact any network source, run an LLM, persist facts or imply live coverage.\nA removed local observation is omitted, not replaced with its old saved copy.\n\n**Billing:** free.","operationId":"get_intelligence_v1_entities__entity_id__intelligence_get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Entity Id"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"},"maxItems":64},{"type":"null"}],"title":"Fields"}},{"name":"field_packs","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"},"maxItems":8},{"type":"null"}],"title":"Field Packs"}},{"name":"include_field_status","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Field Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntelligenceResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/{entity_id}/yahoo-observations":{"post":{"tags":["supplier observations"],"summary":"Fetch Yahoo Observations","description":"Fetch return-only Yahoo values for this tenant's exact bound issuer.\n\nExplicit external access, with the batch rate-limit bucket and a maximum\n30-second caller deadline (or the shorter configured request deadline).\nNo resolution, AI, application credits, saved facts, result captures or\nartifacts. Includes market cap, enterprise value and seven raw financial\nstatement metrics with provider frequency and column dates. Unknown reporting\nboundaries, scope, currency, units and EBITDA definition remain explicit. This\nresponse is not retained for replay and does not establish storage or resale\nrights. A repeated POST performs a new bounded observation.\n\n**Billing:** free; consumes no application credits.","operationId":"fetch_yahoo_observations_v1_entities__entity_id__yahoo_observations_post","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Entity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/YahooObservationsResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/{entity_id}/watch":{"put":{"tags":["intelligence"],"summary":"Put Watch","description":"Enable an idempotent watch of stored/local intelligence for this entity.\n\nThe worker compares observations at the requested interval (default daily,\nminimum five minutes). It never performs paid research or network enrichment.\nRegister entity.intelligence_changed on /v1/webhooks to receive changes.\nWatches coalesce changes between checks; they are not an upstream event log.\nRetries preserve the baseline. At most 1000 active watches per tenant.\nErasing this entity or a contributing record cancels its watch, clears its\nchange history and removes queued entity notifications. Re-enable explicitly\nto watch any surviving entity; a request already in flight may still arrive.\n\n**Billing:** free.","operationId":"put_watch_v1_entities__entity_id__watch_put","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Entity Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchView"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]},"get":{"tags":["intelligence"],"summary":"Get Watch","description":"Read watch status, or null when disabled. **Billing:** free.","operationId":"get_watch_v1_entities__entity_id__watch_get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Entity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/WatchView"},{"type":"null"}],"title":"Response Get Watch V1 Entities  Entity Id  Watch Get"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]},"delete":{"tags":["intelligence"],"summary":"Delete Watch","description":"Disable a watch; safe to repeat. Already queued notifications remain deliverable.\n\n**Billing:** free.","operationId":"delete_watch_v1_entities__entity_id__watch_delete","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Entity Id"}}],"responses":{"204":{"description":"Successful Response","headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/entities/{entity_id}/events":{"get":{"tags":["intelligence"],"summary":"Entity Events","description":"Read committed watch changes after a cursor; values stay in /intelligence.\n\nRepeat `categories` to select any of the requested change kinds. Filtering\napplies to a scanned page: `next_cursor` advances even for an empty filtered\nresult. `scanned_count` counts scanned events, not returned events. Watches\ncompare local observations, not a complete upstream event history.\n\n**Billing:** free.","operationId":"entity_events_v1_entities__entity_id__events_get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Entity Id"}},{"name":"after_id","in":"query","required":false,"schema":{"type":"integer","maximum":2147483647,"minimum":0,"default":0,"title":"After Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":100,"title":"Limit"}},{"name":"categories","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/EntityChangeCategory"},"maxItems":9},{"type":"null"}],"title":"Categories"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityEventsResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/screening":{"post":{"tags":["screening"],"summary":"Screen","description":"Retrieve potential sanctions, PEP and adverse-media matches with explicit coverage.\n\n**Billing:** free; uses installed snapshots and never calls a paid provider.\nNo query or result is retained. Missing/stale coverage cannot produce a clear\nresult. Similarity scores are not calibrated probabilities or legal decisions.","operationId":"screen_v1_screening_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreeningRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreeningResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/screening/coverage":{"get":{"tags":["screening"],"summary":"Coverage","description":"Inspect visible snapshot versions, freshness and source coverage. **Billing:** free.","operationId":"coverage_v1_screening_coverage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ScreeningCoverage"},"type":"array","title":"Response Coverage V1 Screening Coverage Get"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/{entity_id}/detach":{"post":{"tags":["entities"],"summary":"Detach Entity Record","description":"Detach one wrongly merged member into a fresh entity.\n\nThe operation is deliberately narrower than an arbitrary split: exactly one\nstored member moves, only facts carrying that record's immutable attribution\nmove with it, and both sides plus blocking keys, replay binding, customer\ncrosswalk and audit receipt commit atomically. Legacy facts whose contributor\nis unknown are refused rather than guessed.\n\n`reason` is required because this is a governed correction, not an automated\nresolution. The reviewer principal and key id are both derived from the\nseparately issued REVIEW credential; a supplied `reviewer_id` must match.\n\n**Billing:** free. Correcting an over-merge is not a second resolution.","operationId":"detach_entity_record_v1_entities__entity_id__detach_post","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","maxLength":100,"title":"Entity Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetachRecordRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetachRecordResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["review"]}},"/v1/run-room/runs/{run_id}":{"get":{"tags":["run room"],"summary":"Get Run Room","description":"Read your run's stages and retained evidence metadata; no new research.\n\n**Billing:** free. This read does not submit work or invoke a provider.","operationId":"get_run_room_v1_run_room_runs__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunRoomResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/run-room/runs/{run_id}/artifacts/{artifact_id}/{kind}":{"get":{"tags":["run room"],"summary":"Get Run Room Artifact","description":"Download private literal evidence; no public bucket or signed URL.\n\n**Billing:** free. This read does not submit work or invoke a provider.","operationId":"get_run_room_artifact_v1_run_room_runs__run_id__artifacts__artifact_id___kind__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","title":"Run Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","title":"Artifact Id"}},{"name":"kind","in":"path","required":true,"schema":{"enum":["raw","extracted","markdown"],"type":"string","title":"Kind"}}],"responses":{"200":{"description":"Successful Response","headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/records/unbound":{"get":{"tags":["records"],"summary":"List Unbound Records","description":"Enumerate the records you submitted that no entity claims, oldest first.\n\nEverything the cascade did not bind: abstentions awaiting review, and\nsubmissions that replayed onto an entity whose member list they never\njoined. They hold your data verbatim and no entity id points at them, so\nwithout this listing the only way to erase one was to already know its\nrecord id.\n\n`total` counts the whole unbound set, not the page, so a caller working\nthrough an erasure request knows when they have finished.\n\n**Billing:** free. Enumerating what we hold about you is not a product.","operationId":"list_unbound_records_v1_records_unbound_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnboundRecordListResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/records/by-ref/{client_ref}":{"get":{"tags":["records"],"summary":"Records By Client Ref","description":"Find what happened to a row of YOUR data, by your own key for it.\n\n`client_ref` is the identifier you send on a resolve and get echoed back.\nUntil now it was echoed and never stored, so the join from a row in your CRM\nto the decision receipt behind it lived in whatever file you kept beside the\nimport — and two customers named reconstructing a merge eighteen months\nlater as the thing they were buying. This is that join, on our side.\n\nEach result carries the `record_id` we minted, the `decision_id` to redeem\nat `GET /v1/decisions/{id}`, the `entity_id` the row landed on and, when the\nsubmission abstained, the `review_id` of the queue item a human settled.\n\nAn unknown key returns an empty list rather than a 404: absence of a key is\nnot the same as a bad request, and a 404 here would confirm which keys exist\nfor whoever guessed one.\n\n**Billing:** free. Finding your own data is not a product.","operationId":"records_by_client_ref_v1_records_by_ref__client_ref__get","parameters":[{"name":"client_ref","in":"path","required":true,"schema":{"type":"string","maxLength":200,"title":"Client Ref"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientRefResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/records/{record_id}":{"delete":{"tags":["records"],"summary":"Delete Record","description":"Erase one submitted record and the review queue's copies of it (EH-GOV-01).\n\nRemoves the record and its resolution labels, deletes any OPEN review item\nembedding it, and REDACTS any settled one — a verdict and who reached it are\nevidence that must survive, so the payload goes and the judgement stays,\nmarked `redacted_at`. The label deletion is unconditional and tenant scoped:\nit also reaches valid external/import ids for which no local record row was\nstored. The customer-key crosswalk for the record goes too: it holds an\nidentifier the caller chose for their own row, which is exactly the kind of\nthing an erasure request is about, and a pointer is not evidence of a\njudgement.\n\nThis does not erase an entity the record contributed to. A golden record\noutlives its members, and `DELETE /v1/entities/{id}` is the call that erases\nthe company; this one erases the submission.\n\n**Billing:** free. Erasure is an obligation, not a product.","operationId":"delete_record_v1_records__record_id__delete","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string","maxLength":100,"title":"Record Id"}}],"responses":{"204":{"description":"Successful Response","headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["erase"]}},"/v1/crosswalk":{"post":{"tags":["crosswalk"],"summary":"Crosswalk","description":"Resolve one identifier or name to every identifier the company is known by, each with its own citation, licence tier and freshness — plus the identifier systems that were asked and came back empty, and one hop of ownership.\n\n**Billing:** identical to `/v1/resolve`, because it *is* a resolve: 1 credit for a deterministic or probabilistic decision, 5 when adjudication or research was required, 0 for a replay and 0 for `unresolved`. The projection is free; you are charged for the match behind it, once.","operationId":"crosswalk_v1_crosswalk_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrosswalkRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrosswalkResolveResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/crosswalk/{entity_id}":{"get":{"tags":["crosswalk"],"summary":"Entity Crosswalk","description":"Read the identifier crosswalk and one-hop ownership graph for an entity you already own.\n\n**Billing:** free. It is a projection of facts you already paid to resolve, and charging to look at your own data in a second shape is a fee for our response format.","operationId":"entity_crosswalk_v1_crosswalk__entity_id__get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","maxLength":100,"title":"Entity Id"}},{"name":"max_hops","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"default":1,"title":"Max Hops"}},{"name":"as_of","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"As Of"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrosswalkResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/decisions":{"get":{"tags":["decisions"],"summary":"List Decisions","description":"List decision receipts, newest first, filtered by the policy behind them.\n\nThe remediation read. \"Show me every decision taken under the threshold we\nhave since raised, or under the pipeline version we have since replaced\" is\na question a compliance buyer asks by name, and until now it could only be\nanswered one `decision_id` at a time. Every row already stored its\nthresholds and its `pipeline_version`; this is the index over them.\n\n`acting_key_id` is the four-eyes read: every decision one credential\napplied. A reviewer verdict records the key it arrived on and the surface it\ncame through, so \"which merges did this integration's key approve, and which\ndid a named analyst approve\" is answerable — the question a compliance buyer\nasks when an agent turns out to hold a key. Cascade decisions name no\ncredential and are never returned by it.\n\n`threshold_upper` matches the auto-merge threshold the call was judged\nagainst, exactly — the point is to find the population decided under a\nspecific policy, not a band. `decided_since`/`decided_until` are half-open\n`[since, until)`, so two adjacent windows partition without double-counting.\n\nNewest first, unlike the review queue: remediation works backwards from the\nchange that prompted it, while a queue must be worked oldest first so its\ntail cannot starve.\n\n**Billing:** free, exactly as reading one receipt is.","operationId":"list_decisions_v1_decisions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"pipeline_version","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Pipeline Version"}},{"name":"threshold_upper","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Threshold Upper"}},{"name":"decided_since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Decided Since"}},{"name":"decided_until","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Decided Until"}},{"name":"acting_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Acting Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionListResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve","review"]}},"/v1/decisions/{decision_id}":{"get":{"tags":["decisions"],"summary":"Get Decision","description":"Read the full, replayable record of one decision.\n\n`replay.reproduced` is the check that matters: the scorer is re-run over the\nfeatures stored at decision time and the result compared with the stored\nprobability. It is null for a deterministic identifier match, which never\nreached the scorer, and `replay.pipeline_version_matches` says whether the\nweights doing the reproducing are the ones that decided.\n\nA decision belonging to another tenant reads as not-found, never as\nforbidden — a 403 would confirm the id exists.\n\n**Billing:** free. Auditing a decision you already paid for is not a second\ndecision, and charging for the evidence trail would price honesty.","operationId":"get_decision_v1_decisions__decision_id__get","parameters":[{"name":"decision_id","in":"path","required":true,"schema":{"type":"string","maxLength":100,"title":"Decision Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve","review"]}},"/v1/labels/export":{"get":{"tags":["labels"],"summary":"Export Labels","description":"Export a reproducible JSONL label slice, oldest first.\n\nModel, prompt, pipeline, source and evidence-tier filters make the export a\ndirectly usable calibration population rather than a bag that must be\njoined back to decision logs. ``latest_only=false`` includes superseded\nrevisions for audit/reproduction; the default emits current truth only.\n\nA tenant's RESOLVE ingestion key or separately issued REVIEW key may read\nthis corpus. ADMIN keys are provisioning-only and cannot read customer\nrecords; ADMIN here is the lower-frequency *rate-limit class*, not an\nexpansion of that credential boundary.\n\n**Billing:** free. Exporting ground truth improves evaluation and model\ncalibration; it does not perform a resolution or call an external source.","operationId":"export_labels_v1_labels_export_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":10000,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"label","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ResolutionLabelValue"},{"type":"null"}],"title":"Label"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ResolutionLabelSource"},{"type":"null"}],"title":"Source"}},{"name":"evidence_tier","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ComparisonEvidenceTier"},{"type":"null"}],"title":"Evidence Tier"}},{"name":"record_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Record Id"}},{"name":"entity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Entity Id"}},{"name":"model_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Model Id"}},{"name":"prompt_version","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Prompt Version"}},{"name":"pipeline_version","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Pipeline Version"}},{"name":"labelled_since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Labelled Since"}},{"name":"labelled_until","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Labelled Until"}},{"name":"latest_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Latest Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/x-ndjson":{}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve","review"]}},"/v1/labels":{"post":{"tags":["labels"],"summary":"Submit Label","description":"Append one independently attributable customer/import label.\n\nReusing ``source_event_id`` with the same content is idempotent; reusing it\nwith different content is a 409. Corrections name ``supersedes_label_id``\nand append a revision—the original row is never overwritten.\n\n**Billing:** free. Supplying correction data improves the resolver and does\nnot perform a resolution or consume external evidence.","operationId":"submit_label_v1_labels_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolutionLabelSubmitRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolutionLabelResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]},"get":{"tags":["labels"],"summary":"List Labels","description":"List labels newest first, sliced for evaluation or active learning.\n\n**Billing:** free. Reading a tenant's own feedback corpus is a governance\noperation, not a resolution or external-data lookup.","operationId":"list_labels_v1_labels_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"label","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ResolutionLabelValue"},{"type":"null"}],"title":"Label"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ResolutionLabelSource"},{"type":"null"}],"title":"Source"}},{"name":"evidence_tier","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ComparisonEvidenceTier"},{"type":"null"}],"title":"Evidence Tier"}},{"name":"record_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Record Id"}},{"name":"entity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Entity Id"}},{"name":"model_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Model Id"}},{"name":"prompt_version","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Prompt Version"}},{"name":"pipeline_version","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Pipeline Version"}},{"name":"labelled_since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Labelled Since"}},{"name":"labelled_until","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Labelled Until"}},{"name":"latest_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Latest Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolutionLabelListResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve","review"]}},"/v1/review-queue":{"get":{"tags":["review"],"summary":"List Review Queue","description":"List queued abstentions, oldest first by default.\n\n`stage` separates \"the model could not tell\" from \"the caller capped the\ndepth\" — a reviewer works those differently. `evidence_tier` targets the\nsame identifier/corroborated/uncorroborated populations used by confidence\ncalibration, derived from the stored comparison features. `record_id` is\nthe migration join: a bulk import holds the record id of every abstained\nrow, and this is how that row reaches the queue item it produced.\n`min_confidence` drops items the cascade scored below the given probability;\nan item that never reached the scorer carries no probability and is dropped\nby any minimum at all.\n\n`sort=confidence_desc` is how a backlog gets worked by value rather than by\narrival: the items nearest the auto-merge band are the cheapest to confirm.\nOldest-first stays the default, because a queue worked any other way starves\nits tail and the tail is where the flywheel's labels are.\n\n`total` is the size of the FILTERED set — what `offset` walks against,\n`min_confidence` included — and `open_backlog` is the standing count of\nunworked items whatever slice is being read.\n\n**Billing:** free. Working your own abstention queue is what makes the\nsystem better; charging for it would be charging for our own tail.","operationId":"list_review_queue_v1_review_queue_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"status","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ReviewStatus","default":"open"}},{"name":"stage","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/DecisionStage"},{"type":"null"}],"title":"Stage"}},{"name":"evidence_tier","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ComparisonEvidenceTier"},{"type":"null"}],"title":"Evidence Tier"}},{"name":"record_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Record Id"}},{"name":"min_confidence","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Min Confidence"}},{"name":"sort","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ReviewSort","default":"oldest_first"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewQueueResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve","review"]}},"/v1/review-queue/{review_id}":{"get":{"tags":["review"],"summary":"Get Review Item","description":"Poll one abstention: what it was about, and whether it has been settled.\n\nA `/v1/resolve` that answers `unresolved` returns the `review_id` of the\nitem it queued. This is where that id is redeemed, so a caller can track\ntheir own abstention to a verdict instead of discovering it by re-resolving.\n\n**Billing:** free.","operationId":"get_review_item_v1_review_queue__review_id__get","parameters":[{"name":"review_id","in":"path","required":true,"schema":{"type":"string","maxLength":100,"title":"Review Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewItemView"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve","review"]}},"/v1/review-queue/{review_id}/decision":{"post":{"tags":["review"],"summary":"Submit Review Decision","description":"Settle one abstention with a reviewer verdict.\n\n`applied` reports whether the verdict changed stored state: a candidate the\ncascade never stored has no entity to merge into, and saying so is the\ndifference between \"acted on\" and \"recorded\". When it is false,\n`blocked_reason` says which of those happened and `verdict_decision_id`\npoints at the audit row that recorded it.\n\nThe accountable reviewer is the authenticated REVIEW credential's immutable\nname. `reviewer_id`, when supplied for transition compatibility, must equal\nthat name; it can no longer manufacture an unauthenticated identity.\n\n**Billing:** free. The verdict is a label we want.","operationId":"submit_review_decision_v1_review_queue__review_id__decision_post","parameters":[{"name":"review_id","in":"path","required":true,"schema":{"type":"string","maxLength":100,"title":"Review Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewDecisionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewItemView"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["review"]}},"/v1/review-queue/decisions":{"post":{"tags":["review"],"summary":"Submit Review Decisions","description":"Settle many abstentions in one call.\n\nOne HTTP round trip per item is not a queue anyone can work: an extrapolated\nbacklog runs to tens of thousands of items, and the review tier is the\nflywheel — a flywheel nobody can turn is a queue that only grows. A reviewer\nsweeps a filtered page (`sort=confidence_desc`, `min_confidence=…`) and\nsettles it here.\n\n**Not transactional, on purpose.** Each verdict is applied by exactly the\npath a single one takes — same merge guard, same already-resolved gate, same\nreviewer requirement — and a failure is reported per item while the rest\nproceed. Rolling eighty verdicts back because a colleague settled the third\none first would discard labels a human already produced. `settled` and\n`failed` are the counts; every item carries either its resulting state or an\n`error.code` from the same vocabulary the single-item route raises.\n\nHTTP 200 even when every item failed: the request was processed, and the\nper-item results are the answer. Check the counts, not the status line.\n\n**Billing:** free, exactly as one verdict is.","operationId":"submit_review_decisions_v1_review_queue_decisions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkReviewDecisionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkReviewDecisionResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["review"]}},"/v1/reference/jurisdictions":{"get":{"tags":["reference"],"summary":"Jurisdictions","description":"Jurisdiction codes, and which of them get registry-backed candidates.\n\n**Billing:** free, and deliberately so. Charging for the lookup that tells you how to call the API correctly taxes getting it right.","operationId":"jurisdictions_v1_reference_jurisdictions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JurisdictionsResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/reference/registries":{"get":{"tags":["reference"],"summary":"Registries","description":"The evidence sources this deployment has actually wired in.\n\n**Billing:** free, and deliberately so. Charging for the lookup that tells you how to call the API correctly taxes getting it right.","operationId":"registries_v1_reference_registries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistriesResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/reference/sources":{"get":{"tags":["reference"],"summary":"Source Capabilities","description":"Machine-readable connector capabilities, readiness and locally observed health.\n\n**Billing:** free, and deliberately so. Charging for the lookup that tells you how to call the API correctly taxes getting it right.","operationId":"source_capabilities_v1_reference_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceCapabilitiesResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/reference/enrichment-fields":{"get":{"tags":["reference"],"summary":"Enrichment Fields","description":"Every enrichable field, its suppliers, configured availability and caller resale rights.\n\n**Billing:** free, and deliberately so. Charging for the lookup that tells you how to call the API correctly taxes getting it right.","operationId":"enrichment_fields_v1_reference_enrichment_fields_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichmentFieldsResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/reference/identifiers":{"get":{"tags":["reference"],"summary":"Identifier Schemes","description":"The identifier schemes `/v1/crosswalk` maps between, and who supplies each.\n\n**Billing:** free, and deliberately so. Charging for the lookup that tells you how to call the API correctly taxes getting it right.","operationId":"identifier_schemes_v1_reference_identifiers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentifierSchemesResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/reference/stages":{"get":{"tags":["reference"],"summary":"Stages","description":"The cascade stages a decision can be reached at.\n\n**Billing:** free, and deliberately so. Charging for the lookup that tells you how to call the API correctly taxes getting it right.","operationId":"stages_v1_reference_stages_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferenceListResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/reference/decisions":{"get":{"tags":["reference"],"summary":"Decisions","description":"The four outcomes, including what an abstention means.\n\n**Billing:** free, and deliberately so. Charging for the lookup that tells you how to call the API correctly taxes getting it right.","operationId":"decisions_v1_reference_decisions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferenceListResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/reference/depths":{"get":{"tags":["reference"],"summary":"Depths","description":"How far down the cascade each `depth` lets a call descend.\n\n**Billing:** free, and deliberately so. Charging for the lookup that tells you how to call the API correctly taxes getting it right.","operationId":"depths_v1_reference_depths_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferenceListResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/reference/licences":{"get":{"tags":["reference"],"summary":"Licences","description":"What each licence tier permits us to store and you to redistribute (ADR-0004). These describe the data, not your plan: whether you may exercise a redistribution right is the separate `resale_rights` term on `/v1/reference/limits`.\n\n**Billing:** free, and deliberately so. Charging for the lookup that tells you how to call the API correctly taxes getting it right.","operationId":"licences_v1_reference_licences_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferenceListResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/reference/error-codes":{"get":{"tags":["reference"],"summary":"Error Codes","description":"The complete error vocabulary, with the status each code arrives as.\n\n**Billing:** free, and deliberately so. Charging for the lookup that tells you how to call the API correctly taxes getting it right.","operationId":"error_codes_v1_reference_error_codes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorCodesResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/reference/limits":{"get":{"tags":["reference"],"summary":"Limits","description":"Every ceiling this deployment enforces, as it applies to your key.\n\n**Billing:** free, and deliberately so. Charging for the lookup that tells you how to call the API correctly taxes getting it right.","operationId":"limits_v1_reference_limits_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LimitsResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/reference/pricing":{"get":{"tags":["reference"],"summary":"Pricing","description":"The credit rule and the plan list, served from the constants that bill.\n\n**Billing:** free, and deliberately so. Charging for the lookup that tells you how to call the API correctly taxes getting it right.","operationId":"pricing_v1_reference_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/company-reference/batch":{"post":{"tags":["company reference"],"summary":"Lookup Company Reference Batch","description":"Read up to 100 company domains without invoking the resolution pipeline.\n\n**Billing:** zero resolution credits and zero AI calls. Each distinct valid\nnormalized domain/country uses the normal tenant read allowance, alongside\none batch admission. Duplicate rows remain separate in the response. At most\nfour warehouse lookups run at once, with a 30-second execution budget;\nunfinished rows explicitly return unavailable/request_deadline.\n\nExact domain lookup preserves shared-domain candidates, truncation, licence\nand original snapshot provenance. It neither verifies legal identity nor\nfills every enrichment field. Unsupported countries or unusable domains are\nexplicit row results rather than a source lookup or a false empty match.","operationId":"lookup_company_reference_batch_v1_company_reference_batch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyReferenceBatchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyReferenceBatchResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/company-reference/search":{"post":{"tags":["company reference"],"summary":"Search Company Reference","description":"Find up to 50 vendor company records by exact website hostname.\n\nOptional US/GB geography narrows discovery, not legal verification. No fuzzy\nname search or automatic merging. Source unavailability is an explicit result,\ndistinct from a successful lookup returning no candidates. Sends only the\nrequested hostname/country to our restricted company warehouse reader.\n\n**Billing:** no resolution credits; normal authenticated read limits apply.","operationId":"search_company_reference_v1_company_reference_search_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyReferenceQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyReferenceResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/reference/search-fields":{"get":{"tags":["company workflows"],"summary":"Search Fields","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"search_fields_v1_reference_search_fields_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/query":{"post":{"tags":["company workflows"],"summary":"Query Companies","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"query_companies_v1_entities_query_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanySearch"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/portfolios":{"get":{"tags":["company workflows"],"summary":"List Portfolios","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"list_portfolios_v1_portfolios_get","parameters":[{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]},"post":{"tags":["company workflows"],"summary":"Create Portfolio","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"create_portfolio_v1_portfolios_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/portfolios/{portfolio_id}":{"get":{"tags":["company workflows"],"summary":"Get Portfolio","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"get_portfolio_v1_portfolios__portfolio_id__get","parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Portfolio Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]},"patch":{"tags":["company workflows"],"summary":"Rename Portfolio","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"rename_portfolio_v1_portfolios__portfolio_id__patch","parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Portfolio Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioRename"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]},"delete":{"tags":["company workflows"],"summary":"Delete Portfolio","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"delete_portfolio_v1_portfolios__portfolio_id__delete","parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Portfolio Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/portfolios/{portfolio_id}/members":{"get":{"tags":["company workflows"],"summary":"Portfolio Members","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"portfolio_members_v1_portfolios__portfolio_id__members_get","parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Portfolio Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/portfolios/{portfolio_id}/events":{"get":{"tags":["company workflows"],"summary":"Portfolio Events","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"portfolio_events_v1_portfolios__portfolio_id__events_get","parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Portfolio Id"}},{"name":"after_id","in":"query","required":false,"schema":{"type":"integer","maximum":9223372036854775807,"minimum":0,"default":0,"title":"After Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":100,"title":"Limit"}},{"name":"categories","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"},"maxItems":16},{"type":"null"}],"title":"Categories"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/portfolios/{portfolio_id}/export":{"get":{"tags":["company workflows"],"summary":"Portfolio Export","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"portfolio_export_v1_portfolios__portfolio_id__export_get","parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Portfolio Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/{entity_id}/financial-statements":{"get":{"tags":["company workflows"],"summary":"Financial History","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"financial_history_v1_entities__entity_id__financial_statements_get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Entity Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/{entity_id}/financial-selection":{"post":{"tags":["company workflows"],"summary":"Financial Selection","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"financial_selection_v1_entities__entity_id__financial_selection_post","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Entity Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialSelectionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/{entity_id}/financial-comparison":{"post":{"tags":["company workflows"],"summary":"Financial Comparison","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"financial_comparison_v1_entities__entity_id__financial_comparison_post","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Entity Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialComparisonRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/{entity_id}/identifier-history":{"get":{"tags":["company workflows"],"summary":"Identifier History","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"identifier_history_v1_entities__entity_id__identifier_history_get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Entity Id"}},{"name":"as_of","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"As Of"}},{"name":"after_id","in":"query","required":false,"schema":{"type":"integer","maximum":9223372036854775807,"minimum":0,"default":0,"title":"After Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/entities/{entity_id}/source-comparison":{"post":{"tags":["company workflows"],"summary":"Source Comparison","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"source_comparison_v1_entities__entity_id__source_comparison_post","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Entity Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceComparisonRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/relationships/explain":{"post":{"tags":["company workflows"],"summary":"Relationship Paths","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"relationship_paths_v1_relationships_explain_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelationshipRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/data-selections/{receipt_id}":{"get":{"tags":["company workflows"],"summary":"Get Selection","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"get_selection_v1_data_selections__receipt_id__get","parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Receipt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]},"delete":{"tags":["company workflows"],"summary":"Delete Selection","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"delete_selection_v1_data_selections__receipt_id__delete","parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Receipt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/portfolios/{portfolio_id}/members/{entity_id}":{"put":{"tags":["company workflows"],"summary":"Put Member","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"put_member_v1_portfolios__portfolio_id__members__entity_id__put","parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Portfolio Id"}},{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Entity Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]},"delete":{"tags":["company workflows"],"summary":"Remove Member","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"remove_member_v1_portfolios__portfolio_id__members__entity_id__delete","parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Portfolio Id"}},{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Entity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/portfolios/{portfolio_id}/watches":{"post":{"tags":["company workflows"],"summary":"Portfolio Watches","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"portfolio_watches_v1_portfolios__portfolio_id__watches_post","parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Portfolio Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchPageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/data-selections":{"post":{"tags":["company workflows"],"summary":"Capture Selection","description":"**Billing:** No resolution credits are charged. These operations use retained company evidence and tenant-local workflow records; they make no provider or model calls. Plan access and the operation's rate quota still apply.","operationId":"capture_selection_v1_data_selections_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/usage":{"get":{"tags":["usage"],"summary":"Usage","description":"Your automation rate, abstention rate, stage mix and credit spend, with intervals.\n\nEvery rate carries its 95% Wilson interval and the sample behind it: an\nautomation rate of 1.0 over nine calls and one over nine thousand are the\nsame number and not the same claim.\n\n`since` and `until` are dates read as UTC and applied half-open — `until`\ncovers the whole of that day — so two adjacent periods sum without\ndouble-counting. Omitted, the window is the billing period the quota is\nsummed over, so this report and the `usage` block beside it describe the\nsame span of time.\n\n**What this cannot tell you.** It cannot measure precision, and neither can\nany other view of your usage: review items are created only when the pipeline\nabstains, so reviewer verdicts label the *unresolved* band and the\nautomatically merged population carries no labels at all. `not_measured`\nnames each undecidable metric with the reason. What the same verdicts DO\nmeasure is lost automation — `abstentions.human_decidable_rate`, the share of\nthe abstentions a reviewer worked that a person could decide. Precision is\nmeasured against a labelled gold set (docs/ACCURACY.md), not against this.\n\n**Billing:** free. Charging a customer to see what they spent would be\nremarkable.","operationId":"usage_v1_usage_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Since"}},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Until"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/outcomes":{"get":{"tags":["outcomes"],"summary":"Outcomes","description":"Retained durable batch cohorts; acceptance and human feedback are not accuracy.\n\n**Billing:** free; no resolution credits or provider calls. UTC calendar dates\nare inclusive; omitted dates select the last 30 days.\nThe payload states retention, sampling, latency and credit-scope limitations.","operationId":"outcomes_v1_outcomes_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Since"}},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Until"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerOutcomeResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/decisions/{decision_id}/feedback":{"post":{"tags":["outcomes"],"summary":"Feedback","description":"Record customer evidence about this binding; never change company identity.\n\n**Billing:** free; no resolution credits or provider calls. Wrong-match reports\nname the receipt's rejected target automatically.\nThe existing immutable label event is returned on an identical keyed retry.","operationId":"feedback_v1_decisions__decision_id__feedback_post","parameters":[{"name":"decision_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Decision Id"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerFeedbackResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/evaluation":{"get":{"tags":["evaluation"],"summary":"Evaluation","description":"Read lifetime balances, activation, expiry and configured capabilities for free.\n\nThis does not start validity or call providers. Balances are snapshots and\nreservations may change concurrently. A null evaluation means this tenant\nhas no grant. The recurring Free integration plan remains separate.\n\n**Billing:** free. Reading balances never consumes credits or attempts.","operationId":"evaluation_v1_evaluation_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/evaluation/activate":{"post":{"tags":["evaluation"],"summary":"Activate Evaluation","description":"Exchange a trusted verifier's signed proof for an evaluation and scoped key.\n\nGated off until launch prerequisites and the verification integration are\nconfigured. This endpoint does not accept self-asserted verification or a\ntenant ID. Only the first completed activation returns the key; retries\nconverge on the same tenant/grant/key metadata without exposing it again.\n\n**Billing:** free. Verification and key issuance do not start grant validity.","operationId":"activate_evaluation_v1_evaluation_activate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationActivationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationActivationResponse"}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"}}}},"/v1/batch-jobs":{"post":{"tags":["batch jobs"],"summary":"Submit Job","description":"Queue resolution and enrichment; a stable Idempotency-Key recovers the same job.\n\n**Billing:** submission is free. Execution uses the synchronous batch's\ncharge-on-success policy, plan limits and evaluation grant. Replays do not\nexecute or charge again. A worker must be running against the same database.","operationId":"submit_job_v1_batch_jobs_post","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchJobView"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/batch-jobs/{job_id}":{"get":{"tags":["batch jobs"],"summary":"Get Job","description":"Read an owned job's lifecycle state. **Billing:** free.","operationId":"get_job_v1_batch_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchJobView"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/batch-jobs/{job_id}/result":{"get":{"tags":["batch jobs"],"summary":"Get Result","description":"Read completed enrichments; pending jobs return 202 and Retry-After.\n\n**Billing:** free, including repeated reads. This never reruns resolution.","operationId":"get_result_v1_batch_jobs__job_id__result_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchJobView"}}},"description":"Accepted","headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/batch-jobs/{job_id}/cancel":{"post":{"tags":["batch jobs"],"summary":"Cancel Job","description":"Cancel queued work; repeated cancellation is safe, running work conflicts.\n\n**Billing:** free. Cancellation does not reverse already-started execution.","operationId":"cancel_job_v1_batch_jobs__job_id__cancel_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchJobView"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/v1/batch-jobs/{job_id}/events":{"get":{"tags":["batch jobs"],"summary":"Job Events","description":"Stream durable lifecycle events; resume using Last-Event-ID after reconnect.\n\n**Billing:** free. Credentials are rechecked while streaming. Connections\nlast at most 60 seconds; reconnect to continue observing a running job.","operationId":"job_events_v1_batch_jobs__job_id__events_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"title":"Job Id"}},{"name":"Last-Event-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last-Event-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/event-stream":{}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/webhooks":{"post":{"tags":["webhooks"],"summary":"Create Webhook","description":"Register a job or watched-entity subscription. Retries use the same key.\n\nDeliveries authenticate exact bytes with Standard Webhooks HMAC-SHA256.\nConsumers verify timestamp (five-minute tolerance), signature and event ID;\nacknowledge 2xx, deduplicate retries, then read results with their API key.\nReceivers get job ID/state or watched entity ID/changed attribute names,\nnever company values or credentials. Enable an entity watch separately;\nsigning up to entity events does not start research or create watches.\nFive attempts use bounded backoff; final failures remain inspectable.\n\n**Billing:** free. Registering or delivering a notification does not resolve\ncompanies or consume evaluation credits.","operationId":"create_webhook_v1_webhooks_post","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreated"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]},"get":{"tags":["webhooks"],"summary":"List Webhooks","description":"List the tenant's webhook registrations; signing secrets are omitted.\n\n**Billing:** free.","operationId":"list_webhooks_v1_webhooks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebhookView"},"title":"Response List Webhooks V1 Webhooks Get"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/webhooks/{webhook_id}/deliveries":{"get":{"tags":["webhooks"],"summary":"Webhook Deliveries","description":"Latest 100 delivery receipts, including retries and final failures.\n\n**Billing:** free.","operationId":"webhook_deliveries_v1_webhooks__webhook_id__deliveries_get","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","title":"Webhook Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebhookDeliveryView"},"title":"Response Webhook Deliveries V1 Webhooks  Webhook Id  Deliveries Get"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["read","resolve"]}},"/v1/webhooks/{webhook_id}":{"delete":{"tags":["webhooks"],"summary":"Disable Webhook","description":"Disable delivery and remove the stored URL; safe to repeat.\n\nCancels pending deliveries. A request already in flight cannot be recalled.\n\n**Billing:** free.","operationId":"disable_webhook_v1_webhooks__webhook_id__delete","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","title":"Webhook Id"}}],"responses":{"204":{"description":"Successful Response","headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["resolve"]}},"/api/quickstart.txt":{"get":{"tags":["public documentation"],"summary":"Quickstart","operationId":"quickstart_api_quickstart_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/api/pricing":{"get":{"tags":["public documentation"],"summary":"Pricing","operationId":"pricing_api_pricing_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/api/evidence":{"get":{"tags":["public documentation"],"summary":"Evidence","operationId":"evidence_api_evidence_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/api/mcp/tools.json":{"get":{"tags":["public documentation"],"summary":"Public Mcp Catalogue","operationId":"public_mcp_catalogue_api_mcp_tools_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/mcp":{"get":{"tags":["public documentation"],"summary":"Public Mcp Guide","operationId":"public_mcp_guide_api_mcp_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/api/operations":{"get":{"tags":["public documentation"],"summary":"Public Operations Guide","operationId":"public_operations_guide_api_operations_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/api/sandbox":{"get":{"tags":["public documentation"],"summary":"Public Sandbox Guide","operationId":"public_sandbox_guide_api_sandbox_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/llms.txt":{"get":{"tags":["public documentation"],"summary":"Agent Index","operationId":"agent_index_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/llms-full.txt":{"get":{"tags":["public documentation"],"summary":"Agent Corpus","operationId":"agent_corpus_llms_full_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/api/docs":{"get":{"tags":["public documentation"],"summary":"Public Docs","operationId":"public_docs_api_docs_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/demo":{"get":{"tags":["public documentation"],"summary":"Demo Index","operationId":"demo_index_api_demo_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Demo Index Api Demo Get"}}}}}}},"/api/demo/{case_id}":{"get":{"tags":["public documentation"],"summary":"Demo Case","operationId":"demo_case_api_demo__case_id__get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Demo Case Api Demo  Case Id  Get"}}}},"422":{"$ref":"#/components/responses/ValidationError"}}}},"/v1/admin/tenants":{"get":{"tags":["admin"],"summary":"List Tenants","description":"Your own tenant, followed by every tenant you have minted.\n\nThe OEM's customer list. A tenant you did not mint is absent rather than\nforbidden, so this can never be walked to discover another reseller's book.\n\n**Billing:** free.","operationId":"list_tenants_v1_admin_tenants_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantListResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["admin"]},"post":{"tags":["admin"],"summary":"Create Tenant","description":"Mint a sub-tenant beneath yours — one end customer of a reseller.\n\nRequires a plan carrying resale rights, which is what that plan line now\nbuys. The new tenant's id is derived as `<your tenant>-<slug>`: a\ncaller-chosen id would make a 409 an oracle over every customer id in the\ndeployment. Its plan is capped at your own, because a reseller cannot sell\nmore product than they bought.\n\nA tenant has no keys until you mint one, and therefore no way in — the same\nproperty a fresh deployment has.\n\n**Billing:** free.","operationId":"create_tenant_v1_admin_tenants_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTenantRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantView"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["admin"]}},"/v1/admin/keys":{"get":{"tags":["admin"],"summary":"List Keys","description":"Every credential of one tenant you administer — metadata only.\n\nThere is no raw key here and there cannot be: only the SHA-256 digest is\nstored (EH-SEC-04). `active` answers revocation and rotation expiry together,\nso an inventory can be read without re-deriving the admission rule.\n\n**Billing:** free.","operationId":"list_keys_v1_admin_keys_get","parameters":[{"name":"tenant_id","in":"query","required":true,"schema":{"type":"string","maxLength":64,"title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyListResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["admin"]},"post":{"tags":["admin"],"summary":"Create Key","description":"Mint a credential. **The raw key is in this response and nowhere else.**\n\nIt is not stored — only its digest is — so it cannot be re-read later, by us\nor by you. Persist it now; a lost key is rotated, never recovered.\n\n`plan` is capped at the tenant's own plan: an admin key is not a self-service\nupgrade button. `scope` defaults to `resolve`; minting an `admin` key\ndelegates provisioning of that tenant's subtree and nothing beyond it.\nDeployment-wide `operator` keys are not accepted here; only the local\nmaintenance CLI may issue or manage one.\n\n**Billing:** free.","operationId":"create_key_v1_admin_keys_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuedKeyResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["admin"]}},"/v1/admin/keys/{key_id}/rotate":{"post":{"tags":["admin"],"summary":"Rotate Key","description":"Issue a replacement credential and grace-expire this one.\n\nBoth keys authenticate until `superseded.expires_at`, so the replacement can\nbe rolled through a deploy without a window in which neither works. Pass\n`grace_seconds: 0` for a leaked credential — a grace window is precisely what\nyou do not want when the old key is the problem.\n\nThe replacement inherits this key's tenant, plan, scope and name: a rotation\nreplaces a credential, it does not re-provision one.\n\n**Billing:** free.","operationId":"rotate_key_v1_admin_keys__key_id__rotate_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","maxLength":100,"title":"Key Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotatedKeyResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["admin"]}},"/v1/admin/keys/{key_id}":{"delete":{"tags":["admin"],"summary":"Revoke Key","description":"Kill a credential immediately.\n\nReturns the credential's resulting state rather than an empty 204: a caller\nrevoking under pressure wants to see `active: false` come back, not infer it.\nRevoking every key of a tenant is how a customer is suspended — there is no\nsecond `active` flag on the tenant to disagree with this one.\n\n**Billing:** free.","operationId":"revoke_key_v1_admin_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","maxLength":100,"title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyView"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["admin"]}},"/v1/admin/oauth/install-tickets":{"post":{"tags":["admin"],"summary":"Create Install Ticket","description":"Mint the one-time ticket a person pastes to finish a connector install.\n\n**The ticket is in this response and nowhere else** — only its digest is\nstored, exactly like an API key. It is single-use, expires in minutes, and\nbinds the grant it authorizes to the tenant named here.\n\nThis is what makes a connector install possible without anyone typing an API\nkey into a third party's dialog. It is also the honest boundary of the OAuth\nbuild: Resolvd has no end-user identity system, so a ticket is how a *tenant*\nproves itself at the consent step, and everyone who can obtain one authorizes\nas that tenant rather than as themselves.\n\n**Billing:** free.","operationId":"create_install_ticket_v1_admin_oauth_install_tickets_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInstallTicketRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallTicketResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"413":{"$ref":"#/components/responses/PayloadTooLargeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["admin"]}},"/v1/admin/oauth/grants":{"get":{"tags":["admin"],"summary":"List Oauth Grants","description":"Which connectors currently hold an authorization for one of your tenants.\n\nThe inventory a customer needs before they can revoke anything — without it,\n\"revocation that actually revokes\" is only reachable by a connector revoking\nits own token, which is not a control the owner holds.\n\n**Billing:** free.","operationId":"list_oauth_grants_v1_admin_oauth_grants_get","parameters":[{"name":"tenant_id","in":"query","required":true,"schema":{"type":"string","maxLength":64,"title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthGrantListResponse"}}},"headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["admin"]}},"/v1/admin/oauth/grants/{grant_id}":{"delete":{"tags":["admin"],"summary":"Revoke Oauth Grant","description":"Kill one connector's authorization and every token descended from it.\n\nImmediate: access tokens are verified against the database on every call, so\nthere is no signed-token window in which a revoked connector keeps working.\n\n**Billing:** free.","operationId":"revoke_oauth_grant_v1_admin_oauth_grants__grant_id__delete","parameters":[{"name":"grant_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"title":"Grant Id"}},{"name":"tenant_id","in":"query","required":true,"schema":{"type":"string","maxLength":64,"title":"Tenant Id"}}],"responses":{"204":{"description":"Successful Response","headers":{"RateLimit-Limit":{"description":"Capacity of this caller's token bucket.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer","minimum":0}}}},"422":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/RateLimitError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["admin"]}},"/healthz":{"get":{"tags":["system"],"summary":"Healthz","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Healthz Healthz Get"}}}}}}},"/readyz":{"get":{"tags":["system"],"summary":"Readyz","operationId":"readyz_readyz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/metrics":{"get":{"tags":["system"],"summary":"Metrics","operationId":"metrics_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"default":{"$ref":"#/components/responses/ApiError"}},"security":[{"BearerAuth":[]}],"x-accepted-key-scopes":["metrics"]}}},"components":{"schemas":{"AbstentionOutcomesView":{"properties":{"queued":{"type":"integer","title":"Queued"},"pending":{"type":"integer","title":"Pending"},"settled_match":{"type":"integer","title":"Settled Match"},"settled_no_match":{"type":"integer","title":"Settled No Match"},"settled_unresolved":{"type":"integer","title":"Settled Unresolved"},"human_decidable_rate":{"$ref":"#/components/schemas/IntervalView"}},"type":"object","required":["queued","pending","settled_match","settled_no_match","settled_unresolved","human_decidable_rate"],"title":"AbstentionOutcomesView","description":"What became of the abstentions queued in this period.\n\nThe price of abstention, and deliberately not an accuracy measurement: this\npopulation is exactly the records the pipeline REFUSED to decide, so a\nreviewer's verdict describes what a human could do with a case we would not\nautomate and is silent about every record we did."},"AccountingUltimateParentView":{"properties":{"scheme":{"type":"string","const":"lei","title":"Scheme","default":"lei"},"value":{"type":"string","title":"Value"},"relationship_basis":{"type":"string","const":"accounting_consolidation","title":"Relationship Basis","default":"accounting_consolidation"},"valid_from":{"type":"string","format":"date","title":"Valid From"},"valid_to":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid To"},"provenance":{"$ref":"#/components/schemas/ProvenanceView"}},"type":"object","required":["value","valid_from","provenance"],"title":"AccountingUltimateParentView"},"ActingSurface":{"type":"string","enum":["api","mcp","workbench","maintenance"],"title":"ActingSurface","description":"Which surface a decision was taken THROUGH.\n\nRecorded on every human-tier verdict beside the credential that carried it,\nbecause \"a human approved this merge\" and \"an autonomous agent holding an\nAPI key approved this merge\" are the same row without it: both are stamped\n`DecisionStage.HUMAN_REVIEW`, and a four-eyes control that cannot tell them\napart is a workflow step (docs/ACCURACY.md, docs/TRUST.md §5).\n\nThe surface is derived from the code path that called the service and is\nnever caller-supplied. Remote API/MCP paths derive `reviewer_id` from the\nauthenticated REVIEW credential name; the trusted local operator path may\nname an analyst explicitly."},"AddressRequest":{"properties":{"line1":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Line1"},"line2":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Line2"},"city":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"City"},"region":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Region"},"postal_code":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Postal Code"},"country":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Country"}},"additionalProperties":false,"type":"object","title":"AddressRequest"},"AdverseEvent":{"properties":{"event_id":{"type":"string","maxLength":500,"minLength":1,"title":"Event Id"},"category":{"type":"string","enum":["fraud","corruption","environment","labor","litigation","regulatory","other"],"title":"Category"},"status":{"type":"string","enum":["allegation","investigation","charge","confirmed_outcome","dismissed","corrected"],"title":"Status"},"statement":{"type":"string","maxLength":1000,"minLength":1,"title":"Statement"},"evidence_excerpt":{"type":"string","maxLength":4000,"minLength":1,"title":"Evidence Excerpt"},"source_url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Source Url"},"published_at":{"type":"string","format":"date-time","title":"Published At"},"occurred_on":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Occurred On"},"supersedes_event_id":{"anyOf":[{"type":"string","maxLength":500,"minLength":1},{"type":"null"}],"title":"Supersedes Event Id"}},"additionalProperties":false,"type":"object","required":["event_id","category","status","statement","evidence_excerpt","source_url","published_at"],"title":"AdverseEvent"},"ApiKeyListResponse":{"properties":{"keys":{"items":{"$ref":"#/components/schemas/ApiKeyView"},"type":"array","title":"Keys"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["keys","correlation_id"],"title":"ApiKeyListResponse"},"ApiKeyView":{"properties":{"key_id":{"type":"string","title":"Key Id"},"tenant_id":{"type":"string","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"plan":{"type":"string","title":"Plan"},"scope":{"type":"string","title":"Scope"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"revoked":{"type":"boolean","title":"Revoked"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"active":{"type":"boolean","title":"Active"}},"type":"object","required":["key_id","tenant_id","name","plan","scope","created_at","revoked","active"],"title":"ApiKeyView","description":"A credential's metadata. There is no field for the key, and cannot be:\nonly the SHA-256 digest is stored, so this is everything we hold."},"BatchEdgeBudgetView":{"properties":{"candidate_pairs":{"type":"integer","title":"Candidate Pairs","default":0},"compared_pairs":{"type":"integer","title":"Compared Pairs","default":0},"deep_comparisons":{"type":"integer","title":"Deep Comparisons","default":0},"deep_comparison_limit":{"type":"integer","title":"Deep Comparison Limit","default":0},"deferred_pairs":{"type":"integer","title":"Deferred Pairs","default":0},"pair_limit_deferred_pairs":{"type":"integer","title":"Pair Limit Deferred Pairs","default":0},"bucket_deferred_pair_slots":{"type":"integer","title":"Bucket Deferred Pair Slots","default":0},"oversized_buckets":{"type":"integer","title":"Oversized Buckets","default":0},"oversized_bucket_records":{"type":"integer","title":"Oversized Bucket Records","default":0},"pair_limit_exhausted":{"type":"boolean","title":"Pair Limit Exhausted","default":false},"bucket_limit_exhausted":{"type":"boolean","title":"Bucket Limit Exhausted","default":false},"deep_limit_exhausted":{"type":"boolean","title":"Deep Limit Exhausted","default":false}},"type":"object","title":"BatchEdgeBudgetView","description":"Observable bounds for phase-two pair comparison.\n\nDeferred pairs remain conservatively separate or in review; they are never\nsilently treated as non-matches."},"BatchJobView":{"properties":{"job_id":{"type":"string","title":"Job Id"},"state":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","reconciliation_required","erased"],"title":"State"},"total_records":{"type":"integer","title":"Total Records"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished At"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code"}},"type":"object","required":["job_id","state","total_records","created_at","updated_at"],"title":"BatchJobView"},"BatchPairDisclosureView":{"properties":{"withheld_found":{"type":"integer","title":"Withheld Found","default":0},"withheld_returned":{"type":"integer","title":"Withheld Returned","default":0},"blocked_found":{"type":"integer","title":"Blocked Found","default":0},"blocked_returned":{"type":"integer","title":"Blocked Returned","default":0},"reported_pair_limit":{"type":"integer","title":"Reported Pair Limit","default":0},"withheld_truncated":{"type":"boolean","title":"Withheld Truncated","default":false},"blocked_truncated":{"type":"boolean","title":"Blocked Truncated","default":false}},"type":"object","title":"BatchPairDisclosureView","description":"Pairs found versus pairs returned. No cap in this contract is silent.\n\nThe pair lists are capped so one pathological batch cannot return a response\nlarger than the work it describes. When a cap bites, `*_truncated` is true\nand `*_found` still reports the real total, because a truncated list read as\na complete one understates prevented merges — the one error this surface\nmust never make.\n\n`reported_pair_limit == 0` is the fail-closed sentinel, the same one\n`BatchEdgeBudgetView.deep_comparison_limit` uses: it means this batch was\nsealed before pair reporting existed, so the pair lists are UNREPORTED and\nmust never be read as \"no pairs were found\".\n\nIt counts only pairs that were actually compared. Pairs the comparison\nbudget deferred are in `edge_budget.deferred_pairs`; they remain separate\nand are never silently treated as non-matches."},"BatchRequest":{"properties":{"records":{"items":{"$ref":"#/components/schemas/ResolveRequest"},"type":"array","maxItems":500,"minItems":1,"title":"Records"}},"additionalProperties":false,"type":"object","required":["records"],"title":"BatchRequest"},"BatchResponse":{"properties":{"batch_id":{"type":"string","title":"Batch Id"},"replayed":{"type":"boolean","title":"Replayed"},"outcomes":{"items":{"$ref":"#/components/schemas/ResolveResponse"},"type":"array","title":"Outcomes"},"edge_budget":{"$ref":"#/components/schemas/BatchEdgeBudgetView"},"withheld_pairs":{"items":{"$ref":"#/components/schemas/WithheldPairView"},"type":"array","title":"Withheld Pairs"},"blocked_pairs":{"items":{"$ref":"#/components/schemas/BlockedPairView"},"type":"array","title":"Blocked Pairs"},"pair_disclosure":{"$ref":"#/components/schemas/BatchPairDisclosureView"},"depth_ceiling":{"type":"string","title":"Depth Ceiling","description":"The deepest resolution stage any record in this batch was permitted to reach, after the plan ceiling was applied. Empty on a replay sealed before this field existed.","default":""},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"anyOf":[{"$ref":"#/components/schemas/UsageView"},{"type":"null"}]}},"type":"object","required":["batch_id","replayed","outcomes","correlation_id"],"title":"BatchResponse"},"BlockedPairView":{"properties":{"left_record_id":{"type":"string","title":"Left Record Id"},"right_record_id":{"type":"string","title":"Right Record Id"},"left_client_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Left Client Ref"},"right_client_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Right Client Ref"},"stage":{"$ref":"#/components/schemas/DecisionStage"},"probability":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Probability","description":"The score of the match the guard refused, or null when no score was produced. It is what the cascade believed BEFORE the guard overrode it, and nothing was merged."},"decision_id":{"type":"string","title":"Decision Id","description":"The receipt for the refused merge, redeemable at GET /v1/decisions/{decision_id}. It is recorded as `unresolved` with no binding confidence — the comparison happened, the merge did not — and carries the pre-guard verdict and the conflicting attributes as features."},"conflict_attributes":{"items":{"type":"string"},"type":"array","title":"Conflict Attributes","description":"The input fields that disagreed, named as the record fields you submit: lei, duns, registration_number, domain, phone, email or address. 'unmapped' means the guard named a field this version cannot translate; the block still stands."},"basis":{"type":"string","title":"Basis","description":"'decisive_identifier_conflict' when registered identifiers disagree outright, or 'corroborated_weak_evidence' when two or more individually rebuttable signals contradict."},"strength":{"type":"string","title":"Strength","description":"'cannot_link' — a cited, decisive incompatibility — or 'advisory', which is corroborated but individually rebuttable evidence and is NOT a proven incompatibility. Only a decisive identifier conflict produces cannot_link."}},"type":"object","required":["left_record_id","right_record_id","stage","decision_id","basis","strength"],"title":"BlockedPairView","description":"A merge we proposed and our own merge guard then refused.\n\nThe strongest evidence in this response: the cascade reached a MATCH on\nthese two rows and a guard overrode it because named fields disagree. This\nis a prevented merge, not an abstention — do not read it as one, and do not\nread a withheld pair as one of these.\n\n`conflict_attributes` names YOUR OWN input fields, never an internal fact\nkey, so a conflict can be checked against the file you sent.\n\n`probability` and `stage` are the PRE-GUARD comparison: they describe the\nmerge the system wanted, which is the point of the row."},"BulkErrorView":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"}},"type":"object","required":["code","message"],"title":"BulkErrorView","description":"Why one item in a bulk submission was not settled.\n\nThe same `code` vocabulary the single-item route raises —\n`review_item_not_found`, `review_already_resolved`, `reviewer_required` — so\na client handles a failure identically whichever way it submitted. No\ncorrelation id: that is a property of the request, and it is on the response\nonce."},"BulkReviewDecisionRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/BulkReviewItemRequest"},"type":"array","maxItems":200,"minItems":1,"title":"Items"},"reviewer_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Reviewer Id"}},"additionalProperties":false,"type":"object","required":["items"],"title":"BulkReviewDecisionRequest","description":"A reviewer settling a page of the queue in one call.\n\nCapped at `_BULK_VERDICT_MAX` items: each one applies a merge through the\nguard and writes an audit row, so an unbounded list is an unbounded\ntransaction budget behind a single request. A reviewer works pages, and the\ncap is a page."},"BulkReviewDecisionResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/BulkReviewResultView"},"type":"array","title":"Results"},"settled":{"type":"integer","title":"Settled"},"failed":{"type":"integer","title":"Failed"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["results","settled","failed","correlation_id"],"title":"BulkReviewDecisionResponse","description":"What a bulk sweep did, item by item.\n\n`settled` and `failed` are counts of the SAME list, given because the common\nclient behaviour is \"tell me whether to look\" and counting eighty results to\nfind out is work every caller would otherwise repeat."},"BulkReviewItemRequest":{"properties":{"review_id":{"type":"string","maxLength":100,"title":"Review Id"},"decision":{"$ref":"#/components/schemas/MatchDecisionType"},"reason":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Reason"}},"additionalProperties":false,"type":"object","required":["review_id","decision"],"title":"BulkReviewItemRequest","description":"One verdict inside a bulk submission."},"BulkReviewResultView":{"properties":{"review_id":{"type":"string","title":"Review Id"},"item":{"anyOf":[{"$ref":"#/components/schemas/ReviewItemView"},{"type":"null"}]},"error":{"anyOf":[{"$ref":"#/components/schemas/BulkErrorView"},{"type":"null"}]}},"type":"object","required":["review_id"],"title":"BulkReviewResultView","description":"One item's outcome. Exactly one of `item` and `error` is set.\n\nDeclared after `ReviewItemView` deliberately — a settled item comes back in\nfull, so a sweep needs no follow-up read to see what its verdicts did."},"CandidateExplanation":{"properties":{"displayed_name_role":{"type":"string","enum":["legal","unknown"],"title":"Displayed Name Role","default":"unknown"},"name_comparison":{"type":"string","enum":["exact_normalized","different","not_compared"],"title":"Name Comparison","default":"not_compared"},"domain_comparison":{"type":"string","enum":["exact_normalized","different","not_compared"],"title":"Domain Comparison","default":"not_compared"}},"type":"object","title":"CandidateExplanation","description":"Comparisons of the shortlist's visible fields, never a match verdict.\n\nNormalized equality is a discriminating clue, not calibrated confidence or\nan assertion that two records describe the same organization. Only the\ndisplayed legal name and domain participate; aliases, addresses and other\ncompanies' enrichment remain outside the shortlist visibility boundary."},"CandidateView":{"properties":{"entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Id"},"external":{"type":"boolean","title":"External","default":false},"legal_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"legal_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Status"},"registration_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration Number"},"jurisdiction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jurisdiction"},"lei":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lei"},"registered_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registered Address"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"explanation":{"$ref":"#/components/schemas/CandidateExplanation"},"probability":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Probability"},"adjudicator_decision":{"anyOf":[{"$ref":"#/components/schemas/MatchDecisionType"},{"type":"null"}]},"adjudicator_confidence":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Adjudicator Confidence"}},"type":"object","title":"CandidateView","description":"One entity the cascade weighed, with the probability it scored.\n\nEnough to act on and nothing more: an abstention has to hand the caller the\nshortlist it could not choose between, but a full ResolvedEntity per\ncandidate would return other companies' enrichment as a side effect of\nfailing to decide."},"CaptureRequest":{"properties":{"fields":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":64},{"type":"null"}],"title":"Fields"},"field_packs":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":8},{"type":"null"}],"title":"Field Packs"},"entity_ids":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Entity Ids"},"as_of":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"As Of"},"capture_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$"},{"type":"null"}],"title":"Capture Id"}},"additionalProperties":false,"type":"object","required":["entity_ids"],"title":"CaptureRequest"},"Clarification":{"properties":{"attribute":{"type":"string","title":"Attribute"},"question":{"type":"string","title":"Question"},"options":{"items":{"type":"string"},"type":"array","title":"Options"},"answer_by":{"type":"string","title":"Answer By","default":"Resubmit the original record with the answer in the named typed fields. Preserve client_ref; context may add explanation. The normal pipeline checks the answer; candidate options are not verified matches."},"reason":{"type":"string","enum":["candidate_ambiguity","missing_clue","missing_identifying_input"],"title":"Reason","default":"candidate_ambiguity"},"answer_fields":{"items":{"$ref":"#/components/schemas/ClarificationAnswerField"},"type":"array","title":"Answer Fields"},"candidate_options":{"items":{"$ref":"#/components/schemas/ClarificationCandidateOption"},"type":"array","title":"Candidate Options"}},"type":"object","required":["attribute","question"],"title":"Clarification","description":"Resubmit an independently known clue; a shortlist never authorizes a bind."},"ClarificationAnswerField":{"properties":{"field":{"type":"string","enum":["domain","registration_number","jurisdiction","lei","address.line1","address.postal_code","address.city","country","name"],"title":"Field"},"label":{"type":"string","title":"Label"},"required":{"type":"boolean","title":"Required","default":true},"value_type":{"type":"string","const":"text","title":"Value Type","default":"text"}},"type":"object","required":["field","label"],"title":"ClarificationAnswerField"},"ClarificationCandidateOption":{"properties":{"candidate_index":{"type":"integer","minimum":0.0,"title":"Candidate Index"},"legal_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"registration_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration Number"},"jurisdiction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jurisdiction"},"lei":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lei"},"registered_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registered Address"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},"type":"object","required":["candidate_index"],"title":"ClarificationCandidateOption","description":"A bounded visible clue, never a candidate-selection instruction."},"ClarificationOrigin":{"properties":{"record_id":{"type":"string","maxLength":64,"minLength":1,"title":"Record Id"},"decision_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Decision Id"},"job_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Job Id"},"record_index":{"anyOf":[{"type":"integer","maximum":4999.0,"minimum":0.0},{"type":"null"}],"title":"Record Index"}},"additionalProperties":false,"type":"object","required":["record_id"],"title":"ClarificationOrigin","description":"A tenant-owned unresolved submission, never an admission instruction."},"ClassificationCatalogue":{"properties":{"taxonomy":{"type":"string","const":"NACE","title":"Taxonomy"},"version":{"type":"string","enum":["2","2.1"],"title":"Version"},"latest":{"type":"boolean","title":"Latest"},"title":{"type":"string","title":"Title"},"publisher":{"type":"string","title":"Publisher"},"language":{"type":"string","const":"en","title":"Language"},"source_url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Source Url"},"licence":{"type":"string","title":"Licence"},"licence_url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Licence Url"},"attribution":{"type":"string","title":"Attribution"},"modifications":{"type":"string","title":"Modifications"},"downloaded_at":{"type":"string","format":"date-time","title":"Downloaded At"},"entries_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Entries Sha256"},"entry_count":{"type":"integer","minimum":1.0,"title":"Entry Count"},"level_counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Level Counts"},"describes_codes_only":{"type":"boolean","const":true,"title":"Describes Codes Only","default":true},"guidance_edition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guidance Edition"},"guidance_published_on":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Guidance Published On"},"guidance_url":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Guidance Url"}},"type":"object","required":["taxonomy","version","latest","title","publisher","language","source_url","licence","licence_url","attribution","modifications","downloaded_at","entries_sha256","entry_count","level_counts"],"title":"ClassificationCatalogue","description":"An official code vocabulary, separate from a company's assignment evidence."},"ClientRefLinkView":{"properties":{"client_ref":{"type":"string","title":"Client Ref"},"record_id":{"type":"string","title":"Record Id"},"decision_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decision Id"},"entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Id"},"review_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Id"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["client_ref","record_id"],"title":"ClientRefLinkView","description":"One submission made under a customer key, and everything it produced.\n\nThe crosswalk a buyer's stated success metric depends on: from a row in\ntheir own system, reach the receipt that explains what we decided about it —\neighteen months later, without a spreadsheet. Every id here is redeemable:\n`decision_id` at `GET /v1/decisions/{id}`, `entity_id` at\n`GET /v1/entities/{id}`, `review_id` at `GET /v1/review-queue/{id}`."},"ClientRefResponse":{"properties":{"client_ref":{"type":"string","title":"Client Ref"},"items":{"items":{"$ref":"#/components/schemas/ClientRefLinkView"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"anyOf":[{"$ref":"#/components/schemas/UsageView"},{"type":"null"}]}},"type":"object","required":["client_ref","items","total","limit","offset","correlation_id"],"title":"ClientRefResponse","description":"Every submission this tenant made under one customer key, oldest first.\n\nA key legitimately appears many times — a nightly sync re-sends the same row\n— and each submission is its own decision with its own receipt, so this is a\nlist rather than a single link."},"CompanyFilter":{"properties":{"field":{"type":"string","enum":["identity.legal_name","digital.domain","location.country","entity_id","created_at"],"title":"Field"},"operator":{"type":"string","enum":["eq","contains","in","gte","lte"],"title":"Operator"},"value":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"title":"Value"}},"additionalProperties":false,"type":"object","required":["field","operator","value"],"title":"CompanyFilter"},"CompanyReferenceBatchItem":{"properties":{"client_ref":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Client Ref"},"domain":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Domain"},"country":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Country"}},"additionalProperties":false,"type":"object","title":"CompanyReferenceBatchItem"},"CompanyReferenceBatchRequest":{"properties":{"records":{"items":{"$ref":"#/components/schemas/CompanyReferenceBatchItem"},"type":"array","maxItems":100,"minItems":1,"title":"Records"},"limit":{"type":"integer","maximum":10.0,"minimum":2.0,"title":"Limit","default":5}},"additionalProperties":false,"type":"object","required":["records"],"title":"CompanyReferenceBatchRequest"},"CompanyReferenceBatchResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/CompanyReferenceBatchRow"},"type":"array","maxItems":100,"minItems":1,"title":"Results"},"summary":{"additionalProperties":{"type":"integer"},"type":"object","title":"Summary"},"correlation_id":{"type":"string","title":"Correlation Id"},"credits_charged":{"type":"integer","const":0,"title":"Credits Charged","default":0},"ai_calls":{"type":"integer","const":0,"title":"Ai Calls","default":0},"note":{"type":"string","title":"Note","default":"Company-only licensed reference lookup; no AI, commercial provider calls or resolution credits. Every input row is retained, including missing domains, source failures and competing candidates. No candidate is automatically selected or written to a workspace entity. Profiles remain unverified; the source snapshot date is not a field observation or legal verification date."}},"additionalProperties":false,"type":"object","required":["results","summary","correlation_id"],"title":"CompanyReferenceBatchResponse"},"CompanyReferenceBatchRow":{"properties":{"row_number":{"type":"integer","minimum":1.0,"title":"Row Number"},"input":{"$ref":"#/components/schemas/CompanyReferenceBatchItem"},"status":{"type":"string","enum":["candidates","no_candidates","unavailable","missing_domain","invalid_input"],"title":"Status"},"reason":{"anyOf":[{"type":"string","enum":["missing_domain","unsupported_country","invalid_domain","request_deadline","not_configured","timeout","source_error","invalid_response"]},{"type":"null"}],"title":"Reason"},"result":{"anyOf":[{"$ref":"#/components/schemas/TenhawReferenceResult"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["row_number","input","status"],"title":"CompanyReferenceBatchRow"},"CompanyReferenceQuery":{"properties":{"domain":{"type":"string","maxLength":253,"minLength":1,"title":"Domain"},"country":{"anyOf":[{"type":"string","enum":["US","GB"]},{"type":"null"}],"title":"Country"},"limit":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Limit","default":20}},"additionalProperties":false,"type":"object","required":["domain"],"title":"CompanyReferenceQuery"},"CompanyReferenceResponse":{"properties":{"result":{"$ref":"#/components/schemas/TenhawReferenceResult"},"correlation_id":{"type":"string","title":"Correlation Id"},"note":{"type":"string","title":"Note","default":"Licensed vendor company records for discovery and basic enrichment. A domain hit is not a verified legal identity or an accepted resolution. Shared domains may return several records. Country is vendor-reported geography, not incorporation jurisdiction. Snapshot date is not field observation time. No tenant entities, decisions or usage credits are written by this lookup. Customer use is licensed; onward redistribution rights are not asserted."}},"type":"object","required":["result","correlation_id"],"title":"CompanyReferenceResponse"},"CompanySearch":{"properties":{"filters":{"items":{"$ref":"#/components/schemas/CompanyFilter"},"type":"array","maxItems":16,"title":"Filters"},"sort_by":{"type":"string","enum":["created_at","entity_id"],"title":"Sort By","default":"created_at"},"direction":{"type":"string","enum":["asc","desc"],"title":"Direction","default":"asc"},"as_of":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"As Of"},"cursor":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Cursor"},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit","default":50},"scan_limit":{"type":"integer","maximum":1000.0,"minimum":1.0,"title":"Scan Limit","default":500}},"additionalProperties":false,"type":"object","title":"CompanySearch"},"ComparisonEvidenceTier":{"type":"string","enum":["identifier","corroborated","uncorroborated"],"title":"ComparisonEvidenceTier","description":"Strength of the evidence that actually agrees for one comparison.\n\nPopulated fields are not evidence of a match.  In particular, a legal name,\ncountry and legal form can all be present on both sides while still naming\ntwo unrelated companies.  This tier is derived from agreement features so\nconfidence calibration cannot pool those name-only decisions with pairs\ncorroborated by an independent attribute."},"CompletenessReport":{"properties":{"requested_fields":{"items":{"type":"string"},"type":"array","title":"Requested Fields"},"field_count":{"type":"integer","minimum":0.0,"title":"Field Count"},"filled_fields_count":{"type":"integer","minimum":0.0,"title":"Filled Fields Count"},"sourced_fields_count":{"type":"integer","minimum":0.0,"title":"Sourced Fields Count"},"filled_completeness":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Filled Completeness"},"completeness":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Completeness"},"missing_fields":{"items":{"type":"string"},"type":"array","title":"Missing Fields"},"missing_reasons":{"additionalProperties":{"type":"string"},"type":"object","title":"Missing Reasons"},"missing_diagnostics":{"additionalProperties":{"$ref":"#/components/schemas/ResearchFieldDiagnostic"},"type":"object","maxProperties":22,"title":"Missing Diagnostics"},"denominator_policy":{"type":"string","const":"explicit_requested_fields_no_automatic_exclusions","title":"Denominator Policy","default":"explicit_requested_fields_no_automatic_exclusions"},"limitations":{"items":{"type":"string"},"type":"array","title":"Limitations"}},"additionalProperties":false,"type":"object","required":["requested_fields","field_count","filled_fields_count","sourced_fields_count","missing_fields","missing_reasons"],"title":"CompletenessReport","description":"Field fill and independently sourced fill over one explicit selection."},"ConfidenceBasis":{"type":"string","enum":["calibrated_probability","identifier_rule","adjudicated","human_review","no_candidate_matched","no_candidate_retrieved","inherited_from_binding","no_binding"],"title":"ConfidenceBasis","description":"What kind of evidence set `match_confidence` on one response.\n\nThe number means the same thing in every row — see `domain/confidence.py`\nfor the definition it is held to — and this says where it came from, which\nis the part a caller cannot recover from the number itself. It exists\nbecause the field it replaces was five different quantities wearing one\nname: a caller reading `0.9` could not tell a calibrated probability from a\nconstant, and the two want different handling on the same threshold."},"CorporateOwnerView":{"properties":{"name":{"type":"string","title":"Name"},"natures_of_control":{"items":{"type":"string"},"type":"array","title":"Natures Of Control"},"notified_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notified On"},"ceased_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ceased On"},"registration_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration Number"},"country_registered":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Registered"},"legal_form":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Form"},"place_registered":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Place Registered"}},"type":"object","required":["name"],"title":"CorporateOwnerView","description":"A company that controls this one, with its own registration where known."},"CreateInstallTicketRequest":{"properties":{"tenant_id":{"type":"string","maxLength":64,"title":"Tenant Id"}},"additionalProperties":false,"type":"object","required":["tenant_id"],"title":"CreateInstallTicketRequest","description":"Mint the proof a person will paste to authorize a connector for a tenant.\n\nThere is no `redirect_uri`, no `client_id` and no scope here on purpose: a\nticket says WHO the install is for and nothing about WHAT is being installed.\nBinding it to one client would mean minting a ticket per connector and would\nmake this endpoint a place where a tenant admin picks OAuth parameters, which\nis the connector's job and the operator's, not theirs."},"CreateInvestigation":{"properties":{"review_id":{"type":"string","maxLength":100,"minLength":1,"title":"Review Id"},"message":{"anyOf":[{"type":"string","maxLength":4000,"minLength":1},{"type":"null"}],"title":"Message"},"idempotency_key":{"type":"string","maxLength":128,"minLength":8,"title":"Idempotency Key"},"acknowledge_data_transfer":{"type":"boolean","const":true,"title":"Acknowledge Data Transfer"}},"additionalProperties":false,"type":"object","required":["review_id","idempotency_key","acknowledge_data_transfer"],"title":"CreateInvestigation"},"CreateKeyRequest":{"properties":{"tenant_id":{"type":"string","maxLength":64,"title":"Tenant Id"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"plan":{"$ref":"#/components/schemas/PlanTier","default":"free"},"scope":{"type":"string","enum":["read","resolve","review","erase","admin"],"title":"Scope","default":"resolve"}},"additionalProperties":false,"type":"object","required":["tenant_id","name"],"title":"CreateKeyRequest","description":"Mint a customer credential for a tenant the caller administers.\n\nOPERATOR is deliberately absent: it crosses tenant boundaries in the\ninternal workbench and is issuable only from the local maintenance CLI.\n`AccountService` enforces the same boundary behind this schema."},"CreateTenantRequest":{"properties":{"slug":{"type":"string","maxLength":41,"pattern":"^[a-z0-9][a-z0-9-]{0,40}$","title":"Slug"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"plan":{"$ref":"#/components/schemas/PlanTier","default":"free"}},"additionalProperties":false,"type":"object","required":["slug","name"],"title":"CreateTenantRequest","description":"Mint a sub-tenant. The id is DERIVED from `slug`, never supplied.\n\nA caller-chosen tenant id would make \"already exists\" an oracle over every\ncustomer id in the deployment: a reseller could probe for a competitor's\ntenant by watching for a 409. Namespacing under the caller's own tenant\nmeans a collision can only ever be with something they already own."},"CreditRule":{"properties":{"outcome":{"type":"string","title":"Outcome"},"credits":{"type":"integer","title":"Credits"},"explanation":{"type":"string","title":"Explanation"}},"type":"object","required":["outcome","credits","explanation"],"title":"CreditRule"},"CreditUsageView":{"properties":{"charged":{"type":"integer","title":"Charged"},"free_replays":{"type":"integer","title":"Free Replays"},"free_abstentions":{"type":"integer","title":"Free Abstentions"},"deep_calls":{"type":"integer","title":"Deep Calls"}},"type":"object","required":["charged","free_replays","free_abstentions","deep_calls"],"title":"CreditUsageView","description":"Where the credits went, and what was served for free."},"CrosswalkRequest":{"properties":{"name":{"type":"string","maxLength":500,"minLength":1,"title":"Name","description":"Company name is required."},"website":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Website"},"domain":{"anyOf":[{"type":"string","maxLength":253},{"type":"null"}],"title":"Domain"},"email":{"anyOf":[{"type":"string","maxLength":320},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Phone"},"registration_number":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Registration Number"},"jurisdiction":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Jurisdiction"},"lei":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Lei"},"address":{"anyOf":[{"$ref":"#/components/schemas/AddressRequest"},{"type":"null"}]},"country":{"type":"string","maxLength":64,"minLength":1,"title":"Country","description":"Required country name or ISO country code; a retrieval clue, not legal identity proof."},"trading_names":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Trading Names"},"previous_names":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Previous Names"},"incorporation_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Incorporation Date"},"legal_form":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Legal Form"},"vat_number":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Vat Number"},"duns":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Duns"},"isin":{"anyOf":[{"type":"string","maxLength":12},{"type":"null"}],"title":"Isin"},"ticker":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Ticker"},"exchange":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Exchange"},"parent_name":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Parent Name"},"context":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Context","description":"Anything you know about this company in plain language, e.g. 'recruitment company based in the UK, not the pub chain'. Use it when the name alone is ambiguous: it is weighed as evidence alongside the registers, and it is what separates two companies that share a name. It is treated as an unverified claim, so a register that contradicts it wins, and it cannot direct the answer — asserting the verdict or a confidence here has no effect."},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description","description":"Alias for context: an optional, unverified company description."},"postcode":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Postcode","description":"Alias for address.postal_code: an optional postcode or ZIP code."},"clarification_of":{"anyOf":[{"$ref":"#/components/schemas/ClarificationOrigin"},{"type":"null"}]},"extra":{"additionalProperties":{"type":"string"},"type":"object","title":"Extra"},"depth":{"$ref":"#/components/schemas/ResolutionDepth","default":"research"},"enrich":{"type":"boolean","title":"Enrich","default":true},"client_ref":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Client Ref"},"fields":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":64},{"type":"null"}],"title":"Fields","description":"Returned entity attributes; discover them at /v1/reference/enrichment-fields. Projection only: does not change identity evidence, acquisition, confidence or billing."},"field_packs":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":8},{"type":"null"}],"title":"Field Packs","description":"Named groups of returned attributes; combined with fields. Missing values have explicit status rather than invented data."},"include_field_status":{"type":"boolean","title":"Include Field Status","default":false},"quality_target":{"anyOf":[{"$ref":"#/components/schemas/QualityTarget"},{"type":"null"}],"description":"Optional delivery target, defaulting to 0.95 calibrated match confidence and 0.95 sourced completeness. Requires explicit nonempty fields or field_packs. At research depth, missing supported descriptive fields may trigger one bounded paid research pass. Unmet targets are reported for review; values are never invented."},"max_hops":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Max Hops","default":1},"as_of":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"As Of"}},"additionalProperties":false,"type":"object","required":["name","country"],"title":"CrosswalkRequest","description":"A crosswalk lookup with required name/country and optional identifiers.\n\nSubclasses the resolve request because it IS one — the crosswalk is a\nprojection of a resolution, and a second, subtly different set of input caps\nis a second thing to keep correct."},"CrosswalkResolveResponse":{"properties":{"record_id":{"type":"string","title":"Record Id"},"client_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Ref"},"decision":{"$ref":"#/components/schemas/MatchDecisionType"},"stage":{"$ref":"#/components/schemas/DecisionStage"},"confidence":{"type":"number","title":"Confidence"},"match_confidence":{"type":"number","title":"Match Confidence"},"match_confidence_basis":{"$ref":"#/components/schemas/ConfidenceBasis"},"crosswalk":{"anyOf":[{"$ref":"#/components/schemas/CrosswalkView"},{"type":"null"}]},"candidates":{"items":{"$ref":"#/components/schemas/CandidateView"},"type":"array","title":"Candidates"},"depth_capped":{"type":"boolean","title":"Depth Capped","default":false},"entity_created":{"type":"boolean","title":"Entity Created","default":false},"replayed":{"type":"boolean","title":"Replayed","default":false},"escalation_unavailable":{"type":"boolean","title":"Escalation Unavailable","default":false},"pipeline_version":{"type":"string","title":"Pipeline Version","default":""},"decision_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decision Id"},"review_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Id"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"anyOf":[{"$ref":"#/components/schemas/UsageView"},{"type":"null"}]}},"type":"object","required":["record_id","decision","stage","confidence","match_confidence","match_confidence_basis","correlation_id"],"title":"CrosswalkResolveResponse","description":"A crosswalk lookup: the resolution that found the company, then the map.\n\nCarries the decision fields as well as the crosswalk because the crosswalk\nis only worth what the match behind it is worth. `crosswalk` is null exactly\nwhen `decision` is `unresolved` — an abstention hands back `candidates`\ninstead, and inventing an identifier map for a company we could not identify\nis the one thing this surface must never do."},"CrosswalkResponse":{"properties":{"crosswalk":{"$ref":"#/components/schemas/CrosswalkView"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"anyOf":[{"$ref":"#/components/schemas/UsageView"},{"type":"null"}]}},"type":"object","required":["crosswalk","correlation_id"],"title":"CrosswalkResponse","description":"A crosswalk read back for an entity the caller already owns."},"CrosswalkView":{"properties":{"entity_id":{"type":"string","title":"Entity Id"},"legal_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Name"},"identifiers":{"items":{"$ref":"#/components/schemas/IdentifierView"},"type":"array","title":"Identifiers"},"checked_and_empty":{"items":{"$ref":"#/components/schemas/IdentifierGapView"},"type":"array","title":"Checked And Empty"},"ownership":{"$ref":"#/components/schemas/OwnershipView"}},"type":"object","required":["entity_id","ownership"],"title":"CrosswalkView","description":"The mapping between identifier systems, plus the graph hanging off it."},"CustomerFeedbackResponse":{"properties":{"label_id":{"type":"string","title":"Label Id"},"report":{"type":"string","enum":["correct","wrong"],"title":"Report"},"recorded_at":{"type":"string","format":"date-time","title":"Recorded At"},"message":{"type":"string","title":"Message"}},"type":"object","required":["label_id","report","recorded_at","message"],"title":"CustomerFeedbackResponse"},"CustomerOutcomeResponse":{"properties":{"cohort":{"additionalProperties":{"type":"integer"},"type":"object","title":"Cohort"},"period":{"additionalProperties":{"type":"string"},"type":"object","title":"Period"},"credits":{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"object","title":"Credits"},"latency":{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"number"},{"type":"string"},{"type":"null"}]},"type":"object","title":"Latency"},"field_fill":{"items":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"object"},"type":"array","title":"Field Fill"},"feedback":{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"number"},{"type":"string"},{"type":"null"}]},"type":"object","title":"Feedback"},"partial":{"type":"boolean","title":"Partial"},"limitations":{"items":{"type":"string"},"type":"array","title":"Limitations"}},"type":"object","required":["cohort","period","credits","latency","field_fill","feedback","partial","limitations"],"title":"CustomerOutcomeResponse"},"DecisionListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DecisionView"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"anyOf":[{"$ref":"#/components/schemas/UsageView"},{"type":"null"}]}},"type":"object","required":["items","total","limit","offset","correlation_id"],"title":"DecisionListResponse","description":"One page of receipts, and the size of the set they were drawn from.\n\nExists for the remediation question a compliance buyer asks by name: \"show\nme every decision taken under the old threshold, or the old pipeline\". Every\nrow already stored both; there was simply no way to ask for more than one id\nat a time, so the answer required an export and a script."},"DecisionReplayView":{"properties":{"reproduced":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Reproduced"},"recomputed_probability":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Recomputed Probability"},"pipeline_version_matches":{"type":"boolean","title":"Pipeline Version Matches"}},"type":"object","required":["pipeline_version_matches"],"title":"DecisionReplayView","description":"Proof that the stored score still reproduces from the stored features.\n\nThe receipt is only worth anything if it can be checked. Re-running the\nscorer over the features recorded at the time is that check: if the number\ncomes back identical, the probability on the receipt is the probability the\npipeline computed, and neither has been edited since."},"DecisionResponse":{"properties":{"decision":{"$ref":"#/components/schemas/DecisionView"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"anyOf":[{"$ref":"#/components/schemas/UsageView"},{"type":"null"}]}},"type":"object","required":["decision","correlation_id"],"title":"DecisionResponse"},"DecisionStage":{"type":"string","enum":["deterministic","probabilistic","llm_adjudication","agentic_research","human_review"],"title":"DecisionStage"},"DecisionUsageView":{"properties":{"decision":{"$ref":"#/components/schemas/MatchDecisionType"},"calls":{"type":"integer","title":"Calls"},"credits":{"type":"integer","title":"Credits"}},"type":"object","required":["decision","calls","credits"],"title":"DecisionUsageView"},"DecisionView":{"properties":{"decision_id":{"type":"string","title":"Decision Id"},"left_record_id":{"type":"string","title":"Left Record Id"},"right_ref":{"type":"string","title":"Right Ref"},"decision":{"$ref":"#/components/schemas/MatchDecisionType"},"stage":{"$ref":"#/components/schemas/DecisionStage"},"probability":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Probability"},"match_confidence":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Match Confidence"},"match_confidence_basis":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceBasis"},{"type":"null"}]},"features":{"additionalProperties":{"type":"number"},"type":"object","title":"Features"},"top_features":{"items":{"$ref":"#/components/schemas/FeatureContributionView"},"type":"array","title":"Top Features"},"identifier_rule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Identifier Rule"},"thresholds":{"additionalProperties":{"type":"number"},"type":"object","title":"Thresholds"},"verdict":{"anyOf":[{"$ref":"#/components/schemas/VerdictView"},{"type":"null"}]},"evidence":{"items":{"$ref":"#/components/schemas/EvidenceView"},"type":"array","title":"Evidence"},"pipeline_version":{"type":"string","title":"Pipeline Version","default":""},"reviewer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewer Id"},"reviewer_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewer Reason"},"acting_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Acting Key Id"},"acting_surface":{"anyOf":[{"$ref":"#/components/schemas/ActingSurface"},{"type":"null"}]},"decided_at":{"type":"string","format":"date-time","title":"Decided At"},"replay":{"$ref":"#/components/schemas/DecisionReplayView"}},"type":"object","required":["decision_id","left_record_id","right_ref","decision","stage","decided_at","replay"],"title":"DecisionView"},"DetachRecordRequest":{"properties":{"record_id":{"type":"string","maxLength":100,"minLength":1,"title":"Record Id"},"reviewer_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Reviewer Id"},"reason":{"type":"string","maxLength":2000,"minLength":1,"title":"Reason"}},"additionalProperties":false,"type":"object","required":["record_id","reason"],"title":"DetachRecordRequest","description":"A named human correction of one record's entity membership."},"DetachRecordResponse":{"properties":{"record_id":{"type":"string","title":"Record Id"},"source_entity":{"$ref":"#/components/schemas/EntityView"},"detached_entity":{"$ref":"#/components/schemas/EntityView"},"decision_id":{"type":"string","title":"Decision Id"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"anyOf":[{"$ref":"#/components/schemas/UsageView"},{"type":"null"}]}},"type":"object","required":["record_id","source_entity","detached_entity","decision_id","correlation_id"],"title":"DetachRecordResponse","description":"Both sides of an applied split and its immutable audit receipt."},"EndpointUsageView":{"properties":{"endpoint":{"type":"string","title":"Endpoint"},"calls":{"type":"integer","title":"Calls"},"credits":{"type":"integer","title":"Credits"}},"type":"object","required":["endpoint","calls","credits"],"title":"EndpointUsageView"},"EnrichmentAvailability":{"type":"string","enum":["available","not_configured","unavailable","pass_through_only","not_supported"],"title":"EnrichmentAvailability"},"EnrichmentField":{"properties":{"attribute":{"type":"string","title":"Attribute"},"category":{"type":"string","title":"Category"},"availability":{"$ref":"#/components/schemas/EnrichmentAvailability"},"sources":{"items":{"type":"string"},"type":"array","title":"Sources"},"ready_sources":{"items":{"type":"string"},"type":"array","title":"Ready Sources"},"storable_sources":{"items":{"type":"string"},"type":"array","title":"Storable Sources"},"resellable_sources":{"items":{"type":"string"},"type":"array","title":"Resellable Sources"},"value_contract":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value Contract"},"reference_catalogues":{"items":{"$ref":"#/components/schemas/ClassificationCatalogue"},"type":"array","title":"Reference Catalogues","description":"Official classification vocabularies; not evidence of a company assignment."},"value_type":{"type":"string","enum":["string","number","object","array","source_dependent","unknown"],"title":"Value Type","default":"unknown"},"value_schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Value Schema","description":"Conservative common value shape; source-specific schemas carry stricter detail."},"source_value_schemas":{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object","title":"Source Value Schemas","description":"Public value schemas keyed by the source that implements them, where available."},"cardinality":{"type":"string","enum":["one","many","source_dependent","unknown"],"title":"Cardinality","default":"unknown"},"units":{"items":{"type":"string"},"type":"array","title":"Units","description":"Semantic units; currency codes remain attached to actual values.","default":[]},"dimensions":{"items":{"type":"string"},"type":"array","title":"Dimensions","description":"Dimension keys when supplied, not completeness requirements for every source.","default":[]},"field_packs":{"items":{"type":"string"},"type":"array","title":"Field Packs","default":[]}},"type":"object","required":["attribute","category","availability","sources","ready_sources","storable_sources","resellable_sources"],"title":"EnrichmentField"},"EnrichmentFieldsResponse":{"properties":{"values":{"items":{"$ref":"#/components/schemas/EnrichmentField"},"type":"array","title":"Values"},"field_packs":{"items":{"$ref":"#/components/schemas/FieldPack"},"type":"array","title":"Field Packs"},"note":{"type":"string","title":"Note"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["values","note","correlation_id"],"title":"EnrichmentFieldsResponse"},"EntityChangeCategory":{"type":"string","enum":["identity","identifiers","legal_status","location","contact","financials","ownership","firmographics","other"],"title":"EntityChangeCategory"},"EntityEventsResponse":{"properties":{"events":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Events"},"next_cursor":{"type":"integer","title":"Next Cursor"},"scanned_count":{"type":"integer","title":"Scanned Count","default":0}},"type":"object","required":["events","next_cursor"],"title":"EntityEventsResponse"},"EntityListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EntityView"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque continuation for deletion-safe pagination; reuse the same filters."},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"anyOf":[{"$ref":"#/components/schemas/UsageView"},{"type":"null"}]}},"type":"object","required":["items","total","limit","offset","correlation_id"],"title":"EntityListResponse","description":"One page of the tenant's catalogue, with the total the page sits in.\n\nFull entity views rather than the summaries `/v1/entities/search` returns:\nsearch is unbilled triage over companies the caller has NOT been matched to,\nwhile this is the caller's own data, and an enumeration that withheld the\nrecords would not be an export path (GDPR art. 20) or an erasure one."},"EntityResponse":{"properties":{"entity":{"$ref":"#/components/schemas/EntityView"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"anyOf":[{"$ref":"#/components/schemas/UsageView"},{"type":"null"}]}},"type":"object","required":["entity","correlation_id"],"title":"EntityResponse"},"EntitySearchResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/EntitySummaryView"},"type":"array","title":"Results"},"limit":{"type":"integer","title":"Limit"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"anyOf":[{"$ref":"#/components/schemas/UsageView"},{"type":"null"}]}},"type":"object","required":["results","limit","correlation_id"],"title":"EntitySearchResponse"},"EntitySummaryView":{"properties":{"entity_id":{"type":"string","title":"Entity Id"},"legal_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"}},"type":"object","required":["entity_id"],"title":"EntitySummaryView","description":"A search hit: enough to recognise a company, no enrichment.\n\nDeliberately not an EntityView — search is an unbilled triage lookup over\nentities the caller has not been matched to, and returning the full golden\nrecord would make it a free enrichment endpoint."},"EntityView":{"properties":{"entity_id":{"type":"string","title":"Entity Id"},"record":{"additionalProperties":true,"type":"object","title":"Record"},"provenance":{"additionalProperties":{"$ref":"#/components/schemas/ProvenanceView"},"type":"object","title":"Provenance"},"requested_fields":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Requested Fields"},"field_status":{"additionalProperties":{"$ref":"#/components/schemas/FieldStatus"},"type":"object","title":"Field Status"},"completeness":{"anyOf":[{"$ref":"#/components/schemas/CompletenessReport"},{"type":"null"}]},"member_record_ids":{"items":{"type":"string"},"type":"array","title":"Member Record Ids"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"last_checked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Checked At"},"stalest_field_age_days":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Stalest Field Age Days"}},"type":"object","required":["entity_id","record","provenance"],"title":"EntityView"},"ErrorCodeValue":{"properties":{"value":{"type":"string","title":"Value"},"status":{"type":"integer","title":"Status"},"description":{"type":"string","title":"Description"}},"type":"object","required":["value","status","description"],"title":"ErrorCodeValue"},"ErrorCodesResponse":{"properties":{"values":{"items":{"$ref":"#/components/schemas/ErrorCodeValue"},"type":"array","title":"Values"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["values","correlation_id"],"title":"ErrorCodesResponse"},"ErrorView":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"}},"type":"object","required":["code","message"],"title":"ErrorView"},"EvaluationActivationRequest":{"properties":{"proof":{"type":"string","maxLength":4096,"minLength":1,"title":"Proof"}},"additionalProperties":false,"type":"object","required":["proof"],"title":"EvaluationActivationRequest"},"EvaluationActivationResponse":{"properties":{"tenant_id":{"type":"string","title":"Tenant Id"},"grant_id":{"type":"string","title":"Grant Id"},"key_id":{"type":"string","title":"Key Id"},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"},"key_shown_once":{"type":"boolean","title":"Key Shown Once"},"key_already_issued":{"type":"boolean","title":"Key Already Issued"},"evaluation":{"additionalProperties":true,"type":"object","title":"Evaluation"},"api_origin":{"type":"string","title":"Api Origin"},"mcp_origin":{"type":"string","title":"Mcp Origin"},"recovery":{"type":"string","title":"Recovery"},"capabilities":{"additionalProperties":true,"type":"object","title":"Capabilities"},"correlation_id":{"type":"string","title":"Correlation Id"},"smoke_test":{"additionalProperties":{"type":"string"},"type":"object","title":"Smoke Test"},"retention":{"additionalProperties":true,"type":"object","title":"Retention"}},"type":"object","required":["tenant_id","grant_id","key_id","key_shown_once","key_already_issued","evaluation","api_origin","mcp_origin","recovery","capabilities","correlation_id","smoke_test","retention"],"title":"EvaluationActivationResponse"},"EvaluationResponse":{"properties":{"offer_status":{"type":"string","title":"Offer Status","default":"planned"},"evaluation_enforced":{"type":"boolean","title":"Evaluation Enforced","default":false},"evaluation":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Evaluation"},"capabilities":{"additionalProperties":true,"type":"object","title":"Capabilities"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["correlation_id"],"title":"EvaluationResponse","description":"Credit-free lifetime entitlement and actual deployment capability discovery."},"EvidenceChainMetadata":{"properties":{"method":{"type":"string","enum":["same_page","registry_domain_and_first_party_anchor"],"title":"Method"},"identity_source_url":{"type":"string","maxLength":2048,"minLength":8,"title":"Identity Source Url"},"claim_source_url":{"type":"string","maxLength":2048,"minLength":8,"title":"Claim Source Url"},"registry_source_url":{"anyOf":[{"type":"string","maxLength":2048,"minLength":8},{"type":"null"}],"title":"Registry Source Url"},"subject_name":{"type":"string","maxLength":256,"minLength":1,"title":"Subject Name"}},"additionalProperties":false,"type":"object","required":["method","identity_source_url","claim_source_url","subject_name"],"title":"EvidenceChainMetadata","description":"Retained citation links for admitted descriptive evidence, without page text."},"EvidenceView":{"properties":{"source_id":{"type":"string","title":"Source Id"},"source_kind":{"$ref":"#/components/schemas/SourceKind"},"licence":{"$ref":"#/components/schemas/LicenceTier"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"summary":{"type":"string","title":"Summary"},"retrieved_at":{"type":"string","format":"date-time","title":"Retrieved At"}},"type":"object","required":["source_id","source_kind","licence","summary","retrieved_at"],"title":"EvidenceView","description":"One cited piece of evidence the decision was taken on."},"FeatureContributionView":{"properties":{"feature":{"type":"string","title":"Feature"},"value":{"type":"number","title":"Value"},"contribution":{"type":"number","title":"Contribution"}},"type":"object","required":["feature","value","contribution"],"title":"FeatureContributionView","description":"One feature's log-odds contribution to the score.\n\n`contribution` is value x weight, which is what actually moved the\nprobability: the raw feature value alone does not say whether it argued for\nor against, nor by how much."},"FeedEvidence":{"properties":{"source_url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Source Url"},"observed_at":{"type":"string","format":"date-time","title":"Observed At"},"licence":{"$ref":"#/components/schemas/LicenceTier","default":"pass_through"},"licence_reference":{"type":"string","maxLength":2000,"minLength":1,"title":"Licence Reference"},"confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence"},"provider":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Provider"},"provider_record_id":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Provider Record Id"}},"additionalProperties":false,"type":"object","required":["source_url","observed_at","licence_reference","confidence"],"title":"FeedEvidence"},"FeedbackRequest":{"properties":{"report":{"type":"string","enum":["correct","wrong"],"title":"Report"},"rationale":{"type":"string","maxLength":4000,"minLength":1,"title":"Rationale"},"source_uri":{"anyOf":[{"type":"string","maxLength":2000,"minLength":1},{"type":"null"}],"title":"Source Uri"},"supersedes_label_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Supersedes Label Id"}},"additionalProperties":false,"type":"object","required":["report","rationale"],"title":"FeedbackRequest"},"FieldPack":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"attributes":{"items":{"type":"string"},"type":"array","title":"Attributes"}},"type":"object","required":["name","description","attributes"],"title":"FieldPack"},"FieldStatus":{"properties":{"status":{"$ref":"#/components/schemas/FieldStatusCode"},"reason":{"type":"string","title":"Reason"},"detail":{"type":"string","title":"Detail"}},"type":"object","required":["status","reason","detail"],"title":"FieldStatus"},"FieldStatusCode":{"type":"string","enum":["present","not_supported","not_configured","source_unavailable","not_checked","licence_restricted"],"title":"FieldStatusCode"},"FinancialComparisonRequest":{"properties":{"left_statement_id":{"type":"string","maxLength":128,"minLength":1,"title":"Left Statement Id"},"right_statement_id":{"type":"string","maxLength":128,"minLength":1,"title":"Right Statement Id"}},"additionalProperties":false,"type":"object","required":["left_statement_id","right_statement_id"],"title":"FinancialComparisonRequest"},"FinancialSelection":{"properties":{"statement_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Statement Id"},"period_end":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Period End"},"relative_period":{"anyOf":[{"type":"integer","maximum":20.0,"minimum":0.0},{"type":"null"}],"title":"Relative Period"},"requirements":{"$ref":"#/components/schemas/StatementCriteria"},"preferences":{"$ref":"#/components/schemas/StatementCriteria"}},"additionalProperties":false,"type":"object","title":"FinancialSelection"},"FinancialSelectionRequest":{"properties":{"selection":{"$ref":"#/components/schemas/FinancialSelection"},"capture":{"type":"boolean","title":"Capture","default":false},"capture_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$"},{"type":"null"}],"title":"Capture Id"}},"additionalProperties":false,"type":"object","title":"FinancialSelectionRequest"},"GapStatus":{"type":"string","enum":["not_found","not_configured","not_checked","source_unavailable"],"title":"GapStatus","description":"Why an identifier system came back with nothing."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IdentifierGapView":{"properties":{"scheme":{"type":"string","title":"Scheme"},"status":{"$ref":"#/components/schemas/GapStatus"},"sources":{"items":{"type":"string"},"type":"array","title":"Sources"},"detail":{"type":"string","title":"Detail"}},"type":"object","required":["scheme","status","detail"],"title":"IdentifierGapView","description":"An identifier system that produced nothing, and why.\n\nThe half a reference-data buyer needs as much as the positives: without it\nevery absent key looks like a system we forgot to ask, and \"GLEIF has no LEI\nfor this company\" is a finding, not a silence."},"IdentifierSchemeValue":{"properties":{"scheme":{"type":"string","title":"Scheme"},"description":{"type":"string","title":"Description"},"sources":{"items":{"type":"string"},"type":"array","title":"Sources"},"available":{"type":"boolean","title":"Available"}},"type":"object","required":["scheme","description","sources","available"],"title":"IdentifierSchemeValue"},"IdentifierSchemesResponse":{"properties":{"values":{"items":{"$ref":"#/components/schemas/IdentifierSchemeValue"},"type":"array","title":"Values"},"note":{"type":"string","title":"Note"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["values","note","correlation_id"],"title":"IdentifierSchemesResponse"},"IdentifierView":{"properties":{"scheme":{"type":"string","title":"Scheme"},"value":{"type":"string","title":"Value"},"qualifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qualifier"},"attribute":{"type":"string","title":"Attribute"},"provenance":{"$ref":"#/components/schemas/ProvenanceView"}},"type":"object","required":["scheme","value","attribute","provenance"],"title":"IdentifierView","description":"One identifier, with the citation for that identifier specifically.\n\nNot the entity's provenance and not the crosswalk fact's single citation:\na caller joining a trade file across three systems has to be able to say\nwhere each individual value came from, how fresh it is and whether their\nplan lets them redistribute it."},"IdentityAliasView":{"properties":{"name":{"type":"string","title":"Name"},"role":{"type":"string","enum":["legal","trading","former"],"title":"Role"},"valid_from":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid From"},"valid_to":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid To"},"provenance":{"$ref":"#/components/schemas/ProvenanceView"}},"type":"object","required":["name","role","provenance"],"title":"IdentityAliasView"},"IdentityGap":{"properties":{"code":{"type":"string","title":"Code"},"detail":{"type":"string","title":"Detail"}},"type":"object","required":["code","detail"],"title":"IdentityGap"},"IdentityLocationView":{"properties":{"site_id":{"type":"string","title":"Site Id"},"role":{"type":"string","enum":["registered","headquarters","mailing","operating"],"title":"Role"},"address":{"type":"string","title":"Address"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"operating_asserted":{"type":"boolean","title":"Operating Asserted"},"valid_from":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid From"},"valid_to":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid To"},"provenance":{"$ref":"#/components/schemas/ProvenanceView"}},"type":"object","required":["site_id","role","address","operating_asserted","provenance"],"title":"IdentityLocationView"},"IdentityProfileView":{"properties":{"entity_id":{"type":"string","title":"Entity Id"},"as_of":{"type":"string","format":"date","title":"As Of"},"public_id_contract":{"type":"string","const":"registry-anchor-v1","title":"Public Id Contract","default":"registry-anchor-v1"},"globally_verified":{"type":"boolean","const":false,"title":"Globally Verified","default":false},"public_ids":{"items":{"$ref":"#/components/schemas/PublicIdentityAnchorView"},"type":"array","title":"Public Ids"},"aliases":{"items":{"$ref":"#/components/schemas/IdentityAliasView"},"type":"array","title":"Aliases"},"locations":{"items":{"$ref":"#/components/schemas/IdentityLocationView"},"type":"array","title":"Locations"},"conflicting_authorities":{"items":{"type":"string"},"type":"array","title":"Conflicting Authorities"},"gaps":{"items":{"$ref":"#/components/schemas/IdentityGap"},"type":"array","title":"Gaps"}},"type":"object","required":["entity_id","as_of"],"title":"IdentityProfileView"},"IdentityResponse":{"properties":{"identity":{"$ref":"#/components/schemas/IdentityProfileView"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"$ref":"#/components/schemas/UsageView"}},"type":"object","required":["identity","correlation_id","usage"],"title":"IdentityResponse"},"IndividualOwnerView":{"properties":{"name":{"type":"string","title":"Name"},"natures_of_control":{"items":{"type":"string"},"type":"array","title":"Natures Of Control"},"notified_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notified On"},"ceased_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ceased On"}},"type":"object","required":["name"],"title":"IndividualOwnerView","description":"A named person the register lists as a controller.\n\nName and control only. Date of birth and nationality are personal\nidentifiers ADR-0005 keeps out of storage, so there is deliberately no field\nhere that could carry them."},"InstallTicketResponse":{"properties":{"ticket_id":{"type":"string","title":"Ticket Id"},"tenant_id":{"type":"string","title":"Tenant Id"},"install_ticket":{"type":"string","title":"Install Ticket"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["ticket_id","tenant_id","install_ticket","expires_at","correlation_id"],"title":"InstallTicketResponse","description":"The one and only response carrying a raw install ticket.\n\nSame rule as a minted API key: only the digest is stored, so this value\ncannot be re-read. It is single-use and expires in minutes, so the remedy\nfor a lost one is to mint another rather than to recover it."},"IntelligenceResponse":{"properties":{"entity":{"$ref":"#/components/schemas/EntityView"},"evaluated_at":{"type":"string","format":"date-time","title":"Evaluated At"},"local_sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Local Sources"},"correlation_id":{"type":"string","title":"Correlation Id"},"note":{"type":"string","title":"Note","default":"Current stored facts and configured local observations only. No paid calls or writes. Read each field's source date, scope, methodology and rights; missing is not zero. Source refresh does not guarantee new company observations."}},"type":"object","required":["entity","evaluated_at","local_sources","correlation_id"],"title":"IntelligenceResponse"},"IntervalView":{"properties":{"point":{"type":"number","title":"Point"},"low":{"type":"number","title":"Low"},"high":{"type":"number","title":"High"},"successes":{"type":"integer","title":"Successes"},"trials":{"type":"integer","title":"Trials"}},"type":"object","required":["point","low","high","successes","trials"],"title":"IntervalView","description":"A rate reported with its 95% Wilson interval and the sample behind it.\n\n`point` alone is not evidence: an automation rate of 1.0 over nine calls and\none over nine thousand are the same number and not the same claim. The\ninterval is what makes a figure quotable in a renewal conversation."},"InvestigationList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/InvestigationView"},"type":"array","title":"Items"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["items","limit","offset"],"title":"InvestigationList"},"InvestigationView":{"properties":{"id":{"type":"string","title":"Id"},"review_id":{"type":"string","title":"Review Id"},"status":{"type":"string","title":"Status"},"provider_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Status"},"turn_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Turn Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"followup_count":{"type":"integer","title":"Followup Count"},"max_followups":{"type":"integer","title":"Max Followups"},"messages":{"items":{"$ref":"#/components/schemas/MessageView"},"type":"array","title":"Messages"},"review":{"anyOf":[{"$ref":"#/components/schemas/ReviewItemView"},{"type":"null"}]},"decisions":{"items":{"$ref":"#/components/schemas/DecisionView"},"type":"array","title":"Decisions"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorView"},{"type":"null"}]},"has_more_messages":{"type":"boolean","title":"Has More Messages","default":false},"messages_after":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Messages After"}},"type":"object","required":["id","review_id","status","created_at","updated_at","followup_count","max_followups"],"title":"InvestigationView"},"IssuedKeyResponse":{"properties":{"key":{"$ref":"#/components/schemas/ApiKeyView"},"api_key":{"type":"string","title":"Api Key"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["key","api_key","correlation_id"],"title":"IssuedKeyResponse","description":"The one and only response that ever carries a raw key.\n\n`api_key` is shown here and never again — it is not stored, so it cannot be\nre-read, only rotated. Callers must persist it at this moment or lose it."},"JurisdictionValue":{"properties":{"value":{"type":"string","title":"Value"},"name":{"type":"string","title":"Name"},"registry_backed":{"type":"boolean","title":"Registry Backed"},"registry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registry"}},"type":"object","required":["value","name","registry_backed"],"title":"JurisdictionValue"},"JurisdictionsResponse":{"properties":{"values":{"items":{"$ref":"#/components/schemas/JurisdictionValue"},"type":"array","title":"Values"},"note":{"type":"string","title":"Note"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["values","note","correlation_id"],"title":"JurisdictionsResponse"},"LabelDecisionSnapshot":{"properties":{"decision_id":{"type":"string","maxLength":64,"minLength":1,"title":"Decision Id"},"right_ref":{"type":"string","maxLength":255,"minLength":1,"title":"Right Ref"},"predicted_decision":{"$ref":"#/components/schemas/MatchDecisionType"},"decision_stage":{"$ref":"#/components/schemas/DecisionStage"},"probability":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Probability"},"match_confidence":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Match Confidence"},"match_confidence_source":{"$ref":"#/components/schemas/SnapshotConfidenceSource"},"match_confidence_basis":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceBasis"},{"type":"null"}]},"features":{"additionalProperties":{"type":"number"},"type":"object","title":"Features"},"thresholds":{"additionalProperties":{"type":"number"},"type":"object","title":"Thresholds"},"scorer_version":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Scorer Version"},"model_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Model Id"},"prompt_version":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Prompt Version"},"pipeline_version":{"type":"string","maxLength":64,"minLength":1,"title":"Pipeline Version"},"decided_at":{"type":"string","format":"date-time","title":"Decided At"}},"type":"object","required":["decision_id","right_ref","predicted_decision","decision_stage","match_confidence_source","pipeline_version","decided_at"],"title":"LabelDecisionSnapshot","description":"Server-derived prediction state frozen beside a ground-truth label.\n\nThis is what makes a label export directly evaluable. A caller may name a\ndecision id, but never supplies these values: they are copied from the\ntenant-scoped decision receipt, or from the review item's original\nabstention context. Null means no stored prediction existed, not that the\nprediction was empty."},"LabelProvenance":{"properties":{"source_event_id":{"type":"string","maxLength":255,"minLength":1,"title":"Source Event Id"},"actor_id":{"type":"string","maxLength":255,"minLength":1,"title":"Actor Id"},"acting_key_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Acting Key Id"},"source_uri":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Source Uri"},"rationale":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Rationale"}},"type":"object","required":["source_event_id","actor_id"],"title":"LabelProvenance","description":"Immutable attribution for one label event.\n\n``source_event_id`` is the producer's idempotency key.  Together with\ntenant and source it names one real-world labelling event, so retrying an\nimport cannot silently create a second training example.  ``acting_key_id``\nis server-derived on API and review paths; it must never be accepted from a\nrequest body."},"LicenceTier":{"type":"string","enum":["open","licensed","pass_through"],"title":"LicenceTier","description":"Legal storability of a fact (ADR-0004).\n\nOPEN: public-domain / open-licensed / self-derived — storable and resellable.\nLICENSED: storable during an active data licence (e.g. PDL data licence).\nPASS_THROUGH: contractually prohibited from warehousing — return-only."},"LimitsResponse":{"properties":{"rate_limits":{"items":{"$ref":"#/components/schemas/RateLimitValue"},"type":"array","title":"Rate Limits"},"plan":{"type":"string","title":"Plan"},"rate_limit_multiplier":{"type":"number","title":"Rate Limit Multiplier"},"resale_rights":{"type":"boolean","title":"Resale Rights"},"max_batch_size":{"type":"integer","title":"Max Batch Size"},"max_page_size":{"type":"integer","title":"Max Page Size"},"max_request_bytes":{"type":"integer","title":"Max Request Bytes"},"max_request_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Request Seconds"},"max_batch_deep_comparisons":{"type":"integer","title":"Max Batch Deep Comparisons"},"deployment_replicas":{"type":"integer","title":"Deployment Replicas"},"max_concurrent_deep_resolutions_per_replica":{"type":"integer","title":"Max Concurrent Deep Resolutions Per Replica"},"max_concurrent_deep_resolutions_deployment":{"type":"integer","title":"Max Concurrent Deep Resolutions Deployment"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["rate_limits","plan","rate_limit_multiplier","resale_rights","max_batch_size","max_page_size","max_request_bytes","max_request_seconds","max_batch_deep_comparisons","deployment_replicas","max_concurrent_deep_resolutions_per_replica","max_concurrent_deep_resolutions_deployment","correlation_id"],"title":"LimitsResponse"},"MarketCapGap":{"properties":{"code":{"type":"string","title":"Code"},"detail":{"type":"string","title":"Detail"},"source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Id"}},"additionalProperties":false,"type":"object","required":["code","detail"],"title":"MarketCapGap"},"MarketCapHistoryResponse":{"properties":{"history":{"$ref":"#/components/schemas/MarketCapHistoryView"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"$ref":"#/components/schemas/UsageView"}},"type":"object","required":["history","correlation_id","usage"],"title":"MarketCapHistoryResponse"},"MarketCapHistoryView":{"properties":{"entity_id":{"type":"string","title":"Entity Id"},"as_of":{"type":"string","format":"date","title":"As Of"},"convention":{"type":"string","const":"month_end","title":"Convention","default":"month_end"},"months":{"type":"integer","title":"Months"},"window_start":{"type":"string","format":"date","title":"Window Start"},"window_end":{"type":"string","format":"date","title":"Window End"},"status":{"type":"string","enum":["available","partial","unavailable"],"title":"Status"},"available_months":{"type":"integer","title":"Available Months"},"complete":{"type":"boolean","title":"Complete"},"scope":{"type":"string","enum":["issuer","share_class"],"title":"Scope"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"share_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Class"},"rows":{"items":{"$ref":"#/components/schemas/MarketCapMonthView"},"type":"array","title":"Rows"},"gaps":{"items":{"$ref":"#/components/schemas/MarketCapGap"},"type":"array","title":"Gaps","default":[]},"external_lookup_performed":{"type":"boolean","const":false,"title":"External Lookup Performed","default":false},"publication_date_policy":{"type":"string","title":"Publication Date Policy","default":"Actual source publication timestamps are returned when supplied; an unknown publication date stays null. Calendar month-end is a valuation reference, not an invented publication timestamp."},"note":{"type":"string","title":"Note","default":"Completed calendar months before the as_of month, using source-asserted month-end closes only. Values are base currency units. No interpolation, forward fill, currency conversion, share-class aggregation or provider calls. Complete describes this requested local window, not global data coverage."}},"additionalProperties":false,"type":"object","required":["entity_id","as_of","months","window_start","window_end","status","available_months","complete","scope","rows"],"title":"MarketCapHistoryView"},"MarketCapMonthView":{"properties":{"reference_date":{"type":"string","format":"date","title":"Reference Date"},"status":{"type":"string","enum":["available","missing","conflicting","stale","ineligible"],"title":"Status"},"selected":{"anyOf":[{"$ref":"#/components/schemas/MarketCapObservationView"},{"type":"null"}]},"observations":{"items":{"$ref":"#/components/schemas/MarketCapObservationView"},"type":"array","title":"Observations"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes"},"truncated":{"type":"boolean","title":"Truncated","default":false}},"type":"object","required":["reference_date","status"],"title":"MarketCapMonthView"},"MarketCapObservationView":{"properties":{"observation_id":{"type":"string","title":"Observation Id"},"value":{"type":"number","title":"Value"},"currency":{"type":"string","title":"Currency"},"scope":{"type":"string","enum":["issuer","share_class"],"title":"Scope"},"share_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Class"},"reference_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Reference Date"},"valuation_at":{"type":"string","format":"date-time","title":"Valuation At"},"valuation_date":{"type":"string","format":"date","title":"Valuation Date"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"captured_at":{"type":"string","format":"date-time","title":"Captured At"},"price_basis":{"type":"string","enum":["unadjusted","adjusted","unknown"],"title":"Price Basis"},"methodology":{"type":"string","title":"Methodology"},"basis":{"type":"string","enum":["reported","derived"],"title":"Basis","default":"reported"},"calculated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Calculated At"},"input_evidence":{"items":{"$ref":"#/components/schemas/ValuationInputEvidence"},"type":"array","title":"Input Evidence"},"provenance":{"$ref":"#/components/schemas/ProvenanceView"}},"type":"object","required":["observation_id","value","currency","scope","valuation_at","valuation_date","captured_at","price_basis","methodology","provenance"],"title":"MarketCapObservationView"},"MatchDecisionType":{"type":"string","enum":["match","new_entity","no_match","unresolved"],"title":"MatchDecisionType"},"MatchRequest":{"properties":{"left":{"$ref":"#/components/schemas/ResolveRequest"},"right":{"$ref":"#/components/schemas/ResolveRequest"},"depth":{"$ref":"#/components/schemas/ResolutionDepth","default":"research"}},"additionalProperties":false,"type":"object","required":["left","right"],"title":"MatchRequest"},"MatchResponse":{"properties":{"decision":{"$ref":"#/components/schemas/MatchDecisionType"},"stage":{"$ref":"#/components/schemas/DecisionStage"},"probability":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Probability"},"match_confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Match Confidence","default":0.0},"match_confidence_basis":{"$ref":"#/components/schemas/ConfidenceBasis","default":"no_binding"},"depth_capped":{"type":"boolean","title":"Depth Capped","default":false},"escalation_unavailable":{"type":"boolean","title":"Escalation Unavailable","default":false},"no_identifying_signal":{"type":"boolean","title":"No Identifying Signal","default":false},"rationale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rationale"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"anyOf":[{"$ref":"#/components/schemas/UsageView"},{"type":"null"}]}},"type":"object","required":["decision","stage","correlation_id"],"title":"MatchResponse"},"MemberRequest":{"properties":{"customer_reference":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Customer Reference"},"role":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Role"}},"additionalProperties":false,"type":"object","title":"MemberRequest"},"MessageView":{"properties":{"id":{"type":"string","title":"Id"},"role":{"type":"string","enum":["user","assistant"],"title":"Role"},"text":{"type":"string","title":"Text"}},"type":"object","required":["id","role","text"],"title":"MessageView"},"OAuthGrantListResponse":{"properties":{"grants":{"items":{"$ref":"#/components/schemas/OAuthGrantView"},"type":"array","title":"Grants"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["grants","correlation_id"],"title":"OAuthGrantListResponse"},"OAuthGrantView":{"properties":{"grant_id":{"type":"string","title":"Grant Id"},"client_id":{"type":"string","title":"Client Id"},"client_name":{"type":"string","title":"Client Name"},"tenant_id":{"type":"string","title":"Tenant Id"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["grant_id","client_id","client_name","tenant_id","scopes","created_at"],"title":"OAuthGrantView","description":"One live connector authorization, as the tenant's administrator sees it."},"ObservedControllerView":{"properties":{"entity_id":{"type":"string","title":"Entity Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"identifiers":{"items":{"$ref":"#/components/schemas/OrganizationIdentifier"},"type":"array","title":"Identifiers"},"path":{"items":{"type":"string"},"type":"array","title":"Path"},"path_relationships":{"items":{"type":"string"},"type":"array","title":"Path Relationships"},"valid_from":{"type":"string","format":"date","title":"Valid From"},"valid_to":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid To"},"evidence":{"items":{"$ref":"#/components/schemas/OwnershipPathEdgeView"},"type":"array","title":"Evidence"}},"type":"object","required":["entity_id","name","identifiers","path","path_relationships","valid_from","evidence"],"title":"ObservedControllerView"},"OrganizationIdentifier":{"properties":{"scheme":{"type":"string","enum":["lei","company_number"],"title":"Scheme"},"value":{"type":"string","maxLength":200,"minLength":1,"title":"Value"},"qualifier":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Qualifier"}},"additionalProperties":false,"type":"object","required":["scheme","value"],"title":"OrganizationIdentifier"},"OrganizationalUltimateOwnerView":{"properties":{"owner_type":{"type":"string","const":"organization","title":"Owner Type","default":"organization"},"name":{"type":"string","title":"Name"},"identifiers":{"items":{"$ref":"#/components/schemas/OrganizationIdentifier"},"type":"array","title":"Identifiers"},"control_basis":{"type":"string","enum":["share_ownership","control"],"title":"Control Basis"},"source_entity_id":{"type":"string","title":"Source Entity Id"},"valid_from":{"type":"string","format":"date","title":"Valid From"},"valid_to":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid To"},"provenance":{"$ref":"#/components/schemas/ProvenanceView"}},"type":"object","required":["name","identifiers","control_basis","source_entity_id","valid_from","provenance"],"title":"OrganizationalUltimateOwnerView"},"OwnershipEdgeView":{"properties":{"source_entity_id":{"type":"string","title":"Source Entity Id"},"target_entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Entity Id"},"relationship":{"type":"string","title":"Relationship"},"relationship_basis":{"type":"string","title":"Relationship Basis","default":"control"},"scheme":{"type":"string","title":"Scheme"},"value":{"type":"string","title":"Value"},"qualifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qualifier"},"attribute":{"type":"string","title":"Attribute"},"depth":{"type":"integer","title":"Depth"},"provenance":{"$ref":"#/components/schemas/ProvenanceView"},"valid_from":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid From"},"valid_to":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid To"}},"type":"object","required":["source_entity_id","relationship","scheme","value","attribute","depth","provenance"],"title":"OwnershipEdgeView"},"OwnershipLinkView":{"properties":{"relationship":{"type":"string","title":"Relationship"},"scheme":{"type":"string","title":"Scheme"},"value":{"type":"string","title":"Value"},"attribute":{"type":"string","title":"Attribute"},"provenance":{"$ref":"#/components/schemas/ProvenanceView"}},"type":"object","required":["relationship","scheme","value","attribute","provenance"],"title":"OwnershipLinkView","description":"One ownership edge, cited. The parent is named by LEI and not resolved."},"OwnershipNextStepView":{"properties":{"entity_id":{"type":"string","title":"Entity Id"},"relationship":{"type":"string","title":"Relationship"},"action":{"type":"string","enum":["resolve_identifier","review_evidence"],"title":"Action"},"reason":{"type":"string","title":"Reason"},"provenance":{"$ref":"#/components/schemas/ProvenanceView"},"suggested_resolve":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Suggested Resolve"}},"type":"object","required":["entity_id","relationship","action","reason","provenance"],"title":"OwnershipNextStepView"},"OwnershipNodeView":{"properties":{"entity_id":{"type":"string","title":"Entity Id"},"legal_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Name"},"depth":{"type":"integer","title":"Depth"},"identifiers":{"items":{"$ref":"#/components/schemas/IdentifierView"},"type":"array","title":"Identifiers"}},"type":"object","required":["entity_id","depth"],"title":"OwnershipNodeView"},"OwnershipPathEdgeView":{"properties":{"source_entity_id":{"type":"string","title":"Source Entity Id"},"target_entity_id":{"type":"string","title":"Target Entity Id"},"relationship":{"type":"string","const":"corporate_controller","title":"Relationship","default":"corporate_controller"},"relationship_basis":{"type":"string","const":"control","title":"Relationship Basis","default":"control"},"scheme":{"type":"string","title":"Scheme"},"value":{"type":"string","title":"Value"},"qualifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qualifier"},"valid_from":{"type":"string","format":"date","title":"Valid From"},"valid_to":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid To"},"provenance":{"$ref":"#/components/schemas/ProvenanceView"}},"type":"object","required":["source_entity_id","target_entity_id","scheme","value","valid_from","provenance"],"title":"OwnershipPathEdgeView"},"OwnershipPlanResponse":{"properties":{"entity_id":{"type":"string","title":"Entity Id"},"as_of":{"type":"string","format":"date","title":"As Of"},"max_hops":{"type":"integer","title":"Max Hops"},"local_graph_complete":{"type":"boolean","title":"Local Graph Complete"},"coverage_complete":{"type":"boolean","const":false,"title":"Coverage Complete","default":false},"external_lookup_performed":{"type":"boolean","const":false,"title":"External Lookup Performed","default":false},"next_steps":{"items":{"$ref":"#/components/schemas/OwnershipNextStepView"},"type":"array","title":"Next Steps"},"remaining_gaps":{"items":{"$ref":"#/components/schemas/IdentityGap"},"type":"array","title":"Remaining Gaps"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"$ref":"#/components/schemas/UsageView"}},"type":"object","required":["entity_id","as_of","max_hops","local_graph_complete","next_steps","remaining_gaps","correlation_id","usage"],"title":"OwnershipPlanResponse"},"OwnershipView":{"properties":{"max_hops":{"type":"integer","title":"Max Hops"},"as_of":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"As Of"},"hops_attempted":{"type":"integer","title":"Hops Attempted","default":0},"hops_traversed":{"type":"integer","title":"Hops Traversed"},"direct_parent":{"anyOf":[{"$ref":"#/components/schemas/OwnershipLinkView"},{"type":"null"}]},"ultimate_parent":{"anyOf":[{"$ref":"#/components/schemas/OwnershipLinkView"},{"type":"null"}]},"corporate_owners":{"items":{"$ref":"#/components/schemas/CorporateOwnerView"},"type":"array","title":"Corporate Owners"},"individual_owners":{"items":{"$ref":"#/components/schemas/IndividualOwnerView"},"type":"array","title":"Individual Owners"},"owners_provenance":{"anyOf":[{"$ref":"#/components/schemas/ProvenanceView"},{"type":"null"}]},"nodes":{"items":{"$ref":"#/components/schemas/OwnershipNodeView"},"type":"array","title":"Nodes"},"edges":{"items":{"$ref":"#/components/schemas/OwnershipEdgeView"},"type":"array","title":"Edges"},"ubo_candidates":{"items":{"$ref":"#/components/schemas/UBOCandidateView"},"type":"array","title":"Ubo Candidates"},"cycles":{"items":{"$ref":"#/components/schemas/resolvd__api__schemas__OwnershipCycleView"},"type":"array","title":"Cycles"},"not_traversed":{"items":{"$ref":"#/components/schemas/TraversalGapView"},"type":"array","title":"Not Traversed"},"local_graph_complete":{"type":"boolean","title":"Local Graph Complete","default":false},"coverage_complete":{"type":"boolean","title":"Coverage Complete","default":false},"external_lookup_performed":{"type":"boolean","title":"External Lookup Performed","default":false}},"type":"object","required":["max_hops","hops_traversed"],"title":"OwnershipView","description":"Bounded, tenant-local ownership over facts the entity already holds.\n\n`max_hops` is caller-configurable from 1 to 10. Local traversal completeness\nnever establishes global beneficial-ownership coverage; accounting\nconsolidation remains distinct from share ownership and control."},"PepRole":{"properties":{"role":{"type":"string","maxLength":500,"minLength":1,"title":"Role"},"jurisdiction":{"type":"string","maxLength":500,"minLength":1,"title":"Jurisdiction"},"organization":{"anyOf":[{"type":"string","maxLength":500,"minLength":1},{"type":"null"}],"title":"Organization"},"started_on":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Started On"},"ended_on":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Ended On"},"source_url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Source Url"}},"additionalProperties":false,"type":"object","required":["role","jurisdiction","source_url"],"title":"PepRole"},"PlanTier":{"type":"string","enum":["free","starter","growth","scale"],"title":"PlanTier"},"PlanValue":{"properties":{"tier":{"type":"string","title":"Tier"},"monthly_usd":{"type":"number","title":"Monthly Usd"},"included_credits":{"type":"integer","title":"Included Credits"},"deep_attempts":{"type":"integer","title":"Deep Attempts"},"max_depth":{"$ref":"#/components/schemas/ResolutionDepth"},"resale_rights":{"type":"boolean","title":"Resale Rights"}},"type":"object","required":["tier","monthly_usd","included_credits","deep_attempts","max_depth","resale_rights"],"title":"PlanValue"},"PortfolioRename":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"}},"additionalProperties":false,"type":"object","required":["name"],"title":"PortfolioRename"},"PortfolioRequest":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"portfolio_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Portfolio Id"}},"additionalProperties":false,"type":"object","required":["name"],"title":"PortfolioRequest"},"PricingResponse":{"properties":{"credit_rules":{"items":{"$ref":"#/components/schemas/CreditRule"},"type":"array","title":"Credit Rules"},"plans":{"items":{"$ref":"#/components/schemas/PlanValue"},"type":"array","title":"Plans"},"enforced":{"type":"boolean","title":"Enforced"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["credit_rules","plans","enforced","correlation_id"],"title":"PricingResponse"},"ProvenanceView":{"properties":{"source_id":{"type":"string","title":"Source Id"},"source_kind":{"anyOf":[{"$ref":"#/components/schemas/SourceKind"},{"type":"null"}]},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"evidence_chain":{"anyOf":[{"$ref":"#/components/schemas/EvidenceChainMetadata"},{"type":"null"}]},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"provider_record_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Record Id"},"licence_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Licence Reference"},"retrieved_at":{"type":"string","format":"date-time","title":"Retrieved At"},"source_as_of":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Source As Of"},"confidence":{"type":"number","title":"Confidence"},"licence":{"$ref":"#/components/schemas/LicenceTier"},"first_seen_at":{"type":"string","format":"date-time","title":"First Seen At"},"last_checked_at":{"type":"string","format":"date-time","title":"Last Checked At"},"checks":{"type":"integer","title":"Checks"},"valid_from":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid From"},"valid_to":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid To"},"age_days":{"type":"number","title":"Age Days"},"licence_permits_resale":{"type":"boolean","title":"Licence Permits Resale","default":false},"resellable":{"type":"boolean","title":"Resellable","default":false}},"type":"object","required":["source_id","retrieved_at","confidence","licence","first_seen_at","last_checked_at","checks","age_days"],"title":"ProvenanceView","description":"Where a value came from, and how current it is.\n\n`retrieved_at` is when we got it; `last_checked_at` is when a source last\nre-confirmed it and `checks` is how many times. A caller deciding whether to\ntrust a value needs the second pair, not the first: a value first seen a\nyear ago and re-confirmed this morning is current, and one retrieved\nyesterday from a single sighting is not the same thing (ADR-0013)."},"PublicIdentityAnchorView":{"properties":{"public_id":{"type":"string","title":"Public Id"},"authority":{"type":"string","title":"Authority"},"value":{"type":"string","title":"Value"},"status":{"type":"string","enum":["current","historical"],"title":"Status"},"valid_from":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid From"},"valid_to":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid To"},"provenance":{"$ref":"#/components/schemas/ProvenanceView"}},"type":"object","required":["public_id","authority","value","status","provenance"],"title":"PublicIdentityAnchorView"},"QualityReport":{"properties":{"target":{"$ref":"#/components/schemas/QualityTarget"},"status":{"type":"string","enum":["met","review_required"],"title":"Status"},"match_confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Match Confidence"},"match_confidence_basis":{"$ref":"#/components/schemas/ConfidenceBasis"},"accepted_match":{"type":"boolean","title":"Accepted Match"},"confidence_target_met":{"type":"boolean","title":"Confidence Target Met"},"completeness_target_met":{"type":"boolean","title":"Completeness Target Met"},"completeness":{"$ref":"#/components/schemas/CompletenessReport"},"quality_research_attempted":{"type":"boolean","title":"Quality Research Attempted","default":false},"quality_research_unavailable":{"type":"boolean","title":"Quality Research Unavailable","default":false},"reasons":{"items":{"type":"string"},"type":"array","title":"Reasons"},"limitations":{"items":{"type":"string"},"type":"array","title":"Limitations"}},"additionalProperties":false,"type":"object","required":["target","status","match_confidence","match_confidence_basis","accepted_match","confidence_target_met","completeness_target_met","completeness","reasons"],"title":"QualityReport","description":"Whether a returned candidate-backed match satisfies the explicit target."},"QualityTarget":{"properties":{"minimum_match_confidence":{"type":"number","maximum":1.0,"minimum":0.9,"title":"Minimum Match Confidence","default":0.95},"minimum_completeness":{"type":"number","maximum":1.0,"exclusiveMinimum":0.0,"title":"Minimum Completeness","default":0.95}},"additionalProperties":false,"type":"object","title":"QualityTarget","description":"An opt-in delivery requirement, never a dial for changing confidence."},"RateLimitValue":{"properties":{"scope":{"type":"string","title":"Scope"},"requests_per_minute":{"type":"integer","title":"Requests Per Minute"},"base_requests_per_minute":{"type":"integer","title":"Base Requests Per Minute"}},"type":"object","required":["scope","requests_per_minute","base_requests_per_minute"],"title":"RateLimitValue"},"ReconcileKeyRequest":{"properties":{"client_ref":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Client Ref"},"lei":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Lei"},"registration_number":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Registration Number"},"jurisdiction":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Jurisdiction"},"domain":{"anyOf":[{"type":"string","maxLength":253},{"type":"null"}],"title":"Domain"}},"additionalProperties":false,"type":"object","title":"ReconcileKeyRequest","description":"One identifier to reconcile, and the caller's own key for the row it repairs.\n\n`client_ref` is echoed back verbatim and is the only thing joining a result\nto the row it belongs to: the whole motion is \"repair a page of foreign\nkeys\", and a positional answer would put the repair on the wrong row the\nfirst time anything is filtered. Larger catalogues page at the deployment's\npublished batch ceiling."},"ReconcileRequest":{"properties":{"keys":{"items":{"$ref":"#/components/schemas/ReconcileKeyRequest"},"type":"array","maxItems":500,"minItems":1,"title":"Keys"}},"additionalProperties":false,"type":"object","required":["keys"],"title":"ReconcileRequest"},"ReconcileResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/ReconciledKeyView"},"type":"array","title":"Results"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"anyOf":[{"$ref":"#/components/schemas/UsageView"},{"type":"null"}]}},"type":"object","required":["results","correlation_id"],"title":"ReconcileResponse"},"ReconcileStatus":{"type":"string","enum":["matched","not_found","ambiguous"],"title":"ReconcileStatus"},"ReconciledKeyView":{"properties":{"client_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Ref"},"status":{"$ref":"#/components/schemas/ReconcileStatus"},"entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Id"},"matched_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matched On"},"ambiguous_entity_ids":{"items":{"type":"string"},"type":"array","title":"Ambiguous Entity Ids"}},"type":"object","required":["status"],"title":"ReconciledKeyView"},"ReferenceListResponse":{"properties":{"values":{"items":{"$ref":"#/components/schemas/ReferenceValue"},"type":"array","title":"Values"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["values","correlation_id"],"title":"ReferenceListResponse"},"ReferenceValue":{"properties":{"value":{"type":"string","title":"Value"},"description":{"type":"string","title":"Description"}},"type":"object","required":["value","description"],"title":"ReferenceValue"},"RegistriesResponse":{"properties":{"values":{"items":{"$ref":"#/components/schemas/RegistryValue"},"type":"array","title":"Values"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["values","correlation_id"],"title":"RegistriesResponse"},"RegistryValue":{"properties":{"source_id":{"type":"string","title":"Source Id"},"name":{"type":"string","title":"Name"},"licence":{"$ref":"#/components/schemas/LicenceTier"},"coverage":{"type":"string","title":"Coverage"},"configured":{"type":"boolean","title":"Configured"}},"type":"object","required":["source_id","name","licence","coverage","configured"],"title":"RegistryValue"},"RelationshipRequest":{"properties":{"left_entity_id":{"type":"string","maxLength":64,"minLength":1,"title":"Left Entity Id"},"right_entity_id":{"type":"string","maxLength":64,"minLength":1,"title":"Right Entity Id"},"max_hops":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Max Hops","default":3},"limit":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Limit","default":10},"as_of":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"As Of"},"capture":{"type":"boolean","title":"Capture","default":false},"capture_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$"},{"type":"null"}],"title":"Capture Id"}},"additionalProperties":false,"type":"object","required":["left_entity_id","right_entity_id"],"title":"RelationshipRequest"},"ResearchFieldDiagnostic":{"properties":{"attribute":{"type":"string","enum":["industry.description","location.hq_address","digital.linkedin","contact.email","industry.services","industry.tags","industry.sectors","location.operating_addresses","technology.stack","financials.ebitda","financials.enterprise_value","financials.market_cap","financials.income","financials.expenditure","financials.revenue_history","financials.revenue_growth","registration.charity_number","ownership.ultimate_owner","funding.rounds","intangible.trademarks","intangible.trademark_holders","intent.events"],"title":"Attribute"},"status":{"type":"string","enum":["not_returned","withheld","unavailable","invalid_response"],"title":"Status"},"reason":{"type":"string","enum":["no_supported_finding","evidence_not_found","identity_not_anchored","subject_not_supported","source_not_fetched","field_semantics_not_supported","invalid_finding","research_timed_out","research_cancelled","research_failed","invalid_research_response"],"title":"Reason"},"basis":{"type":"string","enum":["execution","admission","model_reported"],"title":"Basis"}},"additionalProperties":false,"type":"object","required":["attribute","status","reason","basis"],"title":"ResearchFieldDiagnostic","description":"Closed vocabulary; no URLs, names, prompts, page text or model prose."},"ResolutionDepth":{"type":"string","enum":["probabilistic","adjudication","research"],"title":"ResolutionDepth","description":"How far down the cascade a caller is willing to pay to go.\n\nThe cascade costs orders of magnitude more at the bottom than at the top\n(docs/COMMERCIAL-MODEL.md §2), so the depth cap is simultaneously the\ncaller's price ceiling and our cost ceiling. Capping does not lower\nprecision — a capped record abstains instead of being decided cheaply."},"ResolutionLabel":{"properties":{"label_id":{"type":"string","maxLength":64,"minLength":1,"title":"Label Id"},"tenant_id":{"type":"string","maxLength":64,"minLength":1,"title":"Tenant Id"},"schema_version":{"type":"integer","minimum":1.0,"title":"Schema Version","default":1},"revision":{"type":"integer","minimum":1.0,"title":"Revision","default":1},"supersedes_label_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Supersedes Label Id"},"record_id":{"type":"string","maxLength":64,"minLength":1,"title":"Record Id"},"record_fingerprint":{"anyOf":[{"type":"string","maxLength":64,"minLength":64,"pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Record Fingerprint"},"candidate_ref":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Candidate Ref"},"entity_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Entity Id"},"review_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Review Id"},"decision_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Decision Id"},"decision_snapshot":{"anyOf":[{"$ref":"#/components/schemas/LabelDecisionSnapshot"},{"type":"null"}]},"label":{"$ref":"#/components/schemas/ResolutionLabelValue"},"source":{"$ref":"#/components/schemas/ResolutionLabelSource"},"evidence_tier":{"$ref":"#/components/schemas/ComparisonEvidenceTier"},"model_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Model Id"},"prompt_version":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Prompt Version"},"pipeline_version":{"type":"string","maxLength":64,"minLength":1,"title":"Pipeline Version"},"labelled_at":{"type":"string","format":"date-time","title":"Labelled At"},"recorded_at":{"type":"string","format":"date-time","title":"Recorded At"},"provenance":{"$ref":"#/components/schemas/LabelProvenance"},"provenance_sha256":{"type":"string","maxLength":64,"title":"Provenance Sha256","default":""}},"type":"object","required":["tenant_id","record_id","label","source","evidence_tier","pipeline_version","labelled_at","recorded_at","provenance"],"title":"ResolutionLabel","description":"One append-only label and its place in an optional correction chain.\n\nCorrections never update an old row.  They append a new row naming\n``supersedes_label_id``; the repository assigns the next ``revision``.\n``provenance_sha256`` seals every field other than the seal itself, making\naccidental mutation detectable on export and read-back."},"ResolutionLabelListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ResolutionLabel"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["items","total","limit","offset","correlation_id"],"title":"ResolutionLabelListResponse","description":"One page of a tenant's current label heads (or full revision history)."},"ResolutionLabelResponse":{"properties":{"item":{"$ref":"#/components/schemas/ResolutionLabel"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["item","correlation_id"],"title":"ResolutionLabelResponse","description":"One immutable label, including its verifiable provenance seal."},"ResolutionLabelSource":{"type":"string","enum":["reviewer","customer","import"],"title":"ResolutionLabelSource","description":"Which independently attributable channel supplied a label."},"ResolutionLabelSubmitRequest":{"properties":{"label":{"$ref":"#/components/schemas/ResolutionLabelValue"},"source":{"$ref":"#/components/schemas/ResolutionLabelSource","default":"customer"},"record_id":{"type":"string","maxLength":64,"minLength":1,"title":"Record Id"},"candidate_ref":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Candidate Ref"},"entity_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Entity Id"},"decision_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Decision Id"},"evidence_tier":{"$ref":"#/components/schemas/ComparisonEvidenceTier"},"source_event_id":{"type":"string","maxLength":255,"minLength":1,"title":"Source Event Id"},"actor_id":{"type":"string","maxLength":255,"minLength":1,"title":"Actor Id"},"labelled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Labelled At"},"model_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Model Id"},"prompt_version":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Prompt Version"},"pipeline_version":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Pipeline Version"},"source_uri":{"anyOf":[{"type":"string","maxLength":2000,"minLength":1},{"type":"null"}],"title":"Source Uri"},"rationale":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Rationale"},"supersedes_label_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Supersedes Label Id"}},"additionalProperties":false,"type":"object","required":["label","record_id","evidence_tier","source_event_id","actor_id"],"title":"ResolutionLabelSubmitRequest","description":"Independent truth supplied by a customer or curated import.\n\nReviewer labels cannot be submitted here: they are derived from a settled\nreview item so their four-eyes provenance cannot be forged in JSON.\n``source_event_id`` is the producer's idempotency key and must be stable\nacross retries."},"ResolutionLabelValue":{"type":"string","enum":["match","no_match","new_entity","ambiguous"],"title":"ResolutionLabelValue","description":"The externally supplied truth about one resolution question."},"ResolveRequest":{"properties":{"name":{"type":"string","maxLength":500,"minLength":1,"title":"Name","description":"Company name is required."},"website":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Website"},"domain":{"anyOf":[{"type":"string","maxLength":253},{"type":"null"}],"title":"Domain"},"email":{"anyOf":[{"type":"string","maxLength":320},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Phone"},"registration_number":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Registration Number"},"jurisdiction":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Jurisdiction"},"lei":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Lei"},"address":{"anyOf":[{"$ref":"#/components/schemas/AddressRequest"},{"type":"null"}]},"country":{"type":"string","maxLength":64,"minLength":1,"title":"Country","description":"Required country name or ISO country code; a retrieval clue, not legal identity proof."},"trading_names":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Trading Names"},"previous_names":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Previous Names"},"incorporation_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Incorporation Date"},"legal_form":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Legal Form"},"vat_number":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Vat Number"},"duns":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Duns"},"isin":{"anyOf":[{"type":"string","maxLength":12},{"type":"null"}],"title":"Isin"},"ticker":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Ticker"},"exchange":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Exchange"},"parent_name":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Parent Name"},"context":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Context","description":"Anything you know about this company in plain language, e.g. 'recruitment company based in the UK, not the pub chain'. Use it when the name alone is ambiguous: it is weighed as evidence alongside the registers, and it is what separates two companies that share a name. It is treated as an unverified claim, so a register that contradicts it wins, and it cannot direct the answer — asserting the verdict or a confidence here has no effect."},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description","description":"Alias for context: an optional, unverified company description."},"postcode":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Postcode","description":"Alias for address.postal_code: an optional postcode or ZIP code."},"clarification_of":{"anyOf":[{"$ref":"#/components/schemas/ClarificationOrigin"},{"type":"null"}]},"extra":{"additionalProperties":{"type":"string"},"type":"object","title":"Extra"},"depth":{"$ref":"#/components/schemas/ResolutionDepth","default":"research"},"enrich":{"type":"boolean","title":"Enrich","default":true},"client_ref":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Client Ref"},"fields":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":64},{"type":"null"}],"title":"Fields","description":"Returned entity attributes; discover them at /v1/reference/enrichment-fields. Projection only: does not change identity evidence, acquisition, confidence or billing."},"field_packs":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":8},{"type":"null"}],"title":"Field Packs","description":"Named groups of returned attributes; combined with fields. Missing values have explicit status rather than invented data."},"include_field_status":{"type":"boolean","title":"Include Field Status","default":false},"quality_target":{"anyOf":[{"$ref":"#/components/schemas/QualityTarget"},{"type":"null"}],"description":"Optional delivery target, defaulting to 0.95 calibrated match confidence and 0.95 sourced completeness. Requires explicit nonempty fields or field_packs. At research depth, missing supported descriptive fields may trigger one bounded paid research pass. Unmet targets are reported for review; values are never invented."}},"additionalProperties":false,"type":"object","required":["name","country"],"title":"ResolveRequest","description":"Mirrors CompanyRecord's caller-suppliable fields with hard input caps.\n\nWHAT MAY BE ADDED HERE, and where it goes. Every field below that describes\nthe company is mapped onto `CompanyRecord` and is therefore inside the\ncontent fingerprint — see that class for the rule and why both halves of it\nmatter. Fields that describe the CALL rather than the company (`depth`,\n`enrich`, `client_ref`) stay on this request and never reach the record.\n\nThe identifiers are two classes and the distinction decides where in the\ncascade they may ever be used:\n\n* STRONG IDENTIFIER — one value, one company, issued by a body that\n  guarantees it. `lei`, `registration_number` + `jurisdiction`, `duns`, and\n  `ticker` + `exchange`. These are the only kind that could justify a\n  deterministic short-circuit.\n* CORROBORATING SIGNAL — narrows the field, settles nothing alone.\n  `vat_number`, `isin`, `incorporation_date`, `legal_form`, `trading_names`,\n  `previous_names`, `parent_name`, `context`, `extra`.\n\nTwo of these look strong and are not, which is the whole reason the\ndistinction is written down rather than inferred from the field name:\n\n* `vat_number` — group VAT registration is MANY companies to ONE number, so\n  equal VAT numbers do not imply one company. It may corroborate a merge and\n  may never carry one.\n* `isin` — identifies a security, not an issuer. One company has many, and a\n  financing subsidiary issues under itself. It becomes strong only once\n  GLEIF's ISIN->LEI mapping resolves it to an LEI, which already is.\n\nREJECTED, with the reason, because a wide schema nobody populates is worse\nthan a narrow one:\n\n* `employee_count` — self-reported, ranges disagree between every source\n  that publishes one, and it moves monthly. Enrichment already carries\n  `financials.employees_range`; a caller-supplied count would contradict it\n  routinely and the contradiction would mean nothing.\n* `industry_code` — not comparable without also negotiating a scheme (SIC\n  62020 and NAICS 541512 are the same activity and share no characters), and\n  every member of a group files the same code, so it separates nothing.\n  `context` carries the same intent — \"IT consultancy, not the pub of\n  the same name\" — with no scheme to agree on.\n* `company_status` — a register-derived attribute we already fetch\n  (`registration.status` in `llm.prompts.ENRICHMENT_ATTRIBUTES`). A caller\n  asserting it adds no information and can only contradict the register,\n  which is the one source that outranks them."},"ResolveResponse":{"properties":{"record_id":{"type":"string","title":"Record Id"},"run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Id"},"client_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Ref"},"clarification_of":{"anyOf":[{"$ref":"#/components/schemas/ClarificationOrigin"},{"type":"null"}]},"decision":{"$ref":"#/components/schemas/MatchDecisionType"},"stage":{"$ref":"#/components/schemas/DecisionStage"},"confidence":{"type":"number","title":"Confidence"},"match_confidence":{"type":"number","title":"Match Confidence"},"match_confidence_basis":{"$ref":"#/components/schemas/ConfidenceBasis"},"verification":{"$ref":"#/components/schemas/VerificationFreshness","description":"Freshness of source identity evidence at resolution; independent of cached match confidence and each returned field's observation dates."},"entity":{"anyOf":[{"$ref":"#/components/schemas/EntityView"},{"type":"null"}]},"quality":{"anyOf":[{"$ref":"#/components/schemas/QualityReport"},{"type":"null"}]},"quality_research_attempted":{"type":"boolean","title":"Quality Research Attempted","default":false},"quality_research_unavailable":{"type":"boolean","title":"Quality Research Unavailable","default":false},"quality_field_diagnostics":{"items":{"$ref":"#/components/schemas/ResearchFieldDiagnostic"},"type":"array","maxItems":22,"title":"Quality Field Diagnostics"},"candidates_considered":{"type":"integer","title":"Candidates Considered"},"candidates":{"items":{"$ref":"#/components/schemas/CandidateView"},"type":"array","title":"Candidates"},"candidate":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Candidate"},"clarification":{"anyOf":[{"$ref":"#/components/schemas/Clarification"},{"type":"null"}]},"more_input_needed":{"type":"boolean","title":"More Input Needed","default":false},"depth_capped":{"type":"boolean","title":"Depth Capped","default":false},"entity_created":{"type":"boolean","title":"Entity Created","default":false},"replayed":{"type":"boolean","title":"Replayed","default":false},"escalation_unavailable":{"type":"boolean","title":"Escalation Unavailable","default":false},"no_identifying_signal":{"type":"boolean","title":"No Identifying Signal","default":false},"pipeline_version":{"type":"string","title":"Pipeline Version","default":""},"decision_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decision Id"},"review_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Id"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"anyOf":[{"$ref":"#/components/schemas/UsageView"},{"type":"null"}]}},"type":"object","required":["record_id","decision","stage","confidence","match_confidence","match_confidence_basis","candidates_considered","correlation_id"],"title":"ResolveResponse"},"ReviewDecisionRequest":{"properties":{"decision":{"$ref":"#/components/schemas/MatchDecisionType"},"reviewer_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Reviewer Id"},"reason":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Reason"}},"additionalProperties":false,"type":"object","required":["decision"],"title":"ReviewDecisionRequest","description":"A reviewer's verdict, tied to an authenticated review credential.\n\n`reviewer_id` remains as a transition assertion, but it cannot choose the\naudit principal: the server derives that from the REVIEW key's immutable\nhuman-assigned name. If supplied, it must equal that authenticated name."},"ReviewItemView":{"properties":{"review_id":{"type":"string","title":"Review Id"},"submitted_record":{"additionalProperties":{"type":"string"},"type":"object","title":"Submitted Record"},"candidate_entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Entity Id"},"candidate":{"anyOf":[{"$ref":"#/components/schemas/EntitySummaryView"},{"type":"null"}]},"candidate_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Name"},"candidate_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Domain"},"candidates":{"items":{"$ref":"#/components/schemas/CandidateView"},"type":"array","title":"Candidates"},"decision":{"$ref":"#/components/schemas/MatchDecisionType"},"stage":{"$ref":"#/components/schemas/DecisionStage"},"decision_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decision Id"},"right_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Right Ref"},"evidence":{"items":{"$ref":"#/components/schemas/EvidenceView"},"type":"array","title":"Evidence"},"probability":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Probability"},"evidence_tier":{"$ref":"#/components/schemas/ComparisonEvidenceTier"},"top_features":{"items":{"$ref":"#/components/schemas/FeatureContributionView"},"type":"array","title":"Top Features"},"thresholds":{"additionalProperties":{"type":"number"},"type":"object","title":"Thresholds"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"resolved":{"type":"boolean","title":"Resolved"},"reviewer_decision":{"anyOf":[{"$ref":"#/components/schemas/MatchDecisionType"},{"type":"null"}]},"reviewer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewer Id"},"reviewer_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewer Reason"},"applied":{"type":"boolean","title":"Applied","default":false},"applied_entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Applied Entity Id"},"blocked_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blocked Reason"},"verdict_decision_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verdict Decision Id"},"settlement_pending":{"type":"boolean","title":"Settlement Pending","default":false},"settlement_started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Settlement Started At"},"label_capture_pending":{"type":"boolean","title":"Label Capture Pending","default":false},"resolution_label_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Label Id"},"redacted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Redacted At"}},"type":"object","required":["review_id","submitted_record","decision","stage","evidence_tier","created_at","resolved"],"title":"ReviewItemView"},"ReviewQueueResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ReviewItemView"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"open_backlog":{"type":"integer","title":"Open Backlog"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["items","total","open_backlog","limit","offset","correlation_id"],"title":"ReviewQueueResponse"},"ReviewSort":{"type":"string","enum":["oldest_first","newest_first","confidence_desc","confidence_asc"],"title":"ReviewSort","description":"The orders a reviewer may walk the abstention queue in.\n\nA StrEnum so callers above this layer need not import from infrastructure:\nthe API defines its own query enum and hands the store its string value, the\nsame way `ReviewStatus` arrives here already reduced to `resolved: bool`."},"ReviewStatus":{"type":"string","enum":["open","resolved","all"],"title":"ReviewStatus","description":"Which slice of the queue a listing asks for."},"RotateKeyRequest":{"properties":{"grace_seconds":{"anyOf":[{"type":"integer","maximum":2592000.0,"minimum":0.0},{"type":"null"}],"title":"Grace Seconds"}},"additionalProperties":false,"type":"object","title":"RotateKeyRequest","description":"Replace a credential, optionally overriding the deployment's grace window."},"RotatedKeyResponse":{"properties":{"key":{"$ref":"#/components/schemas/ApiKeyView"},"api_key":{"type":"string","title":"Api Key"},"correlation_id":{"type":"string","title":"Correlation Id"},"superseded":{"$ref":"#/components/schemas/ApiKeyView"}},"type":"object","required":["key","api_key","correlation_id","superseded"],"title":"RotatedKeyResponse","description":"A rotation: the new credential, plus what became of the old one."},"RunRoomAccountingReceipt":{"properties":{"basis":{"type":"string","enum":["credit_settled","shadow_ledger_confirmed","enforced_ledger_confirmed"],"title":"Basis"},"usage_event_id":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"},{"type":"null"}],"title":"Usage Event Id"},"ledger_write_confirmed":{"type":"boolean","title":"Ledger Write Confirmed"},"operation_sha256":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}],"title":"Operation Sha256"},"credits":{"type":"integer","maximum":5.0,"minimum":0.0,"title":"Credits"},"deep":{"type":"boolean","title":"Deep"},"enforced":{"type":"boolean","title":"Enforced"},"provider_usage_status":{"type":"string","const":"unknown","title":"Provider Usage Status","default":"unknown"},"metered_at":{"type":"string","format":"date-time","title":"Metered At"}},"additionalProperties":false,"type":"object","required":["basis","ledger_write_confirmed","credits","deep","enforced","metered_at"],"title":"RunRoomAccountingReceipt","description":"Application-credit evidence, not a provider invoice or execution outcome."},"RunRoomContext":{"properties":{"tenant_id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","title":"Tenant Id"},"run_id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","title":"Run Id"},"record_id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","title":"Record Id"}},"additionalProperties":false,"type":"object","required":["tenant_id","run_id","record_id"],"title":"RunRoomContext"},"RunRoomExecutionManifest":{"properties":{"context":{"$ref":"#/components/schemas/RunRoomContext"},"input_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$","title":"Input Sha256"},"normalized_input_refs":{"items":{"type":"string"},"type":"array","maxItems":32,"title":"Normalized Input Refs","default":[]},"status":{"type":"string","enum":["pending","completed","failed"],"title":"Status","default":"pending"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"output":{"anyOf":[{"$ref":"#/components/schemas/RunRoomStageMetadata"},{"type":"null"}]},"events":{"items":{"$ref":"#/components/schemas/RunRoomStageEvent"},"type":"array","maxItems":128,"title":"Events","default":[]},"events_omitted":{"type":"integer","minimum":0.0,"title":"Events Omitted","default":0},"accounting_status":{"type":"string","enum":["pending","recorded"],"title":"Accounting Status","default":"pending"},"accounting":{"anyOf":[{"$ref":"#/components/schemas/RunRoomAccountingReceipt"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["context","input_sha256","created_at","updated_at"],"title":"RunRoomExecutionManifest"},"RunRoomManifest":{"properties":{"artifact_id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","title":"Artifact Id"},"tenant_id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","title":"Tenant Id"},"run_id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","title":"Run Id"},"record_id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","title":"Record Id"},"event_ordinal":{"type":"integer","maximum":32.0,"minimum":1.0,"title":"Event Ordinal"},"status":{"type":"string","enum":["pending","stored","deleting"],"title":"Status"},"source_url":{"type":"string","maxLength":2048,"title":"Source Url"},"representation":{"type":"string","enum":["native_pdf","native_text"],"title":"Representation"},"policy":{"$ref":"#/components/schemas/RunRoomPolicy"},"raw_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$","title":"Raw Sha256"},"extracted_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$","title":"Extracted Sha256"},"markdown_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$","title":"Markdown Sha256"},"markdown_bytes":{"type":"integer","maximum":1000000.0,"minimum":0.0,"title":"Markdown Bytes"},"raw_bytes":{"type":"integer","maximum":5242880.0,"minimum":0.0,"title":"Raw Bytes"},"extracted_bytes":{"type":"integer","maximum":1000000.0,"minimum":0.0,"title":"Extracted Bytes"},"extraction_status":{"type":"string","enum":["ready","partial","unavailable"],"title":"Extraction Status"},"extraction_reason":{"type":"string","enum":["complete","text_limit","page_limit","no_text","unsupported_shape","invalid_base64","input_limit","encrypted_pdf","invalid_pdf","parser_timeout","parser_cpu_budget","parser_failed","parser_unavailable","cache_limit","invalid_url","structure_limit"],"title":"Extraction Reason"},"retained_segments":{"type":"integer","maximum":32.0,"minimum":0.0,"title":"Retained Segments"},"retained_chars":{"type":"integer","maximum":64000.0,"minimum":0.0,"title":"Retained Chars"},"truncated":{"type":"boolean","title":"Truncated"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"additionalProperties":false,"type":"object","required":["artifact_id","tenant_id","run_id","record_id","event_ordinal","status","source_url","representation","policy","raw_sha256","extracted_sha256","markdown_sha256","markdown_bytes","raw_bytes","extracted_bytes","extraction_status","extraction_reason","retained_segments","retained_chars","truncated","created_at","expires_at"],"title":"RunRoomManifest","description":"Protected metadata; raw/extracted object locations are never exposed."},"RunRoomPolicy":{"properties":{"storage_permitted":{"type":"boolean","title":"Storage Permitted","default":false},"purpose":{"type":"string","const":"temporary_first_party_research","title":"Purpose","default":"temporary_first_party_research"},"policy_reference":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.:/-]+$","title":"Policy Reference"},"source_licence":{"anyOf":[{"$ref":"#/components/schemas/LicenceTier"},{"type":"null"}]},"proven_target_host":{"anyOf":[{"type":"string","maxLength":253},{"type":"null"}],"title":"Proven Target Host"},"official_registry_hosts":{"items":{"type":"string"},"type":"array","maxItems":16,"title":"Official Registry Hosts","default":[]}},"additionalProperties":false,"type":"object","required":["policy_reference"],"title":"RunRoomPolicy","description":"An application-vetted purpose receipt, never supplied by model output.\n\nAn owner's temporary first-party diagnostic permission does not relicense\nthe source or allow redistribution. Known pass-through restrictions still\nprohibit storage. Missing permission/host proof is a skip, not inference."},"RunRoomResponse":{"properties":{"run":{"$ref":"#/components/schemas/RunRoomExecutionManifest"},"artifacts":{"items":{"$ref":"#/components/schemas/RunRoomManifest"},"type":"array","maxItems":32,"title":"Artifacts"}},"additionalProperties":false,"type":"object","required":["run"],"title":"RunRoomResponse"},"RunRoomStageEvent":{"properties":{"ordinal":{"type":"integer","maximum":128.0,"minimum":1.0,"title":"Ordinal"},"attempt":{"type":"integer","maximum":32.0,"minimum":1.0,"title":"Attempt","default":1},"stage":{"type":"string","enum":["input","reference_discovery","identity","sources","research","extraction","validation","delivery","accounting"],"title":"Stage"},"status":{"type":"string","enum":["pending","completed","failed","skipped"],"title":"Status"},"metadata":{"$ref":"#/components/schemas/RunRoomStageMetadata"},"at":{"type":"string","format":"date-time","title":"At"}},"additionalProperties":false,"type":"object","required":["ordinal","stage","status","at"],"title":"RunRoomStageEvent"},"RunRoomStageMetadata":{"properties":{"stage_events_omitted":{"type":"integer","minimum":0.0,"title":"Stage Events Omitted","default":0},"artifact_observations_omitted":{"type":"integer","minimum":0.0,"title":"Artifact Observations Omitted","default":0},"input_sha256":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}],"title":"Input Sha256"},"input_refs":{"items":{"type":"string"},"type":"array","maxItems":32,"title":"Input Refs","default":[]},"source_id":{"anyOf":[{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,63}$"},{"type":"null"}],"title":"Source Id"},"source_status":{"anyOf":[{"type":"string","enum":["found","not_found","unavailable","skipped"]},{"type":"null"}],"title":"Source Status"},"skip_reason":{"anyOf":[{"type":"string","enum":["not_requested","depth_cap","not_configured","no_identifier"]},{"type":"null"}],"title":"Skip Reason"},"source_count":{"anyOf":[{"type":"integer","maximum":10000.0,"minimum":0.0},{"type":"null"}],"title":"Source Count"},"candidate_count":{"anyOf":[{"type":"integer","maximum":10000.0,"minimum":0.0},{"type":"null"}],"title":"Candidate Count"},"requested_fields":{"anyOf":[{"type":"integer","maximum":1000.0,"minimum":0.0},{"type":"null"}],"title":"Requested Fields"},"sourced_fields":{"anyOf":[{"type":"integer","maximum":1000.0,"minimum":0.0},{"type":"null"}],"title":"Sourced Fields"},"quality_met":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Quality Met"},"decision_ref":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"},{"type":"null"}],"title":"Decision Ref"},"journal_ref":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$"},{"type":"null"}],"title":"Journal Ref"},"artifact_refs":{"items":{"type":"string"},"type":"array","maxItems":32,"title":"Artifact Refs","default":[]},"provider_usage_complete":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Provider Usage Complete"},"error":{"anyOf":[{"type":"string","enum":["unavailable","timeout","cancelled","invalid_response","storage_failed","erased"]},{"type":"null"}],"title":"Error"}},"additionalProperties":false,"type":"object","title":"RunRoomStageMetadata","description":"Closed operational facts, never arbitrary model/tool payloads."},"ScreeningCoverage":{"properties":{"source_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,79}$","title":"Source Id"},"kind":{"anyOf":[{"type":"string","enum":["sanctions","pep","adverse_media"]},{"type":"null"}],"title":"Kind"},"state":{"type":"string","enum":["fresh","stale","missing","invalid","future"],"title":"State"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"retrieved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Retrieved At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"generated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Generated At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"entry_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entry Count"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"license":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"License"},"snapshot_sha256":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Sha256"}},"additionalProperties":false,"type":"object","required":["source_id","kind","state"],"title":"ScreeningCoverage"},"ScreeningIdentifier":{"properties":{"scheme":{"type":"string","maxLength":500,"minLength":1,"title":"Scheme"},"value":{"type":"string","maxLength":500,"minLength":1,"title":"Value"},"country":{"anyOf":[{"type":"string","maxLength":500,"minLength":1},{"type":"null"}],"title":"Country"}},"additionalProperties":false,"type":"object","required":["scheme","value"],"title":"ScreeningIdentifier","description":"Scheme and issuing jurisdiction are part of an identifier's meaning."},"ScreeningKindResult":{"properties":{"kind":{"type":"string","enum":["sanctions","pep","adverse_media"],"title":"Kind"},"state":{"type":"string","enum":["potential_match","no_match","not_screened"],"title":"State"},"coverage_complete":{"type":"boolean","title":"Coverage Complete"},"reasons":{"items":{"type":"string"},"type":"array","title":"Reasons"},"coverage":{"items":{"$ref":"#/components/schemas/ScreeningCoverage"},"type":"array","title":"Coverage"},"matches":{"items":{"$ref":"#/components/schemas/ScreeningMatch"},"type":"array","title":"Matches"},"total_matches":{"type":"integer","title":"Total Matches"},"truncated":{"type":"boolean","title":"Truncated"}},"additionalProperties":false,"type":"object","required":["kind","state","coverage_complete","reasons","coverage","matches","total_matches","truncated"],"title":"ScreeningKindResult"},"ScreeningMatch":{"properties":{"source_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,79}$","title":"Source Id"},"snapshot_version":{"type":"string","title":"Snapshot Version"},"entry_id":{"type":"string","title":"Entry Id"},"listed_name":{"type":"string","title":"Listed Name"},"subject_type":{"type":"string","enum":["organization","person","vessel","aircraft","unknown"],"title":"Subject Type"},"matched_name":{"type":"string","title":"Matched Name"},"name_similarity":{"type":"number","title":"Name Similarity"},"match_basis":{"items":{"type":"string"},"type":"array","title":"Match Basis"},"conflicting_evidence":{"items":{"type":"string"},"type":"array","title":"Conflicting Evidence"},"alias_quality":{"anyOf":[{"type":"string","enum":["strong","weak","unspecified"]},{"type":"null"}],"title":"Alias Quality"},"requires_additional_identification":{"type":"boolean","title":"Requires Additional Identification","default":true},"programs":{"items":{"type":"string"},"type":"array","title":"Programs"},"source_url":{"type":"string","title":"Source Url"},"pep_roles":{"items":{"$ref":"#/components/schemas/PepRole"},"type":"array","title":"Pep Roles"},"adverse_events":{"items":{"$ref":"#/components/schemas/AdverseEvent"},"type":"array","title":"Adverse Events"},"adverse_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adverse Summary"}},"additionalProperties":false,"type":"object","required":["source_id","snapshot_version","entry_id","listed_name","subject_type","matched_name","name_similarity","match_basis","conflicting_evidence","programs","source_url","pep_roles","adverse_events"],"title":"ScreeningMatch"},"ScreeningRequest":{"properties":{"name":{"type":"string","maxLength":500,"minLength":1,"title":"Name"},"subject_type":{"type":"string","enum":["organization","person","vessel","aircraft","unknown"],"title":"Subject Type","default":"organization"},"aliases":{"items":{"type":"string","maxLength":500,"minLength":1},"type":"array","maxItems":20,"title":"Aliases"},"identifiers":{"items":{"$ref":"#/components/schemas/ScreeningIdentifier"},"type":"array","maxItems":20,"title":"Identifiers"},"country":{"anyOf":[{"type":"string","maxLength":500,"minLength":1},{"type":"null"}],"title":"Country"},"date_of_birth":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date Of Birth"},"kinds":{"items":{"type":"string","enum":["sanctions","pep","adverse_media"]},"type":"array","maxItems":3,"minItems":1,"title":"Kinds"},"sources":{"anyOf":[{"additionalProperties":{"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,79}$"},"type":"array"},"propertyNames":{"enum":["sanctions","pep","adverse_media"]},"type":"object"},{"type":"null"}],"title":"Sources"},"min_name_similarity":{"type":"number","maximum":1.0,"minimum":0.65,"title":"Min Name Similarity","default":0.82},"max_matches_per_kind":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Max Matches Per Kind","default":20}},"additionalProperties":false,"type":"object","required":["name"],"title":"ScreeningRequest"},"ScreeningResponse":{"properties":{"screened_at":{"type":"string","format":"date-time","title":"Screened At"},"algorithm_version":{"type":"string","title":"Algorithm Version","default":"evidence-screening-v1"},"results":{"items":{"$ref":"#/components/schemas/ScreeningKindResult"},"type":"array","title":"Results"},"limitations":{"items":{"type":"string"},"type":"array","title":"Limitations"}},"additionalProperties":false,"type":"object","required":["screened_at","results"],"title":"ScreeningResponse"},"SendMessage":{"properties":{"message":{"type":"string","maxLength":4000,"minLength":1,"title":"Message"},"idempotency_key":{"type":"string","maxLength":128,"minLength":8,"title":"Idempotency Key"}},"additionalProperties":false,"type":"object","required":["message","idempotency_key"],"title":"SendMessage"},"SnapshotConfidenceSource":{"type":"string","enum":["no_binding","decision_receipt","unavailable"],"title":"SnapshotConfidenceSource","description":"Where a frozen decision snapshot obtained match confidence."},"SourceAccess":{"type":"string","enum":["public","keyed_public","commercial"],"title":"SourceAccess","description":"How this deployment obtains access to the source."},"SourceCapabilitiesResponse":{"properties":{"values":{"items":{"$ref":"#/components/schemas/SourceCapabilityValue"},"type":"array","title":"Values"},"note":{"type":"string","title":"Note"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["values","note","correlation_id"],"title":"SourceCapabilitiesResponse"},"SourceCapability":{"properties":{"display_name":{"type":"string","minLength":1,"title":"Display Name"},"access":{"$ref":"#/components/schemas/SourceAccess"},"operations":{"items":{"$ref":"#/components/schemas/SourceOperation"},"type":"array","title":"Operations"},"identifiers":{"items":{"type":"string"},"type":"array","title":"Identifiers","default":[]},"attributes":{"items":{"type":"string"},"type":"array","title":"Attributes","default":[]},"ownership_hops":{"type":"integer","minimum":0.0,"title":"Ownership Hops","default":0},"temporal_history":{"type":"boolean","title":"Temporal History","default":false},"credential_required":{"type":"boolean","title":"Credential Required","default":false},"freshness_target_seconds":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Freshness Target Seconds"},"post_match_enrichment":{"type":"boolean","title":"Post Match Enrichment","default":false}},"type":"object","required":["display_name","access","operations"],"title":"SourceCapability","description":"Static connector contract, declared next to the adapter implementation."},"SourceCapabilityValue":{"properties":{"source_id":{"type":"string","title":"Source Id"},"source_kind":{"type":"string","title":"Source Kind"},"configured":{"type":"boolean","title":"Configured"},"licence":{"anyOf":[{"$ref":"#/components/schemas/LicenceTier"},{"type":"null"}]},"countries":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Countries"},"capability":{"$ref":"#/components/schemas/SourceCapability"},"runtime":{"$ref":"#/components/schemas/SourceRuntimeStatus"},"available_attributes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Available Attributes"},"attribute_licences":{"additionalProperties":{"$ref":"#/components/schemas/LicenceTier"},"type":"object","title":"Attribute Licences","default":{}}},"type":"object","required":["source_id","source_kind","configured","capability","runtime"],"title":"SourceCapabilityValue","description":"A connector contract and its process-local observed state."},"SourceComparisonRequest":{"properties":{"fields":{"items":{"type":"string"},"type":"array","maxItems":64,"minItems":1,"title":"Fields"},"include_history":{"type":"boolean","title":"Include History","default":false},"capture":{"type":"boolean","title":"Capture","default":false},"capture_id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$"},{"type":"null"}],"title":"Capture Id"}},"additionalProperties":false,"type":"object","required":["fields"],"title":"SourceComparisonRequest"},"SourceKind":{"type":"string","enum":["registry","filing","web","commercial","customer","reviewer","inferred"],"title":"SourceKind","description":"Where a fact came from — drives survivorship precedence."},"SourceOperation":{"type":"string","enum":["exact_lookup","candidate_search","enrichment","financial_history","ownership"],"title":"SourceOperation","description":"Operations a connector can perform without implying data coverage."},"SourceRuntimeState":{"type":"string","enum":["disabled","unobserved","healthy","degraded"],"title":"SourceRuntimeState","description":"Locally observed state; this is not a synthetic upstream health probe."},"SourceRuntimeStatus":{"properties":{"state":{"$ref":"#/components/schemas/SourceRuntimeState"},"ready":{"type":"boolean","title":"Ready"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"attempts":{"type":"integer","minimum":0.0,"title":"Attempts","default":0},"successes":{"type":"integer","minimum":0.0,"title":"Successes","default":0},"failures":{"type":"integer","minimum":0.0,"title":"Failures","default":0},"consecutive_failures":{"type":"integer","minimum":0.0,"title":"Consecutive Failures","default":0},"last_attempt_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Attempt At"},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At"},"last_failure_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Failure At"}},"type":"object","required":["state","ready"],"title":"SourceRuntimeStatus","description":"What this process has actually observed about one configured source."},"StageUsageView":{"properties":{"stage":{"$ref":"#/components/schemas/DecisionStage"},"calls":{"type":"integer","title":"Calls"},"credits":{"type":"integer","title":"Credits"}},"type":"object","required":["stage","calls","credits"],"title":"StageUsageView"},"StatementCriteria":{"properties":{"source_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Source Id"},"currency":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}],"title":"Currency"},"scope":{"anyOf":[{"type":"string","enum":["legal_entity","consolidated_group","unknown"]},{"type":"null"}],"title":"Scope"},"basis":{"anyOf":[{"type":"string","enum":["reported","derived","estimated","average","point_in_time","unknown"]},{"type":"null"}],"title":"Basis"},"attributes":{"items":{"type":"string","maxLength":128,"minLength":12,"pattern":"^financials\\.[a-z][a-z0-9_]*$"},"type":"array","maxItems":64,"title":"Attributes","default":[]}},"additionalProperties":false,"type":"object","title":"StatementCriteria"},"SubmittedRecordView":{"properties":{"record_id":{"type":"string","title":"Record Id"},"submitted_record":{"additionalProperties":{"type":"string"},"type":"object","title":"Submitted Record"}},"type":"object","required":["record_id","submitted_record"],"title":"SubmittedRecordView","description":"One record as it was submitted, and its id.\n\nThe non-empty fields only, exactly as a review item renders a submission:\nthis is a triage view for deciding whether a record is the one an erasure\nrequest is about, not a second export format."},"TenantListResponse":{"properties":{"tenants":{"items":{"$ref":"#/components/schemas/TenantView"},"type":"array","title":"Tenants"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["tenants","correlation_id"],"title":"TenantListResponse"},"TenantView":{"properties":{"tenant_id":{"type":"string","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"plan":{"type":"string","title":"Plan"},"parent_tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Tenant Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["tenant_id","name","plan","created_at"],"title":"TenantView","description":"A tenant as its administrator may see it."},"TenhawCompanyCandidate":{"properties":{"company_record_id":{"type":"string","title":"Company Record Id"},"source_record_ref":{"type":"string","title":"Source Record Ref"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"domain":{"type":"string","title":"Domain"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"services":{"items":{"type":"string"},"type":"array","title":"Services"},"country":{"type":"string","title":"Country"},"employee_band":{"type":"string","title":"Employee Band"},"verification_status":{"type":"string","const":"unverified","title":"Verification Status","default":"unverified"}},"type":"object","required":["company_record_id","source_record_ref","name","domain","industry","services","country","employee_band"],"title":"TenhawCompanyCandidate"},"TenhawReferenceResult":{"properties":{"status":{"type":"string","enum":["candidates","no_candidates","unavailable"],"title":"Status"},"normalized_domain":{"type":"string","title":"Normalized Domain"},"country":{"anyOf":[{"type":"string","enum":["US","GB"]},{"type":"null"}],"title":"Country"},"candidates":{"items":{"$ref":"#/components/schemas/TenhawCompanyCandidate"},"type":"array","title":"Candidates","default":[]},"truncated":{"type":"boolean","title":"Truncated","default":false},"snapshot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Id"},"source_snapshot_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Source Snapshot Date"},"build_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Build Id"},"reason":{"anyOf":[{"type":"string","enum":["not_configured","timeout","source_error","invalid_response"]},{"type":"null"}],"title":"Reason"},"source":{"type":"string","const":"tenhaw_market","title":"Source","default":"tenhaw_market"},"licence":{"type":"string","const":"licensed","title":"Licence","default":"licensed"}},"type":"object","required":["status","normalized_domain","country"],"title":"TenhawReferenceResult"},"TraversalGapView":{"properties":{"step":{"type":"string","title":"Step"},"reason":{"type":"string","title":"Reason"},"entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Id"},"identifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Identifier"},"depth":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Depth"}},"type":"object","required":["step","reason"],"title":"TraversalGapView","description":"A hop this response did not take."},"UBOCandidateView":{"properties":{"name":{"type":"string","title":"Name"},"source_entity_id":{"type":"string","title":"Source Entity Id"},"path":{"items":{"type":"string"},"type":"array","title":"Path"},"path_relationships":{"items":{"type":"string"},"type":"array","title":"Path Relationships"},"includes_accounting_consolidation":{"type":"boolean","title":"Includes Accounting Consolidation","default":false},"natures_of_control":{"items":{"type":"string"},"type":"array","title":"Natures Of Control"},"notified_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notified On"},"provenance":{"$ref":"#/components/schemas/ProvenanceView"},"valid_from":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid From"},"valid_to":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid To"}},"type":"object","required":["name","source_entity_id","provenance"],"title":"UBOCandidateView"},"UltimateOwnerResponse":{"properties":{"ultimate_owner":{"$ref":"#/components/schemas/UltimateOwnershipView"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"$ref":"#/components/schemas/UsageView"}},"type":"object","required":["ultimate_owner","correlation_id","usage"],"title":"UltimateOwnerResponse"},"UltimateOwnershipView":{"properties":{"entity_id":{"type":"string","title":"Entity Id"},"as_of":{"type":"string","format":"date","title":"As Of"},"max_hops":{"type":"integer","title":"Max Hops"},"status":{"type":"string","enum":["not_available","source_reported","partial","conflicting"],"title":"Status"},"globally_verified":{"type":"boolean","const":false,"title":"Globally Verified","default":false},"coverage_complete":{"type":"boolean","const":false,"title":"Coverage Complete","default":false},"external_lookup_performed":{"type":"boolean","const":false,"title":"External Lookup Performed","default":false},"calibrated_confidence":{"type":"null","title":"Calibrated Confidence"},"organizational_ultimate_owners":{"items":{"$ref":"#/components/schemas/OrganizationalUltimateOwnerView"},"type":"array","title":"Organizational Ultimate Owners"},"observed_top_controllers":{"items":{"$ref":"#/components/schemas/ObservedControllerView"},"type":"array","title":"Observed Top Controllers"},"accounting_ultimate_parents":{"items":{"$ref":"#/components/schemas/AccountingUltimateParentView"},"type":"array","title":"Accounting Ultimate Parents"},"gaps":{"items":{"$ref":"#/components/schemas/IdentityGap"},"type":"array","title":"Gaps"},"conflicts":{"items":{"$ref":"#/components/schemas/IdentityGap"},"type":"array","title":"Conflicts"},"cycles":{"items":{"$ref":"#/components/schemas/resolvd__api__routes__identity__OwnershipCycleView"},"type":"array","title":"Cycles"}},"type":"object","required":["entity_id","as_of","max_hops","status","organizational_ultimate_owners","observed_top_controllers","accounting_ultimate_parents","gaps","conflicts","cycles"],"title":"UltimateOwnershipView"},"UnboundRecordListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SubmittedRecordView"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"anyOf":[{"$ref":"#/components/schemas/UsageView"},{"type":"null"}]}},"type":"object","required":["items","total","limit","offset","correlation_id"],"title":"UnboundRecordListResponse","description":"Records this tenant owns that belong to no entity.\n\nThe other half of enumeration. `GET /v1/entities` can only show what the\ncascade BOUND, so a submission that abstained or replayed appears in neither\nthe listing nor the export — and erasure per entity cannot reach it. These\nare those records, and `DELETE /v1/records/{record_id}` is how they go."},"UsageLimitationView":{"properties":{"metric":{"type":"string","title":"Metric"},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["metric","reason"],"title":"UsageLimitationView","description":"A metric this report does not carry, and why it cannot."},"UsagePeriodView":{"properties":{"since":{"type":"string","format":"date-time","title":"Since"},"until":{"type":"string","format":"date-time","title":"Until"},"days":{"type":"number","title":"Days"}},"type":"object","required":["since","until","days"],"title":"UsagePeriodView","description":"The window a usage report covers, half-open: [since, until)."},"UsageResponse":{"properties":{"period":{"$ref":"#/components/schemas/UsagePeriodView"},"calls":{"type":"integer","title":"Calls"},"automation_rate":{"$ref":"#/components/schemas/IntervalView"},"abstention_rate":{"$ref":"#/components/schemas/IntervalView"},"credits":{"$ref":"#/components/schemas/CreditUsageView"},"by_stage":{"items":{"$ref":"#/components/schemas/StageUsageView"},"type":"array","title":"By Stage"},"by_decision":{"items":{"$ref":"#/components/schemas/DecisionUsageView"},"type":"array","title":"By Decision"},"by_endpoint":{"items":{"$ref":"#/components/schemas/EndpointUsageView"},"type":"array","title":"By Endpoint"},"abstentions":{"$ref":"#/components/schemas/AbstentionOutcomesView"},"not_measured":{"items":{"$ref":"#/components/schemas/UsageLimitationView"},"type":"array","title":"Not Measured"},"correlation_id":{"type":"string","title":"Correlation Id"},"usage":{"anyOf":[{"$ref":"#/components/schemas/UsageView"},{"type":"null"}]},"evaluation":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Evaluation"}},"type":"object","required":["period","calls","automation_rate","abstention_rate","credits","by_stage","by_decision","by_endpoint","abstentions","not_measured","correlation_id"],"title":"UsageResponse","description":"One tenant's period over their own ledger.\n\nCarries what it can prove and names what it cannot: `not_measured` lists the\naccuracy metrics that are undefined per tenant, with the reason, so nothing\nhere can be mistaken for a precision claim."},"UsageView":{"properties":{"credits_charged":{"type":"integer","title":"Credits Charged"},"credits_remaining":{"type":"integer","title":"Credits Remaining"},"deep_attempts_remaining":{"type":"integer","title":"Deep Attempts Remaining"},"plan":{"type":"string","title":"Plan"},"enforced":{"type":"boolean","title":"Enforced"},"billing_enforced":{"type":"boolean","title":"Billing Enforced","default":false},"evaluation_enforced":{"type":"boolean","title":"Evaluation Enforced","default":false},"evaluation":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Evaluation"},"credit_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Credit Budget"}},"type":"object","required":["credits_charged","credits_remaining","deep_attempts_remaining","plan","enforced"],"title":"UsageView","description":"What this call cost and what is left (docs/COMMERCIAL-MODEL.md §5.2).\n\nReturned on every response so charge-on-success is verifiable per call\nrather than being a claim on a pricing page. `enforced` is false while\nbilling runs in shadow mode: the figures are real, the deduction is not."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"ValuationInputEvidence":{"properties":{"role":{"type":"string","enum":["closing_price","outstanding_shares","issuer_class_set"],"title":"Role"},"source":{"$ref":"#/components/schemas/FeedEvidence"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"measurement_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Measurement At"},"measurement_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Measurement Date"},"reference_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Reference Date"},"value":{"anyOf":[{"type":"integer"},{"type":"number"},{"type":"null"}],"title":"Value"},"currency":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}],"title":"Currency"},"share_class":{"anyOf":[{"type":"string","maxLength":2000,"minLength":1},{"type":"null"}],"title":"Share Class"},"valid_from":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid From"},"valid_to":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid To"},"share_classes":{"items":{"type":"string","maxLength":2000,"minLength":1},"type":"array","maxItems":40,"title":"Share Classes"},"price_basis":{"anyOf":[{"type":"string","const":"unadjusted"},{"type":"null"}],"title":"Price Basis"},"month_end_closing_attestation":{"anyOf":[{"type":"boolean","const":true},{"type":"null"}],"title":"Month End Closing Attestation"},"share_basis":{"anyOf":[{"type":"string","const":"outstanding"},{"type":"null"}],"title":"Share Basis"},"complete_issuer_class_set_attestation":{"anyOf":[{"type":"boolean","const":true},{"type":"null"}],"title":"Complete Issuer Class Set Attestation"}},"additionalProperties":false,"type":"object","required":["role","source"],"title":"ValuationInputEvidence","description":"Original supporting observations, never re-dated by our calculation."},"VerdictView":{"properties":{"decision":{"$ref":"#/components/schemas/MatchDecisionType"},"confidence":{"type":"number","title":"Confidence"},"rationale":{"type":"string","title":"Rationale"},"model_id":{"type":"string","title":"Model Id"},"prompt_version":{"type":"string","title":"Prompt Version"}},"type":"object","required":["decision","confidence","rationale","model_id","prompt_version"],"title":"VerdictView","description":"The adjudicator's structured verdict, when one was involved."},"VerificationFreshness":{"properties":{"status":{"type":"string","enum":["fresh","stale","unverified"],"title":"Status","default":"unverified"},"verified_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Verified At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"source_ids":{"items":{"type":"string"},"type":"array","title":"Source Ids"},"refresh_attempted":{"type":"boolean","title":"Refresh Attempted","default":false},"refreshed":{"type":"boolean","title":"Refreshed","default":false}},"type":"object","title":"VerificationFreshness","description":"Age of a cited source identity check, separate from binding confidence.\n\nA fresh check concerns a legal identifier and name, not every enriched field\nand not a new adjudication of the customer's link to that company."},"WatchPageRequest":{"properties":{"cursor":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Cursor"},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit","default":100},"interval_seconds":{"type":"integer","maximum":86400.0,"minimum":300.0,"title":"Interval Seconds","default":86400}},"additionalProperties":false,"type":"object","title":"WatchPageRequest"},"WatchRequest":{"properties":{"interval_seconds":{"type":"integer","maximum":86400.0,"minimum":300.0,"title":"Interval Seconds","default":86400}},"additionalProperties":false,"type":"object","title":"WatchRequest"},"WatchView":{"properties":{"entity_id":{"type":"string","title":"Entity Id"},"interval_seconds":{"type":"integer","title":"Interval Seconds"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"checked_at":{"type":"string","format":"date-time","title":"Checked At"},"next_check_at":{"type":"string","format":"date-time","title":"Next Check At"}},"type":"object","required":["entity_id","interval_seconds","created_at","checked_at","next_check_at"],"title":"WatchView"},"WebhookCreate":{"properties":{"url":{"type":"string","maxLength":2048,"minLength":1,"title":"Url","description":"Public HTTPS destination, port 443; redirects are never followed."},"event_types":{"items":{"type":"string","enum":["batch.succeeded","batch.failed","batch.cancelled","batch.reconciliation_required","batch.erased","entity.intelligence_changed"]},"type":"array","maxItems":6,"minItems":1,"title":"Event Types"}},"additionalProperties":false,"type":"object","required":["url","event_types"],"title":"WebhookCreate"},"WebhookCreated":{"properties":{"webhook_id":{"type":"string","title":"Webhook Id"},"url":{"type":"string","title":"Url"},"event_types":{"items":{"type":"string"},"type":"array","title":"Event Types"},"active":{"type":"boolean","title":"Active"},"created_at":{"type":"string","title":"Created At"},"signing_secret":{"type":"string","title":"Signing Secret","description":"Standard Webhooks whsec_ secret; store securely. Returned on idempotent creation only."}},"type":"object","required":["webhook_id","url","event_types","active","created_at","signing_secret"],"title":"WebhookCreated"},"WebhookDeliveryView":{"properties":{"delivery_id":{"type":"string","title":"Delivery Id"},"event_id":{"type":"string","title":"Event Id"},"state":{"type":"string","enum":["pending","delivering","delivered","failed","cancelled"],"title":"State"},"attempts":{"type":"integer","title":"Attempts"},"next_attempt_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Attempt At"},"last_status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Status"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"}},"type":"object","required":["delivery_id","event_id","state","attempts","next_attempt_at","last_status","last_error"],"title":"WebhookDeliveryView"},"WebhookView":{"properties":{"webhook_id":{"type":"string","title":"Webhook Id"},"url":{"type":"string","title":"Url"},"event_types":{"items":{"type":"string"},"type":"array","title":"Event Types"},"active":{"type":"boolean","title":"Active"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["webhook_id","url","event_types","active","created_at"],"title":"WebhookView"},"WithheldPairView":{"properties":{"left_record_id":{"type":"string","title":"Left Record Id"},"right_record_id":{"type":"string","title":"Right Record Id"},"left_client_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Left Client Ref"},"right_client_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Right Client Ref"},"stage":{"$ref":"#/components/schemas/DecisionStage"},"probability":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Probability","description":"The scorer's probability for this pair, or null when no score was produced. It is a pair score, not a confidence in any binding: nothing was merged."},"decision_id":{"type":"string","title":"Decision Id","description":"The receipt for the comparison that was withheld. Redeem it at GET /v1/decisions/{decision_id} to see the evidence behind it."},"settled_by_cluster":{"type":"boolean","title":"Settled By Cluster","description":"True when other evidence in the same batch already placed these two rows, so the undecided pair needed no reviewer. False means it was routed to the review queue and `review_id` is set.","default":false},"review_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Id","description":"The queue item a reviewer will act on, pollable at GET /v1/review-queue/{review_id}. Null when `settled_by_cluster`."},"reason_code":{"type":"string","title":"Reason Code","description":"Why the cascade could not call the pair: 'no_identifying_signal' (nothing comparable survived normalisation), 'deep_budget_exhausted' (the batch's deep-comparison budget ran out before this pair), 'depth_capped' (the requested depth stopped the pair short) or 'cascade_undecided' (the evidence itself was not conclusive). Only the first three are worth resubmitting."}},"type":"object","required":["left_record_id","right_record_id","stage","decision_id","reason_code"],"title":"WithheldPairView","description":"Two of your rows we compared and deliberately did not merge.\n\nAn ABSTENTION at pair grain, not a verdict. Blocking proposed the pair, the\ncascade compared it, and policy would not admit the merge — so this says\nnothing about whether the two rows are the same company. Neither side was\ndecided, and a later submission carrying one more identifier may settle it.\n\nEvery pair is intra-batch: both record ids were rows of the request that\nreturned them.\n\n`probability` is the pair score and nothing bound, so this view carries no\n`match_confidence` and never will. A binding confidence on a comparison that\nbound nothing is the one number a reader would act on (ADR-0021)."},"YahooImmediateValue":{"properties":{"attribute":{"type":"string","enum":["financials.market_cap","financials.enterprise_value"],"title":"Attribute"},"value":{"type":"number","maximum":1e+24,"minimum":-1e+24,"title":"Value"},"currency":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}],"title":"Currency"},"provider_as_of":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Provider As Of"},"missing_context_reasons":{"items":{"type":"string","maxLength":2000,"minLength":1},"type":"array","maxItems":8,"title":"Missing Context Reasons","default":[]}},"additionalProperties":false,"type":"object","required":["attribute","value"],"title":"YahooImmediateValue","description":"A bounded raw provider observation, never a canonical financial fact.\n\nYahoo's quote currency and price timestamp do not prove the currency or\nvaluation instant of monetary totals. Those unknowns remain explicit."},"YahooObservationResult":{"properties":{"source_id":{"type":"string","const":"yahoo_finance","title":"Source Id","default":"yahoo_finance"},"provider":{"type":"string","const":"Yahoo Finance","title":"Provider","default":"Yahoo Finance"},"status":{"type":"string","enum":["observed","unavailable","withheld"],"title":"Status"},"reason":{"anyOf":[{"type":"string","maxLength":2000,"minLength":1},{"type":"null"}],"title":"Reason"},"captured_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Captured At"},"provider_as_of":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Provider As Of"},"symbol":{"anyOf":[{"type":"string","pattern":"^[A-Z0-9][A-Z0-9.\\-^]{0,31}$"},{"type":"null"}],"title":"Symbol"},"mic":{"anyOf":[{"type":"string","pattern":"^[A-Z0-9]{4}$"},{"type":"null"}],"title":"Mic"},"provider_record_id":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Provider Record Id"},"source_url":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Source Url"},"quote_currency":{"anyOf":[{"type":"string","pattern":"^(?:[A-Z]{3}|GBp)$"},{"type":"null"}],"title":"Quote Currency"},"financial_currency":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}],"title":"Financial Currency"},"observations":{"items":{"$ref":"#/components/schemas/YahooImmediateValue"},"type":"array","maxItems":2,"title":"Observations","default":[]},"statement_observations":{"items":{"$ref":"#/components/schemas/YahooStatementValue"},"type":"array","maxItems":56,"title":"Statement Observations","default":[]},"statement_diagnostics":{"items":{"$ref":"#/components/schemas/YahooStatementDiagnostic"},"type":"array","maxItems":4,"title":"Statement Diagnostics","default":[]},"statement_source_url":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Statement Source Url"},"missing_context_reasons":{"items":{"type":"string","maxLength":2000,"minLength":1},"type":"array","maxItems":12,"title":"Missing Context Reasons","default":[]},"licence":{"type":"string","const":"pass_through","title":"Licence","default":"pass_through"},"storage_authorized":{"type":"boolean","const":false,"title":"Storage Authorized","default":false},"resale_authorized":{"type":"boolean","const":false,"title":"Resale Authorized","default":false},"authorization_reference":{"anyOf":[{"type":"string","maxLength":2000,"minLength":1},{"type":"null"}],"title":"Authorization Reference"}},"additionalProperties":false,"type":"object","required":["status"],"title":"YahooObservationResult","description":"Immediate pass-through only; not SourceFindings, persisted facts or AI input."},"YahooObservationsResponse":{"properties":{"entity_id":{"type":"string","title":"Entity Id"},"yahoo":{"$ref":"#/components/schemas/YahooObservationResult"},"correlation_id":{"type":"string","title":"Correlation Id"}},"type":"object","required":["entity_id","yahoo","correlation_id"],"title":"YahooObservationsResponse"},"YahooStatementDiagnostic":{"properties":{"statement":{"type":"string","enum":["income","balance"],"title":"Statement"},"provider_frequency":{"type":"string","enum":["yearly","quarterly"],"title":"Provider Frequency"},"status":{"type":"string","enum":["available","empty","unavailable","stopped"],"title":"Status"},"reason":{"type":"string","enum":["provider_statement_available","provider_statement_empty","provider_statement_failed","provider_statement_invalid","caller_stopped"],"title":"Reason"},"period_count":{"type":"integer","maximum":4.0,"minimum":0.0,"title":"Period Count","default":0},"observation_count":{"type":"integer","maximum":20.0,"minimum":0.0,"title":"Observation Count","default":0}},"additionalProperties":false,"type":"object","required":["statement","provider_frequency","status","reason"],"title":"YahooStatementDiagnostic","description":"Closed method metadata only; no SDK exception or response fragments."},"YahooStatementValue":{"properties":{"attribute":{"type":"string","enum":["financials.revenue","financials.gross_profit","financials.operating_profit","financials.profit_loss","financials.ebitda","financials.total_assets","financials.equity"],"title":"Attribute"},"value":{"type":"number","maximum":1e+24,"minimum":-1e+24,"title":"Value"},"provider_frequency":{"type":"string","enum":["yearly","quarterly"],"title":"Provider Frequency"},"provider_period_end":{"type":"string","format":"date","title":"Provider Period End"},"period_kind":{"type":"string","enum":["duration","instant"],"title":"Period Kind"},"period_start":{"type":"null","title":"Period Start"},"scope":{"type":"string","const":"unknown","title":"Scope","default":"unknown"},"currency":{"type":"null","title":"Currency"},"unit":{"type":"string","const":"unknown","title":"Unit","default":"unknown"},"definition":{"type":"null","title":"Definition"},"missing_context_reasons":{"items":{"type":"string","enum":["actual_period_start_not_established","legal_entity_or_group_scope_not_established","statement_currency_and_unit_scale_not_established","ebitda_definition_not_established"]},"type":"array","maxItems":4,"title":"Missing Context Reasons"}},"additionalProperties":false,"type":"object","required":["attribute","value","provider_frequency","provider_period_end","period_kind","missing_context_reasons"],"title":"YahooStatementValue","description":"A raw statement cell and its provider label, not an admitted metric.\n\nA yearly/quarterly API label and a column date do not establish actual\nreporting boundaries, standalone scope, unit scale or EBITDA definition."},"resolvd__api__routes__identity__OwnershipCycleView":{"properties":{"path":{"items":{"type":"string"},"type":"array","title":"Path"},"repeated_entity_id":{"type":"string","title":"Repeated Entity Id"}},"type":"object","required":["path","repeated_entity_id"],"title":"OwnershipCycleView"},"resolvd__api__schemas__OwnershipCycleView":{"properties":{"path":{"items":{"type":"string"},"type":"array","title":"Path"},"repeated_entity_id":{"type":"string","title":"Repeated Entity Id"}},"type":"object","required":["repeated_entity_id"],"title":"OwnershipCycleView"},"ErrorBody":{"properties":{"code":{"title":"Code","type":"string"},"message":{"title":"Message","type":"string"},"correlation_id":{"title":"Correlation Id","type":"string"},"details":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"default":null,"title":"Details"}},"required":["code","message","correlation_id"],"title":"ErrorBody","type":"object"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ErrorBody"}},"required":["error"],"title":"ErrorResponse","type":"object"}},"responses":{"UnauthorizedError":{"description":"Missing or invalid bearer credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"}}}},"ForbiddenError":{"description":"The credential is valid but its key scope is not accepted by this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"ValidationError":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"PayloadTooLargeError":{"description":"The request body exceeds the deployment limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimitError":{"description":"The request was rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"schema":{"type":"integer","minimum":0}},"RateLimit-Limit":{"schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"schema":{"type":"integer","minimum":0}}}},"ApiError":{"description":"A typed API error. The HTTP status and error code identify the failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"rk_ API key or OAuth access token","description":"Send Authorization: Bearer <credential>. API-key scopes are disjoint; each operation's x-accepted-key-scopes list names the scopes accepted as alternatives. OAuth access tokens carry read or resolve permission; inspect the granted scope instead of assuming a write permission.","x-key-scopes":["read","resolve","review","erase","admin","metrics","operator"]}}},"x-resolvd-revision":{"pipeline_version":"2026.09.0","runtime_source_sha256":"0d79fffaa1c62b30e684cca56916629f30041593c5b6987b9d239e0a04af9412","route_schema_sha256":"59418f1d2119407b93d1c811f331efd68a9946afcd388027ff60b785c12d4356","offer_status":"planned"}}