{"openapi":"3.1.0","info":{"title":"Vantage Africa","description":"Continental crop intelligence: live weather, validated market prices, crop-quality projections, climate and security exposure, and the provenance behind every figure.","version":"0.3.0"},"paths":{"/weather":{"get":{"summary":"Get Weather","description":"Legacy shape: city-keyed observations, plus a ``_meta`` provenance block.","operationId":"get_weather_weather_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Weather Weather Get"}}}}}}},"/prices":{"get":{"summary":"Get Prices","description":"Legacy shape: city-keyed prices, plus a ``_meta`` provenance block.","operationId":"get_prices_prices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Prices Prices Get"}}}}}}},"/risk":{"get":{"summary":"Get Risk","description":"Legacy shape: city-keyed risk, plus a ``_meta`` provenance block.","operationId":"get_risk_risk_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Risk Risk Get"}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}},"/api/overview":{"get":{"summary":"Api Overview","operationId":"api_overview_api_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Overview Api Overview Get"}}}}}}},"/api/history/{city}":{"get":{"summary":"Api History","operationId":"api_history_api_history__city__get","parameters":[{"name":"city","in":"path","required":true,"schema":{"type":"string","title":"City"}},{"name":"metric","in":"query","required":false,"schema":{"type":"string","description":"metric name, e.g. temperature_c","default":"temperature_c","title":"Metric"},"description":"metric name, e.g. temperature_c"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":240,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api History Api History  City  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alerts":{"get":{"summary":"Api Alerts","operationId":"api_alerts_api_alerts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Alerts Api Alerts Get"}}}}}}},"/api/providers":{"get":{"summary":"Api Providers","operationId":"api_providers_api_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Providers Api Providers Get"}}}}}}},"/api/standards":{"get":{"summary":"Api Standards","description":"Standards, SDG alignment, security controls and governance principles.","operationId":"api_standards_api_standards_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Standards Api Standards Get"}}}}}}},"/api/sdg/{goal}":{"get":{"summary":"Api Sdg","description":"Detail for one Sustainable Development Goal.","operationId":"api_sdg_api_sdg__goal__get","parameters":[{"name":"goal","in":"path","required":true,"schema":{"type":"integer","title":"Goal"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Sdg Api Sdg  Goal  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/catalog":{"get":{"summary":"Api Catalog","description":"DCAT-shaped catalogue of every published dataset.","operationId":"api_catalog_api_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Catalog Api Catalog Get"}}}}}}},"/api/sdmx/{domain}.csv":{"get":{"summary":"Api Sdmx","description":"Flat observation table in an SDMX-shaped CSV.\n\nColumns: series key, code, time, value, unit.  This is the shape national\nstatistical offices exchange in, so an analyst can load it directly.","operationId":"api_sdmx_api_sdmx__domain__csv_get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contact":{"get":{"summary":"Api Contact","description":"Public contact details for developers, partners, and security reports.","operationId":"api_contact_api_contact_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Contact Api Contact Get"}}}}}}},"/api/stations":{"get":{"summary":"Api Stations","operationId":"api_stations_api_stations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Stations Api Stations Get"}}}}}}},"/api/regions":{"get":{"summary":"Api Regions","description":"Nigeria state capitals plus the recommended-check peers.","operationId":"api_regions_api_regions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Regions Api Regions Get"}}}}}}},"/api/region/{code}":{"get":{"summary":"Api Region","description":"The full board for one place.","operationId":"api_region_api_region__code__get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Region Api Region  Code  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/region/{code}/signals":{"get":{"summary":"Api Region Signals","description":"Crawled signals for a place.\n\nServed separately from the board because the crawl is slow: the last good\nresult is returned immediately and a refresh runs in the background.","operationId":"api_region_signals_api_region__code__signals_get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Region Signals Api Region  Code  Signals Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/region/{code}/local-prices":{"get":{"summary":"Api Region Local Prices","description":"Local market price reports for a place (crawled on demand, cached).","operationId":"api_region_local_prices_api_region__code__local_prices_get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Region Local Prices Api Region  Code  Local Prices Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/region/{code}/lgas":{"get":{"summary":"Api Region Lgas","description":"Local-government breakdown for a Nigerian state.","operationId":"api_region_lgas_api_region__code__lgas_get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Region Lgas Api Region  Code  Lgas Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/snapshot":{"get":{"summary":"Api Snapshot","operationId":"api_snapshot_api_snapshot_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/refresh":{"get":{"summary":"Api Refresh","description":"Force an out-of-band refresh of every upstream source.\n\nDisabled unless VANTAGE_ADMIN_TOKEN is set; when it is, the token must be\nsupplied in the X-Admin-Token header.","operationId":"api_refresh_api_refresh_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Refresh Api Refresh Get"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"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"}}}}