{"openapi":"3.1.0","info":{"title":"Zenithis Aviation Data Engine","description":"Source-attributed aviation data. Missing operational data is explicitly unavailable. X-API-Key is required for B2B data endpoints.","version":"1.0.0"},"paths":{"/api/aviation/v1/health":{"get":{"tags":["Operations"],"summary":"Health","operationId":"health_api_aviation_v1_health_get","responses":{"200":{"description":"Service and airport-reference readiness. This does not indicate operational flight coverage.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHealth"},"example":{"status":"ok","schema":4,"airports":72684,"revision":"b529623d2a0b09a9be78d37fc7a7a5e1e16e3451","operational_flights":"available"}}}},"503":{"description":"Airport reference or database is not ready.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Airport reference not ready"}}}}}}},"/api/aviation/v1/sources/status":{"get":{"tags":["Operations"],"summary":"Sources","operationId":"sources_api_aviation_v1_sources_status_get","responses":{"200":{"description":"Source availability, freshness, attribution and measured coverage.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationSourcesStatus"}}}}}}},"/api/aviation/v1/airports":{"get":{"tags":["Airports"],"summary":"Airports","operationId":"airports_api_aviation_v1_airports_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":128,"default":"","title":"Q"},"description":"Search airport ident, ICAO, IATA, name or city.","example":"NCE"},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^[A-Z]{2}$"},{"type":"null"}],"title":"Country"},"description":"ISO 3166-1 alpha-2 country code.","example":"FR"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"},"description":"Maximum records per page (1–100)."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":100000,"minimum":0,"default":0,"title":"Offset"},"description":"Zero-based pagination offset."}],"responses":{"200":{"description":"Airport reference as GeoJSON FeatureCollection. Coordinates are [longitude, latitude].","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AirportFeatureCollection"},"example":{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[7.21587,43.6584]},"properties":{"ident":"LFMN","icao":"LFMN","iata":"NCE","name":"Nice Côte d’Azur Airport","country":"FR","city":"Nice","timezone":"Europe/Paris","type":"large_airport","source_id":"ourairports","revision":"b529623d2a0b09a9be78d37fc7a7a5e1e16e3451","collected_at":"2026-10-21T00:00:00Z","license":"Public Domain / Unlicense","attribution":"OurAirports","classification":"community_reference","age_seconds":0}}],"total":1,"limit":20,"offset":0}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"503":{"description":"A required dependency is temporarily unavailable. No operational flight status should be inferred from this response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"error":"service_unavailable"}}}},"401":{"description":"Missing, invalid or revoked X-API-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"API key required"}}}},"429":{"description":"Per-minute or daily API-key quota reached. Retry after the advertised interval.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Seconds before retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Quota exceeded"}}}}},"security":[{"ApiKey":[]}]}},"/api/aviation/v1/airports/nearest":{"get":{"tags":["Airports"],"summary":"Nearest Airports","description":"Return nearest authorized reference airports to a WGS84 point.","operationId":"nearest_airports_api_aviation_v1_airports_nearest_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"title":"Lon"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"default":1,"title":"Limit"}}],"responses":{"200":{"description":"Nearest authorized community-reference airports to WGS84 latitude/longitude. `distance_m` is geodesic; GeoJSON coordinates are [longitude, latitude].","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AirportFeatureCollection"},"example":{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[7.21587,43.6584]},"properties":{"ident":"LFMN","icao":"LFMN","iata":"NCE","name":"Nice Côte d’Azur Airport","country":"FR","city":"Nice","timezone":"Europe/Paris","type":"large_airport","source_id":"ourairports","revision":"b529623d2a0b09a9be78d37fc7a7a5e1e16e3451","collected_at":"2026-10-21T00:00:00Z","license":"Public Domain / Unlicense","attribution":"OurAirports","classification":"community_reference","age_seconds":0,"distance_m":1520.4}}],"total":1,"limit":1,"offset":0}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"503":{"description":"A required dependency is temporarily unavailable. No operational flight status should be inferred from this response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"error":"service_unavailable"}}}},"401":{"description":"Missing, invalid or revoked X-API-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"API key required"}}}},"429":{"description":"Per-minute or daily API-key quota reached. Retry after the advertised interval.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Seconds before retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Quota exceeded"}}}}},"security":[{"ApiKey":[]}]}},"/api/aviation/v1/airports/{icao}":{"get":{"tags":["Airports"],"summary":"Airport","operationId":"airport_api_aviation_v1_airports__icao__get","parameters":[{"name":"icao","in":"path","required":true,"schema":{"type":"string","title":"Icao"},"description":"Value matched against the OurAirports ident or ICAO field. IATA alone is not matched; resolve IATA through the airport reference first.","example":"LFMN"}],"responses":{"200":{"description":"One airport as a GeoJSON Feature. `ident` is not guaranteed to be an ICAO code.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AirportFeature"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"404":{"description":"No authorized airport reference matches this identifier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Airport not found"}}}},"503":{"description":"A required dependency is temporarily unavailable. No operational flight status should be inferred from this response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"error":"service_unavailable"}}}},"401":{"description":"Missing, invalid or revoked X-API-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"API key required"}}}},"429":{"description":"Per-minute or daily API-key quota reached. Retry after the advertised interval.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Seconds before retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Quota exceeded"}}}}},"security":[{"ApiKey":[]}]}},"/api/aviation/v1/airports/{icao}/departures":{"get":{"tags":["Flights"],"summary":"Movements","operationId":"movements_api_aviation_v1_airports__icao__departures_get","parameters":[{"name":"icao","in":"path","required":true,"schema":{"type":"string","title":"Icao"},"description":"Value matched against the OurAirports ident or ICAO field. IATA alone is not matched; resolve IATA through the airport reference first.","example":"LFMN"},{"name":"service_date","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Service Date"},"description":"Required service date in ISO 8601 date format.","example":"2026-11-02"}],"responses":{"200":{"description":"Authorized movement facts or, when absent/partial, linked Web candidates with explicitly extracted but unverified claims.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationalOrWebSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"503":{"description":"No authorized provider records cover this airport and date; this does not imply an empty schedule.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"official_airport_movements","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}},"401":{"description":"Missing, invalid or revoked X-API-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"API key required"}}}},"429":{"description":"Per-minute or daily API-key quota reached. Retry after the advertised interval.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Seconds before retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Quota exceeded"}}}}},"description":"Returns authorized provider movement facts with source, authority, timestamps, freshness, license and provenance. If none exist, returns Web candidates; when provider facts are partial, optional web_search claims are included separately. Values are extracted from titles/snippets and remain unverified, never airport-confirmed movements.","security":[{"ApiKey":[]}]}},"/api/aviation/v1/airports/{icao}/arrivals":{"get":{"tags":["Flights"],"summary":"Movements","operationId":"movements_api_aviation_v1_airports__icao__arrivals_get","parameters":[{"name":"icao","in":"path","required":true,"schema":{"type":"string","title":"Icao"},"description":"Value matched against the OurAirports ident or ICAO field. IATA alone is not matched; resolve IATA through the airport reference first.","example":"LFMN"},{"name":"service_date","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Service Date"},"description":"Required service date in ISO 8601 date format.","example":"2026-11-02"}],"responses":{"200":{"description":"Authorized movement facts or, when absent/partial, linked Web candidates with explicitly extracted but unverified claims.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationalOrWebSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"503":{"description":"No authorized provider records cover this airport and date; this does not imply an empty schedule.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"official_airport_movements","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}},"401":{"description":"Missing, invalid or revoked X-API-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"API key required"}}}},"429":{"description":"Per-minute or daily API-key quota reached. Retry after the advertised interval.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Seconds before retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Quota exceeded"}}}}},"description":"Returns authorized provider movement facts with source, authority, timestamps, freshness, license and provenance. If none exist, returns Web candidates; when provider facts are partial, optional web_search claims are included separately. Values are extracted from titles/snippets and remain unverified, never airport-confirmed movements.","security":[{"ApiKey":[]}]}},"/aviation/open/v1/airports/{icao}/departures":{"get":{"tags":["Open data"],"summary":"Open Movements","operationId":"open_movements_aviation_open_v1_airports__icao__departures_get","parameters":[{"name":"icao","in":"path","required":true,"schema":{"type":"string","title":"Icao"}},{"name":"service_date","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Service Date"}}],"responses":{"200":{"description":"Redistributable operational facts or, when absent/partial, linked Web candidates with explicitly extracted but unverified claims.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationalOrWebSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"503":{"description":"No authorized redistributable source record covers this query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"operational_flights","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}}},"description":"Public facts from sources authorized for redistribution include per-fact source, license and timestamps. When none exist, Web candidates are returned; if provider facts are partial, they may be supplemented by a separate web_search object. Extracted values (times, terminal, gate, stand, baggage belt, delay or status) remain unverified claims with evidence, source URL/host, search engine, timestamps and unverified license; no value is promoted to an operational fact."}},"/aviation/open/v1/airports/{icao}/arrivals":{"get":{"tags":["Open data"],"summary":"Open Movements","operationId":"open_movements_aviation_open_v1_airports__icao__arrivals_get","parameters":[{"name":"icao","in":"path","required":true,"schema":{"type":"string","title":"Icao"}},{"name":"service_date","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Service Date"}}],"responses":{"200":{"description":"Redistributable operational facts or, when absent/partial, linked Web candidates with explicitly extracted but unverified claims.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationalOrWebSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"503":{"description":"No authorized redistributable source record covers this query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"operational_flights","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}}},"description":"Public facts from sources authorized for redistribution include per-fact source, license and timestamps. When none exist, Web candidates are returned; if provider facts are partial, they may be supplemented by a separate web_search object. Extracted values (times, terminal, gate, stand, baggage belt, delay or status) remain unverified claims with evidence, source URL/host, search engine, timestamps and unverified license; no value is promoted to an operational fact."}},"/api/aviation/v1/airports/{icao}/weather":{"get":{"tags":["Weather"],"summary":"Weather","operationId":"weather_api_aviation_v1_airports__icao__weather_get","parameters":[{"name":"icao","in":"path","required":true,"schema":{"type":"string","title":"Icao"},"description":"Value matched against the OurAirports ident or ICAO field. IATA alone is not matched; resolve IATA through the airport reference first.","example":"LFMN"}],"responses":{"200":{"description":"METAR/TAF observations with timestamps, freshness classification and source provenance. Provider payload is product-specific.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WeatherResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"503":{"description":"No authorized weather observations are available for this airport.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"weather","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}},"401":{"description":"Missing, invalid or revoked X-API-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"API key required"}}}},"429":{"description":"Per-minute or daily API-key quota reached. Retry after the advertised interval.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Seconds before retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Quota exceeded"}}}}},"security":[{"ApiKey":[]}]}},"/aviation/open/v1/weather/{icao}":{"get":{"tags":["Open data"],"summary":"Open Weather","operationId":"open_weather_aviation_open_v1_weather__icao__get","parameters":[{"name":"icao","in":"path","required":true,"schema":{"type":"string","title":"Icao"}}],"responses":{"200":{"description":"Open weather response for a configured station; provider payload is product-specific.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WeatherResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"404":{"description":"Station is outside the configured open-data coverage.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Weather station not in open coverage"}}}},"503":{"description":"No authorized weather observations are currently available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"weather","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}}}}},"/api/aviation/v1/flights/search":{"get":{"tags":["Flights"],"summary":"Flight Search","operationId":"flight_search_api_aviation_v1_flights_search_get","parameters":[{"name":"number","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Z0-9]{2,3}[0-9]{1,4}[A-Z]?$","title":"Number"},"description":"Flight number, e.g. AF123. Current capability returns data_unavailable.","example":"AF123"},{"name":"service_date","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Service Date"},"description":"Required service date in ISO 8601 date format.","example":"2026-11-02"},{"name":"origin","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin"}},{"name":"destination","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Destination"}}],"responses":{"200":{"description":"Provider-backed facts or, when absent/partial, linked Web candidates with explicitly extracted but unverified claims.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationalOrWebSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"503":{"description":"No authorized provider records cover this flight query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"operational_flights","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}},"401":{"description":"Missing, invalid or revoked X-API-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"API key required"}}}},"429":{"description":"Per-minute or daily API-key quota reached. Retry after the advertised interval.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Seconds before retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Quota exceeded"}}}}},"description":"Returns provider facts with per-field source, authority, update and collection times, freshness, license and provenance. With no facts it returns Web candidates; for partial provider responses it may add a separate web_search object with conservatively extracted time, terminal, gate, delay or status claims. Every claim stays unverified with evidence and provenance.","security":[{"ApiKey":[]}]}},"/aviation/open/v1/flights/search":{"get":{"tags":["Open data"],"summary":"Open Flight Search","operationId":"open_flight_search_aviation_open_v1_flights_search_get","parameters":[{"name":"number","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Z0-9]{2,3}[0-9]{1,4}[A-Z]?$","title":"Number"}},{"name":"service_date","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Service Date"}},{"name":"origin","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin"}},{"name":"destination","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Destination"}}],"responses":{"200":{"description":"Redistributable operational facts or, when absent/partial, linked Web candidates with explicitly extracted but unverified claims.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationalOrWebSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"503":{"description":"No authorized redistributable source record covers this query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"operational_flights","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}}},"description":"Public facts from sources authorized for redistribution include per-fact source, license and timestamps. When none exist, Web candidates are returned; if provider facts are partial, they may be supplemented by a separate web_search object. Extracted values (times, terminal, gate, stand, baggage belt, delay or status) remain unverified claims with evidence, source URL/host, search engine, timestamps and unverified license; no value is promoted to an operational fact."}},"/api/aviation/v1/flights/{flight_id}/events":{"get":{"tags":["Flights"],"summary":"Flight Detail","operationId":"flight_detail_api_aviation_v1_flights__flight_id__events_get","parameters":[{"name":"flight_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Flight Id"}}],"responses":{"200":{"description":"Provider-backed operational facts with per-field provenance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationalFlightsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"503":{"description":"No authorized provider records cover this flight query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"operational_flights","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}},"401":{"description":"Missing, invalid or revoked X-API-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"API key required"}}}},"429":{"description":"Per-minute or daily API-key quota reached. Retry after the advertised interval.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Seconds before retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Quota exceeded"}}}}},"description":"Returns provider facts with per-field source, authority, update and collection times, freshness, license and provenance. Provider facts are kept separate; no status is inferred from missing data.","security":[{"ApiKey":[]}]}},"/api/aviation/v1/flights/{flight_id}/status":{"get":{"tags":["Flights"],"summary":"Flight Detail","operationId":"flight_detail_api_aviation_v1_flights__flight_id__status_get","parameters":[{"name":"flight_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Flight Id"}}],"responses":{"200":{"description":"Provider-backed operational facts with per-field provenance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationalFlightsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"503":{"description":"No authorized provider records cover this flight query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"operational_flights","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}},"401":{"description":"Missing, invalid or revoked X-API-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"API key required"}}}},"429":{"description":"Per-minute or daily API-key quota reached. Retry after the advertised interval.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Seconds before retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Quota exceeded"}}}}},"description":"Returns provider facts with per-field source, authority, update and collection times, freshness, license and provenance. Provider facts are kept separate; no status is inferred from missing data.","security":[{"ApiKey":[]}]}},"/api/aviation/v1/flights/{flight_id}":{"get":{"tags":["Flights"],"summary":"Flight Detail","operationId":"flight_detail_api_aviation_v1_flights__flight_id__get","parameters":[{"name":"flight_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Flight Id"}}],"responses":{"200":{"description":"Provider-backed operational facts with per-field provenance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationalFlightsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"503":{"description":"No authorized provider records cover this flight query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"operational_flights","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}},"401":{"description":"Missing, invalid or revoked X-API-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"API key required"}}}},"429":{"description":"Per-minute or daily API-key quota reached. Retry after the advertised interval.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Seconds before retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Quota exceeded"}}}}},"description":"Returns provider facts with per-field source, authority, update and collection times, freshness, license and provenance. Provider facts are kept separate; no status is inferred from missing data.","security":[{"ApiKey":[]}]}},"/api/aviation/v1/flights/{flight_id}/track":{"get":{"tags":["Flights"],"summary":"Flight Track","operationId":"flight_track_api_aviation_v1_flights__flight_id__track_get","parameters":[{"name":"flight_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Flight Id"}}],"responses":{"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"503":{"description":"Capability unavailable; no operational flight status is inferred.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"operational_flights","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}},"401":{"description":"Missing, invalid or revoked X-API-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"API key required"}}}},"429":{"description":"Per-minute or daily API-key quota reached. Retry after the advertised interval.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Seconds before retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Quota exceeded"}}}}},"description":"This capability is not currently supplied by an authorized operational data source. The endpoint returns HTTP 503 with data_unavailable; it does not imply cancellation or absence of a flight.","security":[{"ApiKey":[]}]}},"/api/aviation/v1/airlines/{code}":{"get":{"tags":["Airlines"],"summary":"Airlines","operationId":"airlines_api_aviation_v1_airlines__code__get","parameters":[{"name":"code","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}}],"responses":{"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"503":{"description":"Capability unavailable; no operational flight status is inferred.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"operational_flights","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}},"401":{"description":"Missing, invalid or revoked X-API-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"API key required"}}}},"429":{"description":"Per-minute or daily API-key quota reached. Retry after the advertised interval.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Seconds before retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Quota exceeded"}}}}},"description":"This capability is not currently supplied by an authorized operational data source. The endpoint returns HTTP 503 with data_unavailable; it does not imply cancellation or absence of a flight.","security":[{"ApiKey":[]}]}},"/api/aviation/v1/airlines":{"get":{"tags":["Airlines"],"summary":"Airlines","operationId":"airlines_api_aviation_v1_airlines_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}}],"responses":{"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"503":{"description":"Capability unavailable; no operational flight status is inferred.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"operational_flights","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}},"401":{"description":"Missing, invalid or revoked X-API-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"API key required"}}}},"429":{"description":"Per-minute or daily API-key quota reached. Retry after the advertised interval.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Seconds before retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Quota exceeded"}}}}},"description":"This capability is not currently supplied by an authorized operational data source. The endpoint returns HTTP 503 with data_unavailable; it does not imply cancellation or absence of a flight.","security":[{"ApiKey":[]}]}},"/api/aviation/v1/aircraft":{"get":{"tags":["Aircraft"],"summary":"Live Aircraft","operationId":"live_aircraft_api_aviation_v1_aircraft_get","responses":{"200":{"description":"GeoJSON FeatureCollection of fresh ADS-B positions; an empty result is not proof of no flight.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AircraftFeatureCollection"}}}},"503":{"description":"No fresh ADS-B observations are currently available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"adsb_positions","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}},"401":{"description":"Missing, invalid or revoked X-API-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"API key required"}}}},"429":{"description":"Per-minute or daily API-key quota reached. Retry after the advertised interval.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Seconds before retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Quota exceeded"}}}}},"security":[{"ApiKey":[]}]}},"/api/aviation/v1/aircraft/live":{"get":{"tags":["Aircraft"],"summary":"Live Aircraft","operationId":"live_aircraft_api_aviation_v1_aircraft_live_get","responses":{"200":{"description":"GeoJSON FeatureCollection of fresh ADS-B positions; an empty result is not proof of no flight.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AircraftFeatureCollection"}}}},"503":{"description":"No fresh ADS-B observations are currently available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"adsb_positions","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}},"401":{"description":"Missing, invalid or revoked X-API-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"API key required"}}}},"429":{"description":"Per-minute or daily API-key quota reached. Retry after the advertised interval.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Seconds before retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Quota exceeded"}}}}},"security":[{"ApiKey":[]}]}},"/aviation/open/v1/aircraft":{"get":{"tags":["Open data"],"summary":"Open Aircraft","operationId":"open_aircraft_aviation_open_v1_aircraft_get","parameters":[{"name":"region","in":"query","required":false,"schema":{"type":"string","pattern":"^(nice|paris|douala|yaounde)$","default":"nice","title":"Region"}}],"responses":{"200":{"description":"GeoJSON positions observed in the selected fixed region. Empty features do not indicate no flights.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AircraftFeatureCollection"},"example":{"type":"FeatureCollection","features":[],"coverage":{"region":{"id":"douala","latitude":4.01,"longitude":9.72,"radius_nm":150},"scope":"fixed region only; receiver-dependent observations; empty is not evidence of no flights"},"attribution":"Contains information from adsb.lol, made available under ODbL 1.0.","license_url":"https://opendatacommons.org/licenses/odbl/1-0/","source_url":"https://www.adsb.lol/","dataset_url":"/aviation/data/adsb-lol.json"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/aviation/data/adsb-lol.json":{"get":{"tags":["Aircraft"],"summary":"Open Position Dataset","description":"Complete current, separate adapted ADS-B database, offered under ODbL 1.0.","operationId":"open_position_dataset_aviation_data_adsb_lol_json_get","responses":{"200":{"description":"Current adapted ADS-B observations as GeoJSON with attribution and license.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AircraftFeatureCollection"}}}}}}},"/api/aviation/v1/aircraft/{icao24}":{"get":{"tags":["Aircraft"],"summary":"Aircraft","operationId":"aircraft_api_aviation_v1_aircraft__icao24__get","parameters":[{"name":"icao24","in":"path","required":true,"schema":{"type":"string","title":"Icao24"}}],"responses":{"200":{"description":"One observed aircraft position as a GeoJSON Feature.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AircraftFeature"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"503":{"description":"No fresh position is available for this aircraft address.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnavailableCapability"},"example":{"availability":"data_unavailable","capability":"adsb_position","reason":"No authorized source records cover this query","status":null,"scheduled":null,"estimated":null,"observed":null,"confirmed":null,"source":null,"collected_at":null,"coverage":0}}}},"401":{"description":"Missing, invalid or revoked X-API-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"API key required"}}}},"429":{"description":"Per-minute or daily API-key quota reached. Retry after the advertised interval.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Seconds before retry."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AviationHttpError"},"example":{"detail":"Quota exceeded"}}}}},"security":[{"ApiKey":[]}]}}},"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"},"UnavailableCapability":{"type":"object","required":["availability","capability","reason","status","scheduled","estimated","observed","confirmed","source","collected_at","coverage"],"properties":{"availability":{"type":"string","const":"data_unavailable"},"capability":{"type":"string","example":"official_airport_movements"},"reason":{"type":"string","example":"No authorized source records cover this query"},"status":{"type":["string","null"]},"scheduled":{"type":["object","null"]},"estimated":{"type":["object","null"]},"observed":{"type":["object","null"]},"confirmed":{"type":["boolean","null"]},"source":{"type":["string","null"]},"collected_at":{"type":["string","null"],"format":"date-time"},"coverage":{"type":"integer","minimum":0}}},"OperationalFact":{"type":"object","required":["name","value","confirmation","source","source_record_id","source_updated_at","collected_at","valid_until","fresh","payload_sha256","provenance"],"properties":{"name":{"type":"string"},"value":{},"confirmation":{"type":"string","enum":["airport_confirmed","airline_confirmed","provider_reported","estimated","observed"]},"source":{"type":"object","required":["id","authority","url","license","attribution","rights"],"properties":{"id":{"type":"string"},"authority":{"type":"string","enum":["airport","airline","provider","community","observer"]},"url":{"type":"string","format":"uri"},"license":{"type":"string"},"attribution":{"type":"string"},"rights":{"type":"object","properties":{"authorized":{"type":"boolean"},"commercial":{"type":"boolean"},"redistribution":{"type":"boolean"}}}}},"source_record_id":{"type":"string"},"source_updated_at":{"type":"string","format":"date-time"},"collected_at":{"type":"string","format":"date-time"},"valid_until":{"type":["string","null"],"format":"date-time"},"fresh":{"type":"boolean"},"payload_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"provenance":{"type":"object"}}},"OperationalFlight":{"type":"object","required":["flight_id","flight_number","service_date","origin","destination","facts","missing_facts"],"properties":{"flight_id":{"type":"string","format":"uuid"},"flight_number":{"type":"string"},"service_date":{"type":"string","format":"date"},"origin":{"type":["string","null"]},"destination":{"type":["string","null"]},"facts":{"type":"array","items":{"$ref":"#/components/schemas/OperationalFact"}},"missing_facts":{"type":"array","items":{"type":"string"}}}},"OperationalFlightsResponse":{"type":"object","required":["availability","coverage","direction","count","flights"],"properties":{"availability":{"type":"string","enum":["available","partial"]},"coverage":{"type":"string"},"direction":{"type":["string","null"],"enum":["arrivals","departures",null]},"count":{"type":"integer","minimum":1},"flights":{"type":"array","items":{"$ref":"#/components/schemas/OperationalFlight"}},"web_search":{"$ref":"#/components/schemas/WebSearchFallbackResponse","description":"Optional web search with one adjudicated value per field, kept separate from authorized facts."}}},"WebSearchClaim":{"type":"object","required":["field","value","classification","confirmation","source_host","source_url","search_engine","license","license_status","source_published_at","collected_at","evidence","extraction_method"],"properties":{"field":{"type":"string"},"value":{"type":["string","integer","boolean"]},"classification":{"type":"string","const":"unverified_web_claim"},"confirmation":{"type":"null"},"source_host":{"type":"string"},"source_url":{"type":"string","format":"uri"},"search_engine":{"type":["string","null"]},"license":{"type":"null"},"license_status":{"type":"string","const":"not_verified"},"source_published_at":{"type":["string","null"]},"collected_at":{"type":"string","format":"date-time"},"time_basis":{"type":"string"},"evidence":{"type":"string"},"extraction_method":{"type":"string","const":"labeled_snippet_pattern"}}},"WebSearchCandidate":{"type":"object","required":["title","url","snippet","published_at","source_host","search_engine","classification","confirmation","extracted_claims"],"properties":{"title":{"type":"string"},"url":{"type":"string","format":"uri"},"snippet":{"type":"string"},"published_at":{"type":["string","null"]},"source_host":{"type":"string"},"search_engine":{"type":["string","null"]},"classification":{"type":"string","const":"unverified_web_result"},"confirmation":{"type":"null"},"extracted_claims":{"type":"array","items":{"$ref":"#/components/schemas/WebSearchClaim"}}}},"WebSearchAdjudicatedField":{"type":"object","required":["value","status","confirmation","supporting_source_count","supporting_sources","evidence","alternatives"],"properties":{"value":{"type":["string","integer","boolean","null"]},"status":{"type":"string","enum":["single_source_unverified","corroborated_unverified","conflict_unresolved"]},"confirmation":{"type":"null"},"supporting_source_count":{"type":"integer","minimum":0},"supporting_sources":{"type":"array","items":{"type":"string"}},"evidence":{"type":"array","items":{"type":"object","additionalProperties":true}},"alternatives":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"WebSearchAdjudication":{"type":"object","required":["method","fields"],"properties":{"method":{"type":"string","const":"independent_host_consensus_v1"},"fields":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/WebSearchAdjudicatedField"}}}},"WebSearchFallbackResponse":{"type":"object","required":["availability","capability","search_provider","search_engines_requested","search_engines_responded","pages_searched","query_strategies","query","searched_at","candidate_count","adjudication","candidates","warning","cache"],"properties":{"availability":{"type":"string","enum":["web_candidates_unverified","web_search_no_candidates"]},"capability":{"type":"string"},"search_provider":{"type":"string","const":"searxng"},"search_engines_requested":{"type":"array","items":{"type":"string"},"maxItems":10},"search_engines_responded":{"type":"array","items":{"type":"string"},"maxItems":10},"pages_searched":{"type":"array","items":{"type":"integer","minimum":1,"maximum":2},"maxItems":2},"query_strategies":{"type":"array","items":{"type":"string"},"maxItems":3},"query":{"type":"object","additionalProperties":true},"searched_at":{"type":"string","format":"date-time"},"candidate_count":{"type":"integer","minimum":0,"maximum":12},"adjudication":{"$ref":"#/components/schemas/WebSearchAdjudication","description":"At most one selected value per field. Values remain unverified; conflicts have value=null."},"candidates":{"type":"array","items":{"$ref":"#/components/schemas/WebSearchCandidate"}},"warning":{"type":"string"},"cache":{"type":"string","enum":["hit","miss"]}}},"OperationalOrWebSearchResponse":{"oneOf":[{"$ref":"#/components/schemas/OperationalFlightsResponse"},{"$ref":"#/components/schemas/WebSearchFallbackResponse"}]},"AirportProperties":{"type":"object","required":["ident","icao","iata","name","country","city","timezone","type","source_id","revision","collected_at","license","attribution","classification","age_seconds"],"properties":{"ident":{"type":"string","description":"OurAirports identifier; not guaranteed to be ICAO."},"icao":{"type":["string","null"]},"iata":{"type":["string","null"]},"name":{"type":"string"},"country":{"type":["string","null"]},"city":{"type":["string","null"]},"timezone":{"type":["string","null"]},"type":{"type":"string"},"source_id":{"type":"string"},"revision":{"type":"string"},"collected_at":{"type":"string","format":"date-time"},"license":{"type":"string"},"attribution":{"type":"string"},"classification":{"type":"string","const":"community_reference"},"age_seconds":{"type":"number","minimum":0},"distance_m":{"type":"number","minimum":0,"description":"Present only on the nearest-airports response; geodesic distance from the requested WGS84 point."}}},"AirportFeature":{"type":"object","required":["type","geometry","properties"],"properties":{"type":{"type":"string","const":"Feature"},"geometry":{"type":"object","required":["type","coordinates"],"properties":{"type":{"type":"string","const":"Point"},"coordinates":{"type":"array","prefixItems":[{"type":"number","description":"Longitude"},{"type":"number","description":"Latitude"}],"minItems":2,"maxItems":2}}},"properties":{"$ref":"#/components/schemas/AirportProperties"}}},"AirportFeatureCollection":{"type":"object","required":["type","features","total","limit","offset"],"properties":{"type":{"type":"string","const":"FeatureCollection"},"features":{"type":"array","items":{"$ref":"#/components/schemas/AirportFeature"}},"total":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0}}},"AircraftProperties":{"type":"object","required":["icao24","callsign","observed_at","collected_at","altitude_ft","heading","source_id","classification","commercial_flight_instance","age_seconds"],"properties":{"icao24":{"type":"string","description":"ICAO 24-bit aircraft address."},"callsign":{"type":["string","null"]},"observed_at":{"type":"string","format":"date-time"},"collected_at":{"type":"string","format":"date-time"},"altitude_ft":{"type":["number","null"]},"heading":{"type":["number","null"]},"source_id":{"type":"string"},"attribution":{"type":"string"},"license":{"type":"string"},"classification":{"type":"string","const":"observed"},"commercial_flight_instance":{"type":"null","description":"ADS-B position is not a confirmed commercial flight instance."},"age_seconds":{"type":"number","minimum":0}}},"AircraftFeature":{"type":"object","required":["type","geometry","properties"],"properties":{"type":{"type":"string","const":"Feature"},"geometry":{"type":"object","required":["type","coordinates"],"properties":{"type":{"type":"string","const":"Point"},"coordinates":{"type":"array","prefixItems":[{"type":"number","description":"Longitude"},{"type":"number","description":"Latitude"}],"minItems":2,"maxItems":2}}},"properties":{"$ref":"#/components/schemas/AircraftProperties"}}},"AircraftFeatureCollection":{"type":"object","required":["type","features","coverage","attribution","license_url","source_url","dataset_url"],"properties":{"type":{"type":"string","const":"FeatureCollection"},"features":{"type":"array","items":{"$ref":"#/components/schemas/AircraftFeature"}},"coverage":{"type":"object","description":"Configured region and scope; an empty collection is not proof that no aircraft are flying."},"attribution":{"type":"string"},"license_url":{"type":"string","format":"uri"},"source_url":{"type":"string","format":"uri"},"dataset_url":{"type":"string"}}},"AviationHealth":{"type":"object","required":["status","schema","airports","revision","operational_flights"],"properties":{"status":{"type":"string","const":"ok"},"schema":{"type":"integer"},"airports":{"type":"integer","minimum":0},"revision":{"type":"string"},"operational_flights":{"type":"string","enum":["available","data_unavailable"]}}},"AviationSourcesStatus":{"type":"object","required":["sources","operational_coverage","position_coverage","configured_regions","weather_stations","web_search_fallback","feature_substitutions"],"properties":{"sources":{"type":"array","items":{"type":"object","additionalProperties":true}},"operational_coverage":{"type":"integer","minimum":0},"position_coverage":{"type":"integer","minimum":0},"configured_regions":{"type":"array","items":{"type":"object","additionalProperties":true}},"weather_stations":{"type":"array","items":{"type":"string"}},"web_search_fallback":{"type":"object","required":["configured","provider"],"properties":{"configured":{"type":"boolean"},"provider":{"type":["string","null"]}}},"feature_substitutions":{"type":"array","description":"Active open-source replacements and explicit capability gaps for providers not used directly.","items":{"type":"object","additionalProperties":true}}}},"WeatherResponse":{"type":"object","required":["availability","observations","missing_products"],"properties":{"availability":{"type":"string","enum":["available","partial","stale"]},"observations":{"type":"array","items":{"type":"object","description":"Provider payload and provenance; the METAR/TAF payload fields depend on the source product.","additionalProperties":true}},"missing_products":{"type":"array","items":{"type":"string","enum":["metar","taf"]}}}},"AviationHttpError":{"type":"object","properties":{"detail":{"description":"FastAPI validation or HTTP error detail."},"error":{"type":"string","description":"Sanitized service error code."}},"additionalProperties":true}},"securitySchemes":{"ApiKey":{"type":"apiKey","in":"header","name":"X-API-Key"}}}}