{"openapi":"3.1.0","info":{"title":"Meridian Research Data API","description":"\nMeridian is a research data platform for U.S. public critical-infrastructure\ndata. It keeps two things rigorously separate:\n\n* **Source intelligence** (the control plane) -- what public source exists, who\n  publishes it, how authoritative and current it is, and how it can be acquired.\n* **Actual normalized data** (the data plane) -- what was genuinely retrieved,\n  when, from exactly which bytes, and through which transformations.\n\n### Truth guarantees\n\nEvery value this API returns carries its **evidence class** and, where relevant,\na named **methodology**. Direct measurements, modeled estimates, allocated\nestimates, and regional proxies stay distinguishable, and a modeled value is\nnever presented as a direct observation. Missing and suppressed values are\nexplicit and are never coerced to zero.\n\nA source is reported *operational* only when acquisition, raw preservation,\nparsing, normalization, quality validation, canonical publication, API retrieval,\nand provenance inspection have **all** actually succeeded. Catalog metadata is\nnot the underlying dataset, and a source URL is not proof that ingestion worked.\n\n### County and city electricity\n\nThere is no single federal feed containing metered electricity consumption for\nevery U.S. county and city. Values at that grain are usually modeled (NREL\nResStock/ComStock, DOE LEAD, NREL SLOPE, OEDI county hourly profiles) or\nallocated from utility service-territory totals. Both are labelled as such.\nRegional balancing-authority load is classified `context_only` for county\nconsumption: it validates timing and regional peaks, and is never added to a\ncounty estimate.\n","contact":{"name":"Meridian operator","email":"ckennedy@securityscorecard.io"},"license":{"name":"Proprietary; upstream data subject to publisher terms"},"version":"1.0.0","x-meridian-truth-rules":["Catalog metadata is not the underlying dataset.","A source URL is not proof that ingestion succeeded.","An HTTP 200 is not proof that parsing or normalization succeeded.","Modeled values are never presented as direct observations.","Missing and suppressed values are explicit and never coerced to zero."]},"paths":{"/api/v1/sources":{"get":{"tags":["catalog"],"summary":"List cataloged sources","description":"List sources with allowlisted filters and cursor pagination.","operationId":"list_sources_api_v1_sources_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"description":"Free-text search.","title":"Q"},"description":"Free-text search."},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Category"}},{"name":"publisher","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Publisher"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/SourceState"},{"type":"null"}],"title":"State"}},{"name":"connector_state","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ConnectorState"},{"type":"null"}],"title":"Connector State"}},{"name":"feasibility","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/AutomationFeasibility"},{"type":"null"}],"title":"Feasibility"}},{"name":"power_shortlist","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Power Shortlist"}},{"name":"operational","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter on a full publish cycle.","title":"Operational"},"description":"Filter on a full publish cycle."},{"name":"sort","in":"query","required":false,"schema":{"enum":["source_id","source_name","publisher","category","priority_tier","recommended_use_order","next_due_at","last_successful_publish_at"],"type":"string","default":"source_id","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"asc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Sources Api V1 Sources Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sources/{source_id}":{"get":{"tags":["catalog"],"summary":"Get one source","description":"Return the full catalog record, connector, and coverage for a source.","operationId":"get_source_api_v1_sources__source_id__get","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","title":"Source Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Source Api V1 Sources  Source Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sources/{source_id}/endpoints":{"get":{"tags":["catalog"],"summary":"List a source's endpoints","description":"Return every endpoint associated with a source, with its evidence.","operationId":"list_source_endpoints_api_v1_sources__source_id__endpoints_get","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","title":"Source Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Source Endpoints Api V1 Sources  Source Id  Endpoints Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sources/{source_id}/connector":{"get":{"tags":["catalog"],"summary":"Get a source's connector manifest","description":"Return the validated connector manifest for a source.","operationId":"get_source_connector_api_v1_sources__source_id__connector_get","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","title":"Source Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Source Connector Api V1 Sources  Source Id  Connector Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sources/{source_id}/schedule":{"get":{"tags":["catalog"],"summary":"Get a source's schedule","description":"Return the schedule policy derived from the source's cadence.","operationId":"get_source_schedule_api_v1_sources__source_id__schedule_get","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","title":"Source Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Source Schedule Api V1 Sources  Source Id  Schedule Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/source-coverage":{"get":{"tags":["catalog"],"summary":"Coverage across all sources","description":"Return honest platform-wide coverage, stage by stage.\n\nThis is the endpoint that answers \"how much of this actually works\". Every\nstage count is derived from recorded run outcomes, so a stage a source never\nreached counts as zero rather than being omitted.","operationId":"source_coverage_api_v1_source_coverage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Source Coverage Api V1 Source Coverage Get"}}}}}}},"/api/v1/power-sources":{"get":{"tags":["catalog"],"summary":"The 72-source power wave","description":"Return the power shortlist grouped by implementation wave.","operationId":"power_sources_api_v1_power_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Power Sources Api V1 Power Sources Get"}}}}}}},"/api/v1/taxonomy":{"get":{"tags":["taxonomy"],"summary":"Active taxonomy summary","description":"Return the active taxonomy version and its counts.","operationId":"get_taxonomy_api_v1_taxonomy_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Taxonomy Api V1 Taxonomy Get"}}}}}}},"/api/v1/taxonomy/versions":{"get":{"tags":["taxonomy"],"summary":"List taxonomy versions","description":"Return every published taxonomy version, newest first.","operationId":"list_taxonomy_versions_api_v1_taxonomy_versions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Taxonomy Versions Api V1 Taxonomy Versions Get"}}}}}}},"/api/v1/taxonomy/nodes":{"get":{"tags":["taxonomy"],"summary":"List taxonomy nodes","description":"Return nodes from the active taxonomy version.","operationId":"list_taxonomy_nodes_api_v1_taxonomy_nodes_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Kind"}},{"name":"parent_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Parent Key"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Taxonomy Nodes Api V1 Taxonomy Nodes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/metrics-registry":{"get":{"tags":["taxonomy"],"summary":"List canonical metrics","description":"Return the canonical metric registry, including allowed aggregations.\n\n``allowed_aggregations`` is a correctness contract, not documentation: it is\nwhat prevents a client from summing a peak demand or averaging a median.","operationId":"list_metrics_api_v1_metrics_registry_get","parameters":[{"name":"family","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Family"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Metrics Api V1 Metrics Registry Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/units":{"get":{"tags":["taxonomy"],"summary":"List canonical units","description":"Return the unit registry with exact conversion factors.","operationId":"list_units_api_v1_units_get","parameters":[{"name":"dimension","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Dimension"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Units Api V1 Units Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dimensions":{"get":{"tags":["taxonomy"],"summary":"List dimensions","description":"Return physical and categorical observation dimensions.","operationId":"list_dimensions_api_v1_dimensions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Dimensions Api V1 Dimensions Get"}}}}}}},"/api/v1/identifiers":{"get":{"tags":["taxonomy"],"summary":"List identifier systems","description":"Return the identifier registry used for deterministic joins.","operationId":"list_identifiers_api_v1_identifiers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Identifiers Api V1 Identifiers Get"}}}}}}},"/api/v1/evidence-classes":{"get":{"tags":["taxonomy"],"summary":"List evidence classes","description":"Return evidence classes and their presentation policy.\n\n``may_be_presented_as_direct`` is true only for ``direct_reported`` and is\nvalidated at seed time, so a client can rely on it.","operationId":"list_evidence_classes_api_v1_evidence_classes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Evidence Classes Api V1 Evidence Classes Get"}}}}}}},"/api/v1/operations/status":{"get":{"tags":["operations"],"summary":"Platform status","description":"Return platform state, including what is and is not implemented.","operationId":"operations_status_api_v1_operations_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Operations Status Api V1 Operations Status Get"}}}}}}},"/api/v1/observations":{"get":{"tags":["observations"],"summary":"List canonical observations","description":"List observations with allowlisted filters and cursor pagination.\n\nAn empty ``items`` array with a ``200`` is the correct answer when nothing\nmatches: it asserts that the canonical tables were queried and contained no\nmatching row.\n\nReturns:\n    The standard pagination envelope of observation payloads.\n\nRaises:\n    HTTPException: ``422`` when ``source_id`` or the cursor is malformed.","operationId":"list_observations_api_v1_observations_get","parameters":[{"name":"metric_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Metric Key"}},{"name":"geography_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Geography Id"}},{"name":"entity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Entity Id"}},{"name":"county_fips","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{5}$"},{"type":"null"}],"title":"County Fips"}},{"name":"state_fips","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{2}$"},{"type":"null"}],"title":"State Fips"}},{"name":"evidence_class","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/EvidenceClass"},{"type":"null"}],"title":"Evidence Class"}},{"name":"methodology","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/Methodology"},{"type":"null"}],"title":"Methodology"}},{"name":"temporal_resolution","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/TemporalResolution"},{"type":"null"}],"title":"Temporal Resolution"}},{"name":"source_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Source Id"}},{"name":"dataset_version_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Dataset Version Id"}},{"name":"quality_state","in":"query","required":false,"schema":{"anyOf":[{"enum":["unvalidated","passed","warned","failed","quarantined"],"type":"string"},{"type":"null"}],"title":"Quality State"}},{"name":"value_status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ValueStatus"},{"type":"null"}],"title":"Value Status"}},{"name":"period_start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Keep periods starting at or after this instant (UTC).","title":"Period Start"},"description":"Keep periods starting at or after this instant (UTC)."},{"name":"period_end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Keep periods ending at or before this instant (UTC).","title":"Period End"},"description":"Keep periods ending at or before this instant (UTC)."},{"name":"unit_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Unit Key"}},{"name":"sort","in":"query","required":false,"schema":{"enum":["observation_id","metric_key","period_start","published_at"],"type":"string","default":"observation_id","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"asc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Observations Api V1 Observations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/observations/{observation_id}":{"get":{"tags":["observations"],"summary":"Get one observation","description":"Return one observation with its indexed dimension rows.\n\nThe indexed dimensions are returned alongside the denormalised\n``dimensions`` map because ``is_mapped`` is only visible on the rows, and an\nunmapped dimension value is a taxonomy finding rather than a silent pass.\n\nReturns:\n    The observation payload plus ``dimension_records``.\n\nRaises:\n    HTTPException: ``404`` when no such observation exists.","operationId":"get_observation_api_v1_observations__observation_id__get","parameters":[{"name":"observation_id","in":"path","required":true,"schema":{"type":"string","maxLength":40,"title":"Observation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Observation Api V1 Observations  Observation Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets":{"get":{"tags":["datasets"],"summary":"List datasets","description":"List datasets with allowlisted filters and cursor pagination.\n\nReturns:\n    The standard pagination envelope of dataset payloads.\n\nRaises:\n    HTTPException: ``422`` when ``source_id`` or the cursor is malformed.","operationId":"list_datasets_api_v1_datasets_get","parameters":[{"name":"source_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Source Id"}},{"name":"slug","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Slug"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"description":"Free-text title search.","title":"Q"},"description":"Free-text title search."},{"name":"published_only","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Restrict to datasets with a published current version.","title":"Published Only"},"description":"Restrict to datasets with a published current version."},{"name":"sort","in":"query","required":false,"schema":{"enum":["dataset_id","source_id","slug","title"],"type":"string","default":"dataset_id","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"asc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Datasets Api V1 Datasets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{dataset_id}":{"get":{"tags":["datasets"],"summary":"Get one dataset","description":"Return one dataset record.\n\nReturns:\n    The dataset payload.\n\nRaises:\n    HTTPException: ``404`` when no such dataset exists.","operationId":"get_dataset_api_v1_datasets__dataset_id__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","maxLength":40,"title":"Dataset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Dataset Api V1 Datasets  Dataset Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{dataset_id}/versions":{"get":{"tags":["datasets"],"summary":"List a dataset's versions","description":"List every retained version of a dataset, newest first by default.\n\nFailed and quarantined versions are included: hiding them would make a\npartially working pipeline look idle rather than blocked.\n\nReturns:\n    The standard pagination envelope of dataset-version payloads.\n\nRaises:\n    HTTPException: ``404`` when no such dataset exists.","operationId":"list_dataset_versions_api_v1_datasets__dataset_id__versions_get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","maxLength":40,"title":"Dataset Id"}},{"name":"is_published","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Published"}},{"name":"is_quarantined","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Quarantined"}},{"name":"sort","in":"query","required":false,"schema":{"enum":["version_id","version_number","created_at"],"type":"string","default":"version_number","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Dataset Versions Api V1 Datasets  Dataset Id  Versions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dataset-versions/{version_id}":{"get":{"tags":["datasets"],"summary":"Get one dataset version","description":"Return one dataset version with its counts, quality summary, and state.\n\nReturns:\n    The dataset-version payload, including ``failed_stage`` and\n    ``blocked_reason`` when publication was stopped.\n\nRaises:\n    HTTPException: ``404`` when no such version exists.","operationId":"get_dataset_version_api_v1_dataset_versions__version_id__get","parameters":[{"name":"version_id","in":"path","required":true,"schema":{"type":"string","maxLength":40,"title":"Version Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Dataset Version Api V1 Dataset Versions  Version Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dataset-versions/{version_id}/artifacts":{"get":{"tags":["datasets"],"summary":"List a version's raw artifacts","description":"List the immutable artifacts a dataset version derives from.\n\nReturns:\n    The standard pagination envelope of artifact payloads, each carrying the\n    ``sha256`` that anchors every provenance chain through this version.\n\nRaises:\n    HTTPException: ``404`` when no such version exists.","operationId":"list_dataset_version_artifacts_api_v1_dataset_versions__version_id__artifacts_get","parameters":[{"name":"version_id","in":"path","required":true,"schema":{"type":"string","maxLength":40,"title":"Version Id"}},{"name":"sort","in":"query","required":false,"schema":{"enum":["artifact_id","retrieved_at","sha256"],"type":"string","default":"retrieved_at","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"asc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Dataset Version Artifacts Api V1 Dataset Versions  Version Id  Artifacts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/geographies":{"get":{"tags":["geographies"],"summary":"List canonical geographies","description":"List geographies with allowlisted filters and cursor pagination.\n\nName search is for discovery only. It is never an identity join: a geography\nis identified by ``(level, geoid, vintage)``.\n\nReturns:\n    The standard pagination envelope of geography payloads.\n\nRaises:\n    HTTPException: ``422`` when the cursor is malformed.","operationId":"list_geographies_api_v1_geographies_get","parameters":[{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/GeographyLevel"},{"type":"null"}],"title":"Level"}},{"name":"state_fips","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{2}$"},{"type":"null"}],"title":"State Fips"}},{"name":"county_fips","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{5}$"},{"type":"null"}],"title":"County Fips"}},{"name":"geoid","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Geoid"}},{"name":"vintage","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Vintage"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"description":"Free-text name search.","title":"Q"},"description":"Free-text name search."},{"name":"sort","in":"query","required":false,"schema":{"enum":["geography_id","geoid","name"],"type":"string","default":"geography_id","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"asc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Geographies Api V1 Geographies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/geographies/{geography_id}":{"get":{"tags":["geographies"],"summary":"Get one geography","description":"Return one geography.\n\nReturns:\n    The geography payload.\n\nRaises:\n    HTTPException: ``404`` when no such geography exists.","operationId":"get_geography_api_v1_geographies__geography_id__get","parameters":[{"name":"geography_id","in":"path","required":true,"schema":{"type":"string","maxLength":40,"title":"Geography Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Geography Api V1 Geographies  Geography Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/geographies/{geography_id}/observations":{"get":{"tags":["geographies"],"summary":"List a geography's observations","description":"List observations whose ``geography_id`` is this geography.\n\nMatches on the geography subject exactly, so an observation about a plant\ninside this county appears only when the plant's containing geography was\nresolved to it.\n\nReturns:\n    The standard pagination envelope of observation payloads.\n\nRaises:\n    HTTPException: ``404`` when the geography does not exist; ``422`` when\n        ``source_id`` or the cursor is malformed.","operationId":"list_geography_observations_api_v1_geographies__geography_id__observations_get","parameters":[{"name":"geography_id","in":"path","required":true,"schema":{"type":"string","maxLength":40,"title":"Geography Id"}},{"name":"metric_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Metric Key"}},{"name":"evidence_class","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/EvidenceClass"},{"type":"null"}],"title":"Evidence Class"}},{"name":"methodology","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/Methodology"},{"type":"null"}],"title":"Methodology"}},{"name":"temporal_resolution","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/TemporalResolution"},{"type":"null"}],"title":"Temporal Resolution"}},{"name":"source_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Source Id"}},{"name":"dataset_version_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Dataset Version Id"}},{"name":"quality_state","in":"query","required":false,"schema":{"anyOf":[{"enum":["unvalidated","passed","warned","failed","quarantined"],"type":"string"},{"type":"null"}],"title":"Quality State"}},{"name":"value_status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ValueStatus"},{"type":"null"}],"title":"Value Status"}},{"name":"period_start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"}},{"name":"period_end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End"}},{"name":"unit_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Unit Key"}},{"name":"sort","in":"query","required":false,"schema":{"enum":["observation_id","metric_key","period_start","published_at"],"type":"string","default":"period_start","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"asc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Geography Observations Api V1 Geographies  Geography Id  Observations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/entities":{"get":{"tags":["entities"],"summary":"List canonical entities","description":"List entities with allowlisted filters and cursor pagination.\n\n``q`` searches the display name only and never establishes identity: two\nfacilities can share a name, and one facility appears under several. Use\n``/entities/{entity_id}/identifiers`` for deterministic joins.\n\nReturns:\n    The standard pagination envelope of entity payloads.\n\nRaises:\n    HTTPException: ``422`` when ``source_id`` or the cursor is malformed.","operationId":"list_entities_api_v1_entities_get","parameters":[{"name":"entity_class","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/EntityClass"},{"type":"null"}],"title":"Entity Class"}},{"name":"geography_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Geography Id"}},{"name":"state_fips","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{2}$"},{"type":"null"}],"title":"State Fips"}},{"name":"county_fips","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{5}$"},{"type":"null"}],"title":"County Fips"}},{"name":"source_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Source Id"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"description":"Free-text name search.","title":"Q"},"description":"Free-text name search."},{"name":"sort","in":"query","required":false,"schema":{"enum":["entity_id","primary_name","canonical_identifier_value"],"type":"string","default":"entity_id","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"asc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Entities Api V1 Entities Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/entities/{entity_id}":{"get":{"tags":["entities"],"summary":"Get one entity","description":"Return one entity.\n\nReturns:\n    The entity payload.\n\nRaises:\n    HTTPException: ``404`` when no such entity exists.","operationId":"get_entity_api_v1_entities__entity_id__get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","maxLength":40,"title":"Entity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Entity Api V1 Entities  Entity Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/entities/{entity_id}/identifiers":{"get":{"tags":["entities"],"summary":"List an entity's identifiers","description":"List the identifiers that establish and cross-reference this entity.\n\nReturns:\n    The standard pagination envelope of identifier payloads.\n\nRaises:\n    HTTPException: ``404`` when the entity does not exist.","operationId":"list_entity_identifiers_api_v1_entities__entity_id__identifiers_get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","maxLength":40,"title":"Entity Id"}},{"name":"authoritative_only","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Restrict to identifiers assigned by the authority.","title":"Authoritative Only"},"description":"Restrict to identifiers assigned by the authority."},{"name":"sort","in":"query","required":false,"schema":{"enum":["id","identifier_value"],"type":"string","default":"id","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"asc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Entity Identifiers Api V1 Entities  Entity Id  Identifiers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/entities/{entity_id}/observations":{"get":{"tags":["entities"],"summary":"List an entity's observations","description":"List observations whose ``entity_id`` is this entity.\n\nReturns:\n    The standard pagination envelope of observation payloads.\n\nRaises:\n    HTTPException: ``404`` when the entity does not exist; ``422`` when\n        ``source_id`` or the cursor is malformed.","operationId":"list_entity_observations_api_v1_entities__entity_id__observations_get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","maxLength":40,"title":"Entity Id"}},{"name":"metric_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Metric Key"}},{"name":"evidence_class","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/EvidenceClass"},{"type":"null"}],"title":"Evidence Class"}},{"name":"methodology","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/Methodology"},{"type":"null"}],"title":"Methodology"}},{"name":"temporal_resolution","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/TemporalResolution"},{"type":"null"}],"title":"Temporal Resolution"}},{"name":"source_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Source Id"}},{"name":"dataset_version_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Dataset Version Id"}},{"name":"quality_state","in":"query","required":false,"schema":{"anyOf":[{"enum":["unvalidated","passed","warned","failed","quarantined"],"type":"string"},{"type":"null"}],"title":"Quality State"}},{"name":"value_status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ValueStatus"},{"type":"null"}],"title":"Value Status"}},{"name":"period_start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"}},{"name":"period_end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End"}},{"name":"unit_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Unit Key"}},{"name":"sort","in":"query","required":false,"schema":{"enum":["observation_id","metric_key","period_start","published_at"],"type":"string","default":"period_start","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"asc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Entity Observations Api V1 Entities  Entity Id  Observations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/lineage/{record_type}/{record_id}":{"get":{"tags":["provenance"],"summary":"Get a canonical record's provenance chain","description":"Return the lineage record and ordered transform steps for one record.\n\n``record_type`` is a closed set matching the table's CHECK constraint, so an\nunknown type is a ``422`` rather than an empty search.\n\nReturns:\n    The lineage document, with ``steps`` capped at ``step_limit`` and\n    ``steps_truncated`` set when the chain is longer.\n\nRaises:\n    HTTPException: ``404`` when no lineage record exists for the pair.","operationId":"get_lineage_api_v1_lineage__record_type___record_id__get","parameters":[{"name":"record_type","in":"path","required":true,"schema":{"enum":["observation","entity","relationship","event","geography"],"type":"string","title":"Record Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"string","maxLength":40,"title":"Record Id"}},{"name":"step_limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Maximum transform steps to include.","default":200,"title":"Step Limit"},"description":"Maximum transform steps to include."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Lineage Api V1 Lineage  Record Type   Record Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/quality/results":{"get":{"tags":["quality"],"summary":"List quality results","description":"List quality-rule outcomes with allowlisted filters and cursor pagination.\n\nReturns:\n    The standard pagination envelope of quality-result payloads.\n\nRaises:\n    HTTPException: ``422`` when ``source_id`` or the cursor is malformed.","operationId":"list_quality_results_api_v1_quality_results_get","parameters":[{"name":"source_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Source Id"}},{"name":"dataset_version_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Dataset Version Id"}},{"name":"outcome","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/QualityOutcome"},{"type":"null"}],"title":"Outcome"}},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/Severity"},{"type":"null"}],"title":"Severity"}},{"name":"disposition","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/Disposition"},{"type":"null"}],"title":"Disposition"}},{"name":"blocked_publication","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked Publication"}},{"name":"rule_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Rule Key"}},{"name":"sort","in":"query","required":false,"schema":{"enum":["result_id","rule_key","created_at"],"type":"string","default":"created_at","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Quality Results Api V1 Quality Results Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/county-profile/{county_fips}":{"get":{"tags":["profiles"],"summary":"Everything Meridian holds for one county, with explicit gaps","description":"Return the county's infrastructure profile, gaps included.\n\nEvery section is present whether or not it holds data, and every metric is\nrendered in the same shape whether or not a value exists. A metric Meridian\ndoes not hold carries ``value: null``, ``status: \"no_data\"``, and a\n``no_data_reason`` naming what is missing -- never an estimate, an\ninterpolation, or a figure borrowed from a coarser grain.\n\nAggregations follow each metric's ``allowed_aggregations``, and the applied\nfunction plus the registry allowlist are returned on every entry so the\nchoice is verifiable rather than merely asserted.\n\nReturns:\n    The profile payload.\n\nRaises:\n    HTTPException: ``422`` when the FIPS is not five digits.","operationId":"get_county_profile_api_v1_county_profile__county_fips__get","parameters":[{"name":"county_fips","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{5}$","description":"Five-digit, zero-padded state+county FIPS, e.g. 36061.","title":"County Fips"},"description":"Five-digit, zero-padded state+county FIPS, e.g. 36061."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get County Profile Api V1 County Profile  County Fips  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/county-profile/{county_fips}/download":{"get":{"tags":["profiles"],"summary":"Download one county's profile as JSON","description":"Return the same profile as a downloadable JSON file.\n\nThe ``_meridian`` envelope travels with the file because a downloaded\nartifact outlives the request that produced it: whoever opens it later needs\nthe generation time, the API version, and the truth rule that no value in it\nmay be used without checking its ``evidence_class``.\n\nReturns:\n    A ``application/json`` response with a ``Content-Disposition``\n    attachment filename.\n\nRaises:\n    HTTPException: ``422`` when the FIPS is not five digits.","operationId":"download_county_profile_api_v1_county_profile__county_fips__download_get","parameters":[{"name":"county_fips","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{5}$","description":"Five-digit, zero-padded state+county FIPS, e.g. 36061.","title":"County Fips"},"description":"Five-digit, zero-padded state+county FIPS, e.g. 36061."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/county-profiles/available":{"get":{"tags":["profiles"],"summary":"Counties that actually hold at least one observation","description":"List the counties a profile can actually be populated for.\n\nDiscovery exists so a caller never has to guess which counties are ingested\nand read a wall of ``no_data`` to find out. Only counties with at least one\nobservation appear, each with its observation count and the metric keys\npresent.\n\nReturns:\n    The standard pagination envelope of county summaries.\n\nRaises:\n    HTTPException: ``422`` when the cursor is malformed.","operationId":"list_available_county_profiles_api_v1_county_profiles_available_get","parameters":[{"name":"state_fips","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{2}$"},{"type":"null"}],"title":"State Fips"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"asc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Available County Profiles Api V1 County Profiles Available Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat":{"post":{"tags":["chat"],"summary":"Ask a question about Meridian's data","description":"Stream an answer grounded only in Meridian's own data.\n\nThe model may only report what Meridian's tools returned. Configuration and\nupstream failures are streamed as an ``error`` plus a ``done`` carrying the\nactionable message, so the user reads the fix rather than a generic error.\n\nArgs:\n    request: The question and this tab's prior turns.\n    settings: Application settings.\n\nReturns:\n    A ``text/event-stream`` response.","operationId":"chat_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/capabilities":{"get":{"tags":["chat"],"summary":"What the chat can and cannot answer","description":"Describe the chat surface, its configuration state, and available data.\n\nArgs:\n    settings: Application settings.\n\nReturns:\n    A description the UI can render truthfully instead of guessing:\n    which model is configured, whether an API key is present (a boolean --\n    the key itself is never returned, logged, or hinted at), the bounds the\n    route enforces, and what Meridian has actually ingested.","operationId":"chat_capabilities_chat_capabilities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Chat Capabilities Chat Capabilities Get"}}}}}}},"/healthz":{"get":{"tags":["health"],"summary":"Liveness probe","description":"Return process liveness. Does not touch the database.","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Healthz Healthz Get"}}}}}}},"/readyz":{"get":{"tags":["health"],"summary":"Readiness probe","description":"Return readiness, including database connectivity.\n\nReports only the backend name or an exception class on failure -- never a\nconnection string, which can embed a password.","operationId":"readyz_readyz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/metrics":{"get":{"tags":["health"],"summary":"Prometheus metrics","description":"Expose Prometheus-format metrics.","operationId":"metrics_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AutomationFeasibility":{"type":"string","enum":["automated_api","automated_bulk_download","automated_gis_service","automated_catalog_discovery","automated_html_discovery","manual_download","restricted_authorized_only","retired_or_archived","unsupported_format","needs_research"],"title":"AutomationFeasibility","description":"How (and whether) a cataloged source can be acquired programmatically.\n\nEvery one of the 327 catalog sources receives exactly one of these values\nplus a human-readable reason. The ``AUTOMATED_*`` members may only be\nassigned when an approved endpoint can actually be represented by a\nconnector manifest and exercised safely -- never on the basis of a source\nmerely *looking* like an API."},"ChatMessage":{"properties":{"role":{"type":"string","pattern":"^(user|assistant)$","title":"Role"},"content":{"type":"string","maxLength":4000,"minLength":1,"title":"Content"}},"type":"object","required":["role","content"],"title":"ChatMessage","description":"One prior turn supplied by the client."},"ChatRequest":{"properties":{"message":{"type":"string","maxLength":4000,"minLength":1,"title":"Message"},"history":{"items":{"$ref":"#/components/schemas/ChatMessage"},"type":"array","maxItems":20,"title":"History"}},"type":"object","required":["message"],"title":"ChatRequest","description":"A chat request: the new question plus this tab's prior turns."},"ConnectorState":{"type":"string","enum":["unconfigured","manifest_valid","discovery_succeeded","acquisition_succeeded","parse_succeeded","normalization_succeeded","published","degraded","failed","disabled_security"],"title":"ConnectorState","description":"Pipeline progress for a source's connector.\n\nA connector advances one stage at a time and only after the corresponding\nstage genuinely succeeded. History is preserved in ``connector_state_history``\nrather than by overwriting this field."},"Disposition":{"type":"string","enum":["accepted","published_with_warning","quarantined","blocked","pending_review","waived"],"title":"Disposition","description":"What was done about a quality failure."},"EntityClass":{"type":"string","enum":["administrative_geography","utility","organization","facility","power_plant","generator","substation","transmission_asset","pipeline_asset","water_system","wastewater_facility","dam","levee","hospital","health_facility","airport","port","rail_asset","road_asset","bridge","telecom_site","broadband_provider","emergency_service_location","industrial_facility","agricultural_facility","weather_station","monitoring_station","balancing_authority","service_territory"],"title":"EntityClass","description":"Canonical entity classes Meridian can represent."},"EvidenceClass":{"type":"string","enum":["direct_reported","modeled_estimate","allocated_estimate","regional_proxy","context_only","unknown_pending_review"],"title":"EvidenceClass","description":"How directly a value reflects a real measurement.\n\nKeeping these distinguishable is a core requirement: modeled values must\nnever be presented as direct observations."},"GeographyLevel":{"type":"string","enum":["nation","region","state","territory","county","county_equivalent","independent_city","place","county_subdivision","tract","block_group","block","zcta","zip","tribal_area","utility_territory","balancing_authority_area","climate_division","watershed","cbsa","congressional_district","custom"],"title":"GeographyLevel","description":"Levels in the canonical geography hierarchy."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Methodology":{"type":"string","enum":["direct","modeled","allocated","proxy","aggregated","derived","unknown"],"title":"Methodology","description":"Derivation method applied to reach a canonical value."},"QualityOutcome":{"type":"string","enum":["passed","warned","failed","errored","skipped"],"title":"QualityOutcome","description":"Result of evaluating a quality rule."},"Severity":{"type":"string","enum":["info","low","medium","high","critical"],"title":"Severity","description":"Severity of a quality result, finding, or alert."},"SourceState":{"type":"string","enum":["cataloged","under_review","active","restricted","manual","retired","blocked"],"title":"SourceState","description":"Lifecycle of a cataloged source."},"TemporalResolution":{"type":"string","enum":["instant","subhourly","hourly","daily","weekly","monthly","quarterly","annual","multi_year","event","unknown"],"title":"TemporalResolution","description":"Granularity of an observation's time extent."},"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"},"ValueStatus":{"type":"string","enum":["ok","missing","suppressed","estimated","provisional","revised","not_applicable","withheld","out_of_range"],"title":"ValueStatus","description":"Explicit representation of non-ordinary values.\n\nMissing, suppressed, and not-applicable values are never coerced to zero."}}},"tags":[{"name":"catalog","description":"Cataloged sources, endpoints, connectors, and coverage."},{"name":"taxonomy","description":"Versioned taxonomy, metric, unit, and identifier registries."},{"name":"operations","description":"Platform status and run history."},{"name":"datasets","description":"Datasets, versions, and their raw artifacts."},{"name":"observations","description":"Canonical measurements, entities, and geographies."},{"name":"provenance","description":"Lineage from an API value back to raw bytes."},{"name":"profiles","description":"County infrastructure profiles with explicit data gaps."},{"name":"chat","description":"Natural-language questions answered only from ingested data."},{"name":"health","description":"Liveness, readiness, and metrics."}]}