{"openapi":"3.1.0","info":{"title":"OpenCheck","description":"Customer due diligence risk checks driven by the Legal Entity Identifier (LEI) and open data — mapped to the Beneficial Ownership Data Standard (BODS).","version":"0.1.0"},"paths":{"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/sources":{"get":{"summary":"Sources","operationId":"sources_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourcesResponse"}}}}}}},"/search":{"get":{"summary":"Search","description":"Fan-out search across registered adapters (non-streaming).","operationId":"search_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"Search query.","title":"Q"},"description":"Search query."},{"name":"kind","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SearchKind","description":"entity or person","default":"entity"},"description":"entity or person"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stream":{"get":{"summary":"Stream","description":"Fan-out search streamed as SSE.","operationId":"stream_stream_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Q"}},{"name":"kind","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SearchKind","default":"entity"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deepen":{"get":{"summary":"Deepen","description":"Fetch the full record for a single hit and map to BODS v0.4.","operationId":"deepen_deepen_get","parameters":[{"name":"source","in":"query","required":true,"schema":{"type":"string","description":"Adapter id, e.g. 'companies_house'","title":"Source"},"description":"Adapter id, e.g. 'companies_house'"},{"name":"hit_id","in":"query","required":true,"schema":{"type":"string","description":"Adapter-local hit id","title":"Hit Id"},"description":"Adapter-local hit id"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/report":{"get":{"summary":"Report","description":"One-shot synthesis: search, reconcile, deepen top N, assess risk.","operationId":"report_report_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Q"}},{"name":"kind","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SearchKind","default":"entity"}},{"name":"deepen_top","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":0,"description":"How many top hits to deepen+map+assess.","default":3,"title":"Deepen Top"},"description":"How many top hits to deepen+map+assess."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lookup":{"get":{"summary":"Lookup","description":"Driver endpoint: LEI in, full cross-source synthesis out.\n\nCollects the events of :func:`_lookup_pipeline` into one response —\nidentical data to /lookup-stream, without the streaming.","operationId":"lookup_lookup_get","parameters":[{"name":"lei","in":"query","required":true,"schema":{"type":"string","description":"ISO 17442 Legal Entity Identifier (20 chars).","title":"Lei"},"description":"ISO 17442 Legal Entity Identifier (20 chars)."},{"name":"deepen_top","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":0,"default":5,"title":"Deepen Top"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","description":"Bypass the short-lived replay cache.","default":false,"title":"Refresh"},"description":"Bypass the short-lived replay cache."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lookup-stream":{"get":{"summary":"Lookup Stream","description":"LEI-anchored lookup streamed as SSE — same pipeline as /lookup.","operationId":"lookup_stream_lookup_stream_get","parameters":[{"name":"lei","in":"query","required":true,"schema":{"type":"string","description":"ISO 17442 Legal Entity Identifier (20 chars).","title":"Lei"},"description":"ISO 17442 Legal Entity Identifier (20 chars)."},{"name":"deepen_top","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":0,"default":5,"title":"Deepen Top"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","description":"Bypass the short-lived replay cache.","default":false,"title":"Refresh"},"description":"Bypass the short-lived replay cache."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/resolve-national-id":{"get":{"summary":"Resolve National Id","description":"Resolve a local company-registration number to its LEI(s) via GLEIF.\n\nThe inverse of OpenCheck's normal LEI-first flow: a caller who has a\nnational registry number (but not the LEI) obtains it here, then feeds the\nLEI to ``/lookup``. Queries GLEIF's three local-id filter fields and\nde-duplicates by LEI. The RA code — resolved from ``country`` when not given\nexplicitly — scopes the search to one registry, avoiding false matches from\ncoincidental number collisions across jurisdictions.","operationId":"resolve_national_id_resolve_national_id_get","parameters":[{"name":"number","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"National company-registration number, e.g. a UK Companies House number.","title":"Number"},"description":"National company-registration number, e.g. a UK Companies House number."},{"name":"country","in":"query","required":false,"schema":{"type":"string","description":"ISO 3166-1 alpha-2 country code (e.g. 'GB'); resolved to a GLEIF RA code.","default":"","title":"Country"},"description":"ISO 3166-1 alpha-2 country code (e.g. 'GB'); resolved to a GLEIF RA code."},{"name":"ra_code","in":"query","required":false,"schema":{"type":"string","description":"GLEIF Registration Authority code (e.g. 'RA000585'); overrides 'country' when set.","default":"","title":"Ra Code"},"description":"GLEIF Registration Authority code (e.g. 'RA000585'); overrides 'country' when set."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveNationalIdResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lookup-source":{"get":{"summary":"Lookup Source","description":"Re-run one source for a LEI — powers the per-source retry button.\n\nResolves the GLEIF anchor (cheap — adapter-cached), dispatches just the\nrequested source, and invalidates the replay cache so the next full\nlookup reflects the fresh result.","operationId":"lookup_source_lookup_source_get","parameters":[{"name":"lei","in":"query","required":true,"schema":{"type":"string","description":"ISO 17442 Legal Entity Identifier (20 chars).","title":"Lei"},"description":"ISO 17442 Legal Entity Identifier (20 chars)."},{"name":"source_id","in":"query","required":true,"schema":{"type":"string","description":"Adapter id to re-run, e.g. 'kvk'.","title":"Source Id"},"description":"Adapter id to re-run, e.g. 'kvk'."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupSourceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/license-matrix":{"get":{"summary":"License Matrix","description":"The full licensing compatibility matrix: every source's licence terms\n(commercial use, attribution, share-alike) plus the distinct licence\ncatalogue. With `?sources=`, also returns the combined assessment for the\ncontributing sources. Backs the Export panel's licensing assistant.","operationId":"license_matrix_license_matrix_get","parameters":[{"name":"sources","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional comma-separated source ids. When given, the response also includes an `assessment` of the combined licensing of those sources.","title":"Sources"},"description":"Optional comma-separated source ids. When given, the response also includes an `assessment` of the combined licensing of those sources."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response License Matrix License Matrix Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export":{"get":{"summary":"Export","description":"Download a BODS v0.4 bundle for a subject.","operationId":"export_export_get","parameters":[{"name":"lei","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO 17442 LEI. When provided the export uses the same LEI-anchored synthesis as /lookup; ``q`` is ignored.","title":"Lei"},"description":"ISO 17442 LEI. When provided the export uses the same LEI-anchored synthesis as /lookup; ``q`` is ignored."},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"description":"Free-text query; only used when ``lei`` is absent. Kept for backward compatibility.","title":"Q"},"description":"Free-text query; only used when ``lei`` is absent. Kept for backward compatibility."},{"name":"kind","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SearchKind","default":"entity"}},{"name":"deepen_top","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":0,"default":3,"title":"Deepen Top"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|jsonl|zip|xml)$","description":"json (pretty array) | jsonl (newline-delimited) | zip (bundle) | xml (canonical BODS XML)","default":"zip","title":"Format"},"description":"json (pretty array) | jsonl (newline-delimited) | zip (bundle) | xml (canonical BODS XML)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/pdf":{"post":{"summary":"Export Pdf","description":"Build an accessible (tagged PDF/UA-1) due-diligence report for an LEI.\n\nReuses the same cached lookup pipeline as ``/lookup`` (so the PDF can't\ndiverge from the page), renders the report off the event loop, and streams\nit back. Returns 503 when the PDF toolchain (WeasyPrint) is unavailable.","operationId":"export_pdf_export_pdf_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PdfExportRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/narrative":{"get":{"summary":"Narrative","operationId":"narrative_narrative_get","parameters":[{"name":"lei","in":"query","required":true,"schema":{"type":"string","description":"ISO 17442 Legal Entity Identifier (20 chars).","title":"Lei"},"description":"ISO 17442 Legal Entity Identifier (20 chars)."},{"name":"deepen_top","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":0,"default":5,"title":"Deepen Top"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","description":"Bypass the short-lived replay cache.","default":false,"title":"Refresh"},"description":"Bypass the short-lived replay cache."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NarrativeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/securities":{"get":{"summary":"Securities","description":"Securities (ISINs) linked to an LEI, sanctioned ones surfaced first.","operationId":"securities_securities_get","parameters":[{"name":"lei","in":"query","required":true,"schema":{"type":"string","description":"ISO 17442 Legal Entity Identifier (20 chars).","title":"Lei"},"description":"ISO 17442 Legal Entity Identifier (20 chars)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Page of ISINs to return (size 20).","default":1,"title":"Page"},"description":"Page of ISINs to return (size 20)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecuritiesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/.well-known/mcp.json":{"get":{"summary":"Mcp Descriptor","description":"ARD / ai-catalog descriptor for the MCP server (CORS-readable).","operationId":"mcp_descriptor__well_known_mcp_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"DeepenResponse":{"properties":{"source_id":{"type":"string","title":"Source Id"},"hit_id":{"type":"string","title":"Hit Id"},"raw":{"additionalProperties":true,"type":"object","title":"Raw"},"bods":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Bods"},"bods_issues":{"items":{"type":"string"},"type":"array","title":"Bods Issues"},"license":{"type":"string","title":"License"},"license_notice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"License Notice"},"risk_signals":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Risk Signals","default":[]}},"type":"object","required":["source_id","hit_id","raw","bods","bods_issues","license"],"title":"DeepenResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"status":{"type":"string","title":"Status"},"version":{"type":"string","title":"Version"},"allow_live":{"type":"boolean","title":"Allow Live"}},"type":"object","required":["status","version","allow_live"],"title":"HealthResponse"},"LookupResponse":{"properties":{"query":{"type":"string","title":"Query"},"kind":{"$ref":"#/components/schemas/SearchKind"},"hits":{"items":{"$ref":"#/components/schemas/SourceHit"},"type":"array","title":"Hits"},"errors":{"additionalProperties":{"type":"string"},"type":"object","title":"Errors"},"cross_source_links":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Cross Source Links"},"risk_signals":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Risk Signals"},"bods":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Bods"},"bods_issues":{"items":{"type":"string"},"type":"array","title":"Bods Issues"},"license_notices":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"License Notices"},"lei":{"type":"string","title":"Lei"},"legal_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Name"},"jurisdiction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jurisdiction"},"derived_identifiers":{"additionalProperties":{"type":"string"},"type":"object","title":"Derived Identifiers","default":{}}},"type":"object","required":["query","kind","hits","errors","cross_source_links","risk_signals","bods","bods_issues","license_notices","lei"],"title":"LookupResponse","description":"Same shape as /report, with the LEI echoed back and the GLEIF\nbundle surfaced separately so the UI doesn't have to dig for it."},"LookupSourceResponse":{"properties":{"lei":{"type":"string","title":"Lei"},"source_id":{"type":"string","title":"Source Id"},"hits":{"items":{"$ref":"#/components/schemas/SourceHit"},"type":"array","title":"Hits"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["lei","source_id","hits"],"title":"LookupSourceResponse","description":"Result of re-running a single source within an existing lookup."},"NarrativeResponse":{"properties":{"lei":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lei"},"subject_name":{"type":"string","title":"Subject Name"},"summary":{"type":"string","title":"Summary"},"claims":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Claims"},"limitations":{"items":{"type":"string"},"type":"array","title":"Limitations"},"overall_confidence":{"type":"string","title":"Overall Confidence","default":"low"},"model":{"type":"string","title":"Model"},"prompt_version":{"type":"string","title":"Prompt Version"},"packet":{"additionalProperties":true,"type":"object","title":"Packet"},"validation_ok":{"type":"boolean","title":"Validation Ok","default":true},"dropped_claims":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Dropped Claims"},"validation_issues":{"items":{"type":"string"},"type":"array","title":"Validation Issues"}},"type":"object","required":["subject_name","summary","model","prompt_version","packet"],"title":"NarrativeResponse"},"NationalIdMatch":{"properties":{"lei":{"type":"string","title":"Lei"},"name":{"type":"string","title":"Name"},"jurisdiction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jurisdiction"}},"type":"object","required":["lei","name"],"title":"NationalIdMatch","description":"One LEI record carrying the queried national registration number."},"PdfExportRequest":{"properties":{"lei":{"type":"string","title":"Lei","description":"ISO 17442 Legal Entity Identifier."},"deepen_top":{"type":"integer","maximum":10.0,"minimum":0.0,"title":"Deepen Top","default":5},"narrative":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Narrative"}},"type":"object","required":["lei"],"title":"PdfExportRequest","description":"Body for ``POST /export/pdf``.\n\n``narrative`` is the result the client already received from ``/narrative``;\nit is embedded verbatim so the PDF needs no fresh model call (per the product\ndecision — the summary appears only when the user generated it on the page).\nThe diagrams are rendered server-side from the BODS data, so no graph images\nare uploaded."},"ReportResponse":{"properties":{"query":{"type":"string","title":"Query"},"kind":{"$ref":"#/components/schemas/SearchKind"},"hits":{"items":{"$ref":"#/components/schemas/SourceHit"},"type":"array","title":"Hits"},"errors":{"additionalProperties":{"type":"string"},"type":"object","title":"Errors"},"cross_source_links":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Cross Source Links"},"risk_signals":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Risk Signals"},"bods":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Bods"},"bods_issues":{"items":{"type":"string"},"type":"array","title":"Bods Issues"},"license_notices":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"License Notices"}},"type":"object","required":["query","kind","hits","errors","cross_source_links","risk_signals","bods","bods_issues","license_notices"],"title":"ReportResponse","description":"Aggregate post-search synthesis for a single subject."},"ResolveNationalIdResponse":{"properties":{"number":{"type":"string","title":"Number"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"ra_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ra Code"},"matches":{"items":{"$ref":"#/components/schemas/NationalIdMatch"},"type":"array","title":"Matches"}},"type":"object","required":["number","matches"],"title":"ResolveNationalIdResponse","description":"LEIs that carry a given national company-registration number."},"SearchKind":{"type":"string","enum":["entity","person"],"title":"SearchKind","description":"What a user is searching for."},"SearchResponse":{"properties":{"query":{"type":"string","title":"Query"},"kind":{"$ref":"#/components/schemas/SearchKind"},"hits":{"items":{"$ref":"#/components/schemas/SourceHit"},"type":"array","title":"Hits"},"errors":{"additionalProperties":{"type":"string"},"type":"object","title":"Errors"},"cross_source_links":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Cross Source Links"},"risk_signals":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Risk Signals"}},"type":"object","required":["query","kind","hits","errors","cross_source_links","risk_signals"],"title":"SearchResponse"},"SecuritiesResponse":{"properties":{"lei":{"type":"string","title":"Lei"},"available":{"type":"boolean","title":"Available"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"securities":{"items":{"$ref":"#/components/schemas/Security"},"type":"array","title":"Securities"},"sanctioned":{"items":{"$ref":"#/components/schemas/Security"},"type":"array","title":"Sanctioned"},"sources":{"items":{"type":"string"},"type":"array","title":"Sources"},"license_notices":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"License Notices"}},"type":"object","required":["lei","available","total","page","page_size","securities","sanctioned","sources","license_notices"],"title":"SecuritiesResponse"},"Security":{"properties":{"isin":{"type":"string","title":"Isin"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"ticker":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticker"},"exchange":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exchange"},"sanctioned":{"type":"boolean","title":"Sanctioned","default":false},"regimes":{"items":{"type":"string"},"type":"array","title":"Regimes","default":[]},"opensanctions_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opensanctions Id"}},"type":"object","required":["isin"],"title":"Security"},"SourceHit":{"properties":{"source_id":{"type":"string","title":"Source Id","description":"Adapter id (matches SourceInfo.id)."},"hit_id":{"type":"string","title":"Hit Id","description":"Adapter-local identifier for this hit."},"kind":{"$ref":"#/components/schemas/SearchKind","description":"Entity or person."},"name":{"type":"string","title":"Name","description":"Primary display name."},"summary":{"type":"string","title":"Summary","description":"Short human-readable line used in chat."},"identifiers":{"additionalProperties":{"type":"string"},"type":"object","title":"Identifiers","description":"Cross-source identifiers (e.g. {'lei': '...', 'gb_coh': '...', 'wikidata_qid': '...'})."},"raw":{"additionalProperties":true,"type":"object","title":"Raw","description":"Raw payload (stub-shaped in Phase 0)."},"is_stub":{"type":"boolean","title":"Is Stub","description":"True when this hit was produced by the Phase 0 stub path.","default":true}},"type":"object","required":["source_id","hit_id","kind","name","summary"],"title":"SourceHit","description":"A single search result from a source.\n\nAdapters populate the neutral fields below. The BODS mapper (Phase 1+)\nconsumes ``raw`` plus the adapter's knowledge of its own schema to\nproduce BODS v0.4 statements."},"SourceInfo":{"properties":{"id":{"type":"string","title":"Id","description":"Stable adapter identifier, e.g. 'companies_house'."},"name":{"type":"string","title":"Name","description":"Human-readable source name."},"homepage":{"type":"string","title":"Homepage","description":"Canonical source homepage URL."},"description":{"type":"string","title":"Description","description":"Short user-facing one-liner describing what the source is. Distinct from ``attribution``, which is the credit line.","default":""},"license":{"type":"string","title":"License","description":"Short license identifier (e.g. 'OGL-3.0', 'CC0', 'CC-BY-NC-4.0')."},"attribution":{"type":"string","title":"Attribution","description":"Attribution string to display alongside data."},"supports":{"items":{"$ref":"#/components/schemas/SearchKind"},"type":"array","title":"Supports","description":"Which search kinds this adapter supports (entity / person / both)."},"requires_api_key":{"type":"boolean","title":"Requires Api Key","description":"Whether live mode needs an API key configured."},"live_available":{"type":"boolean","title":"Live Available","description":"Whether live mode is available right now (key present AND allow_live=true)."},"category":{"type":"string","enum":["cdd","esg"],"title":"Category","description":"Broad purpose category. 'cdd' = customer due diligence / compliance; 'esg' = environmental, social and governance data.","default":"cdd"},"is_national_register":{"type":"boolean","title":"Is National Register","description":"True when this source is an official national company or beneficial ownership register (e.g. Companies House, Bolagsverket). False for aggregators, cross-border databases, and ESG sources.","default":false}},"type":"object","required":["id","name","homepage","license","attribution","supports","requires_api_key","live_available"],"title":"SourceInfo","description":"Static metadata about a source — surfaced on the /sources endpoint."},"SourcesResponse":{"properties":{"sources":{"items":{"$ref":"#/components/schemas/SourceInfo"},"type":"array","title":"Sources"}},"type":"object","required":["sources"],"title":"SourcesResponse"},"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"}}}}