{"openapi":"3.1.0","info":{"title":"PocketWorld Public API","description":"Public live Earth data for flights, ships, satellites, weather, hazards, TV and radio.","version":"1.0.0"},"paths":{"/api/sources/status":{"get":{"summary":"Get Provider Sources Status","description":"Return configured source registry and cached runtime health without live upstream calls.","operationId":"get_provider_sources_status_api_sources_status_get","parameters":[{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sources/registry":{"get":{"summary":"Get Public Source Registry","description":"Return the versioned nine-mode source, license, freshness and limits contract.","operationId":"get_public_source_registry_api_sources_registry_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/sources/catalog":{"get":{"summary":"Get Open Source Catalog","description":"Return audited integration candidates without credential environment names.","operationId":"get_open_source_catalog_api_sources_catalog_get","parameters":[{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sources/snapshots/{source_id}":{"get":{"summary":"Get External Source Snapshot","description":"Return one retained optional-provider snapshot without live upstream I/O.","operationId":"get_external_source_snapshot_api_sources_snapshots__source_id__get","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","title":"Source Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/health-report":{"get":{"summary":"Trigger Health Report","description":"Trigger the expensive upstream report only with an operator token.","operationId":"trigger_health_report_api_health_report_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/_debug/memstats":{"get":{"summary":" Debug Memstats","operationId":"_debug_memstats_api__debug_memstats_get","parameters":[{"name":"deep","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Deep"}},{"name":"trim","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Trim"}},{"name":"refs","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Refs"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/static/hls.min.js.map":{"get":{"summary":"Hls Sourcemap Stub","operationId":"hls_sourcemap_stub_static_hls_min_js_map_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/imagery/gibs-tile/{layer}/{matrix}/{z}/{y}/{x}.{ext}":{"get":{"summary":"Imagery Gibs Tile","description":"Proxy fixed NASA GIBS layers and normalize expected no-data 404 tiles.","operationId":"imagery_gibs_tile_api_imagery_gibs_tile__layer___matrix___z___y___x___ext__get","parameters":[{"name":"layer","in":"path","required":true,"schema":{"type":"string","title":"Layer"}},{"name":"matrix","in":"path","required":true,"schema":{"type":"string","title":"Matrix"}},{"name":"z","in":"path","required":true,"schema":{"type":"integer","title":"Z"}},{"name":"y","in":"path","required":true,"schema":{"type":"integer","title":"Y"}},{"name":"x","in":"path","required":true,"schema":{"type":"integer","title":"X"}},{"name":"ext","in":"path","required":true,"schema":{"type":"string","title":"Ext"}},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/imagery/sources":{"get":{"summary":"Imagery Sources","description":"Return legal imagery sources enabled by server configuration.","operationId":"imagery_sources_api_imagery_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/imagery/configured-tile/{source_id}/{z}/{x}/{y}":{"get":{"summary":"Imagery Configured Tile","description":"Proxy licensed tiles without disclosing provider credentials to browsers.","operationId":"imagery_configured_tile_api_imagery_configured_tile__source_id___z___x___y__get","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","title":"Source Id"}},{"name":"z","in":"path","required":true,"schema":{"type":"integer","title":"Z"}},{"name":"x","in":"path","required":true,"schema":{"type":"integer","title":"X"}},{"name":"y","in":"path","required":true,"schema":{"type":"integer","title":"Y"}},{"name":"date","in":"query","required":false,"schema":{"type":"string","default":"","title":"Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/imagery/oam/search":{"get":{"summary":"Imagery Oam Search","description":"Search OpenAerialMap metadata for legal local high-resolution imagery.","operationId":"imagery_oam_search_api_imagery_oam_search_get","parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","title":"Bbox"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":6,"title":"Limit"}},{"name":"zoom","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Zoom"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/imagery/metadata":{"get":{"summary":"Imagery Metadata","description":"Return lightweight imagery metadata where exact per-tile dates are not available.","operationId":"imagery_metadata_api_imagery_metadata_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","title":"Lng"}},{"name":"source","in":"query","required":false,"schema":{"type":"string","default":"ESRI_WORLD_IMAGERY","title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/imagery/google-session":{"post":{"summary":"Imagery Google Session","description":"Create a Google Map Tiles API session for configured official satellite tiles.","operationId":"imagery_google_session_api_imagery_google_session_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/geography-atlas":{"post":{"summary":"Geography Atlas Country","description":"Return country-scoped geography data so the browser does not load/build the world atlas.","operationId":"geography_atlas_country_api_geography_atlas_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/geography-regions":{"post":{"summary":"Geography Regions Country","description":"Return only admin-1 political regions for the selected country.","operationId":"geography_regions_country_api_geography_regions_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/geography-region-cities":{"post":{"summary":"Geography Region Cities","description":"Return top populated places inside one admin-1 region.","operationId":"geography_region_cities_api_geography_region_cities_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"summary":"Index","description":"Главная страница с глобусом.","operationId":"index__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"head":{"summary":"Index Head","description":"Health checks and link preview probes use HEAD before GET.","operationId":"index_head__head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/version":{"get":{"summary":"Api Version","description":"Expose the release and QA contract identity for deploy verification.","operationId":"api_version_api_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/publisher-readiness":{"get":{"summary":"Api Publisher Readiness","description":"Expose bounded non-secret publisher gate state for release operators.","operationId":"api_publisher_readiness_api_publisher_readiness_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/live":{"get":{"summary":"Api Live","description":"O(1) process/event-loop liveness probe without data-provider work.","operationId":"api_live_api_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/ready":{"get":{"summary":"Api Ready","description":"O(1) web lifecycle readiness; retained-data readiness stays in /api/health.","operationId":"api_ready_api_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/mobile-qa/report":{"post":{"summary":"Receive Mobile Qa Report","description":"Store a short-lived physical-device QA report from local/private dev URLs.","operationId":"receive_mobile_qa_report_api_mobile_qa_report_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/mobile-qa/latest":{"get":{"summary":"Get Latest Mobile Qa Report","description":"Return the latest local/private physical-device QA report.","operationId":"get_latest_mobile_qa_report_api_mobile_qa_latest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/test":{"get":{"summary":"Test Page","description":"Тестовая страница.","operationId":"test_page_test_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/flights":{"get":{"summary":"Seo Flights","description":"Canonical flight-tracking hub with a live server-rendered summary.","operationId":"seo_flights_flights_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ships":{"get":{"summary":"Seo Ships","description":"Canonical vessel-tracking hub with transparent AIS context.","operationId":"seo_ships_ships_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/space":{"get":{"summary":"Seo Space","description":"Canonical satellite and space-tracking hub.","operationId":"seo_space_space_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/weather":{"get":{"summary":"Seo Weather","description":"Canonical weather hub with model and warning limitations.","operationId":"seo_weather_weather_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/spaceports":{"get":{"summary":"Seo Spaceports","description":"SEO страница для космодромов.","operationId":"seo_spaceports_spaceports_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/observatories":{"get":{"summary":"Seo Observatories","description":"SEO страница для обсерваторий.","operationId":"seo_observatories_observatories_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/disasters":{"get":{"summary":"Seo Disasters","description":"SEO страница для катастроф.","operationId":"seo_disasters_disasters_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/spaceport/{spaceport_id}":{"get":{"summary":"Seo Spaceport Page","description":"SEO страница отдельного космодрома.","operationId":"seo_spaceport_page_spaceport__spaceport_id__get","parameters":[{"name":"spaceport_id","in":"path","required":true,"schema":{"type":"string","title":"Spaceport Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/observatory/{observatory_id}":{"get":{"summary":"Seo Observatory Page","description":"SEO страница отдельной обсерватории.","operationId":"seo_observatory_page_observatory__observatory_id__get","parameters":[{"name":"observatory_id","in":"path","required":true,"schema":{"type":"string","title":"Observatory Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/airport/{code}":{"get":{"summary":"Seo Airport","description":"SEO страница для аэропорта.","operationId":"seo_airport_airport__code__get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/radio":{"get":{"summary":"Seo Radio","description":"Canonical browser-radio directory hub.","operationId":"seo_radio_radio_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/radio/language/{language_slug}":{"get":{"summary":"Seo Media Radio Language","operationId":"seo_media_radio_language_radio_language__language_slug__get","parameters":[{"name":"language_slug","in":"path","required":true,"schema":{"type":"string","title":"Language Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/radio/{country_slug}/{genre_slug}":{"get":{"summary":"Seo Media Radio Genre","operationId":"seo_media_radio_genre_radio__country_slug___genre_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}},{"name":"genre_slug","in":"path","required":true,"schema":{"type":"string","title":"Genre Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/radio/{country}":{"get":{"summary":"Seo Radio Country","operationId":"seo_radio_country_radio__country__get","parameters":[{"name":"country","in":"path","required":true,"schema":{"type":"string","title":"Country"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tv":{"get":{"summary":"Seo Tv","description":"Canonical browser-TV directory hub.","operationId":"seo_tv_tv_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/tv/{country_slug}/{category_slug}":{"get":{"summary":"Seo Media Tv Category","operationId":"seo_media_tv_category_tv__country_slug___category_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}},{"name":"category_slug","in":"path","required":true,"schema":{"type":"string","title":"Category Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tv/{country}":{"get":{"summary":"Seo Tv Country","operationId":"seo_tv_country_tv__country__get","parameters":[{"name":"country","in":"path","required":true,"schema":{"type":"string","title":"Country"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/satellite-imagery/{country_slug}":{"get":{"summary":"Seo Media Satellite Country","operationId":"seo_media_satellite_country_satellite_imagery__country_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/satellite-view/{region_slug}":{"get":{"summary":"Seo Media Satellite Region","operationId":"seo_media_satellite_region_satellite_view__region_slug__get","parameters":[{"name":"region_slug","in":"path","required":true,"schema":{"type":"string","title":"Region Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/es/vista-satelital/{region_slug}":{"get":{"summary":"Seo Media Es Satellite Region","operationId":"seo_media_es_satellite_region_es_vista_satelital__region_slug__get","parameters":[{"name":"region_slug","in":"path","required":true,"schema":{"type":"string","title":"Region Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pt/vista-de-satelite/{region_slug}":{"get":{"summary":"Seo Media Pt Satellite Region","operationId":"seo_media_pt_satellite_region_pt_vista_de_satelite__region_slug__get","parameters":[{"name":"region_slug","in":"path","required":true,"schema":{"type":"string","title":"Region Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fr/vue-satellite/{region_slug}":{"get":{"summary":"Seo Media Fr Satellite Region","operationId":"seo_media_fr_satellite_region_fr_vue_satellite__region_slug__get","parameters":[{"name":"region_slug","in":"path","required":true,"schema":{"type":"string","title":"Region Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/de/satellitenansicht/{region_slug}":{"get":{"summary":"Seo Media De Satellite Region","operationId":"seo_media_de_satellite_region_de_satellitenansicht__region_slug__get","parameters":[{"name":"region_slug","in":"path","required":true,"schema":{"type":"string","title":"Region Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ru/sputnikovaya-karta/{region_slug}":{"get":{"summary":"Seo Media Ru Satellite Region","operationId":"seo_media_ru_satellite_region_ru_sputnikovaya_karta__region_slug__get","parameters":[{"name":"region_slug","in":"path","required":true,"schema":{"type":"string","title":"Region Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/es/tv/{country_slug}":{"get":{"summary":"Seo Media Es Tv Country","operationId":"seo_media_es_tv_country_es_tv__country_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pt/tv/{country_slug}":{"get":{"summary":"Seo Media Pt Tv Country","operationId":"seo_media_pt_tv_country_pt_tv__country_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fr/tv/{country_slug}":{"get":{"summary":"Seo Media Fr Tv Country","operationId":"seo_media_fr_tv_country_fr_tv__country_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/de/tv/{country_slug}":{"get":{"summary":"Seo Media De Tv Country","operationId":"seo_media_de_tv_country_de_tv__country_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ru/tv/{country_slug}":{"get":{"summary":"Seo Media Ru Tv Country","operationId":"seo_media_ru_tv_country_ru_tv__country_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/es/tv/{country_slug}/{category_slug}":{"get":{"summary":"Seo Media Es Tv Category","operationId":"seo_media_es_tv_category_es_tv__country_slug___category_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}},{"name":"category_slug","in":"path","required":true,"schema":{"type":"string","title":"Category Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pt/tv/{country_slug}/{category_slug}":{"get":{"summary":"Seo Media Pt Tv Category","operationId":"seo_media_pt_tv_category_pt_tv__country_slug___category_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}},{"name":"category_slug","in":"path","required":true,"schema":{"type":"string","title":"Category Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fr/tv/{country_slug}/{category_slug}":{"get":{"summary":"Seo Media Fr Tv Category","operationId":"seo_media_fr_tv_category_fr_tv__country_slug___category_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}},{"name":"category_slug","in":"path","required":true,"schema":{"type":"string","title":"Category Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/de/tv/{country_slug}/{category_slug}":{"get":{"summary":"Seo Media De Tv Category","operationId":"seo_media_de_tv_category_de_tv__country_slug___category_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}},{"name":"category_slug","in":"path","required":true,"schema":{"type":"string","title":"Category Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ru/tv/{country_slug}/{category_slug}":{"get":{"summary":"Seo Media Ru Tv Category","operationId":"seo_media_ru_tv_category_ru_tv__country_slug___category_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}},{"name":"category_slug","in":"path","required":true,"schema":{"type":"string","title":"Category Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/es/radio/{country_slug}":{"get":{"summary":"Seo Media Es Radio Country","operationId":"seo_media_es_radio_country_es_radio__country_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pt/radio/{country_slug}":{"get":{"summary":"Seo Media Pt Radio Country","operationId":"seo_media_pt_radio_country_pt_radio__country_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fr/radio/{country_slug}":{"get":{"summary":"Seo Media Fr Radio Country","operationId":"seo_media_fr_radio_country_fr_radio__country_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/de/radio/{country_slug}":{"get":{"summary":"Seo Media De Radio Country","operationId":"seo_media_de_radio_country_de_radio__country_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ru/radio/{country_slug}":{"get":{"summary":"Seo Media Ru Radio Country","operationId":"seo_media_ru_radio_country_ru_radio__country_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/es/radio/idioma/{language_slug}":{"get":{"summary":"Seo Media Es Radio Language","operationId":"seo_media_es_radio_language_es_radio_idioma__language_slug__get","parameters":[{"name":"language_slug","in":"path","required":true,"schema":{"type":"string","title":"Language Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pt/radio/idioma/{language_slug}":{"get":{"summary":"Seo Media Pt Radio Language","operationId":"seo_media_pt_radio_language_pt_radio_idioma__language_slug__get","parameters":[{"name":"language_slug","in":"path","required":true,"schema":{"type":"string","title":"Language Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fr/radio/langue/{language_slug}":{"get":{"summary":"Seo Media Fr Radio Language","operationId":"seo_media_fr_radio_language_fr_radio_langue__language_slug__get","parameters":[{"name":"language_slug","in":"path","required":true,"schema":{"type":"string","title":"Language Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/de/radio/sprache/{language_slug}":{"get":{"summary":"Seo Media De Radio Language","operationId":"seo_media_de_radio_language_de_radio_sprache__language_slug__get","parameters":[{"name":"language_slug","in":"path","required":true,"schema":{"type":"string","title":"Language Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ru/radio/yazyk/{language_slug}":{"get":{"summary":"Seo Media Ru Radio Language","operationId":"seo_media_ru_radio_language_ru_radio_yazyk__language_slug__get","parameters":[{"name":"language_slug","in":"path","required":true,"schema":{"type":"string","title":"Language Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/es/radio/{country_slug}/{genre_slug}":{"get":{"summary":"Seo Media Es Radio Genre","operationId":"seo_media_es_radio_genre_es_radio__country_slug___genre_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}},{"name":"genre_slug","in":"path","required":true,"schema":{"type":"string","title":"Genre Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pt/radio/{country_slug}/{genre_slug}":{"get":{"summary":"Seo Media Pt Radio Genre","operationId":"seo_media_pt_radio_genre_pt_radio__country_slug___genre_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}},{"name":"genre_slug","in":"path","required":true,"schema":{"type":"string","title":"Genre Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fr/radio/{country_slug}/{genre_slug}":{"get":{"summary":"Seo Media Fr Radio Genre","operationId":"seo_media_fr_radio_genre_fr_radio__country_slug___genre_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}},{"name":"genre_slug","in":"path","required":true,"schema":{"type":"string","title":"Genre Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/de/radio/{country_slug}/{genre_slug}":{"get":{"summary":"Seo Media De Radio Genre","operationId":"seo_media_de_radio_genre_de_radio__country_slug___genre_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}},{"name":"genre_slug","in":"path","required":true,"schema":{"type":"string","title":"Genre Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ru/radio/{country_slug}/{genre_slug}":{"get":{"summary":"Seo Media Ru Radio Genre","operationId":"seo_media_ru_radio_genre_ru_radio__country_slug___genre_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}},{"name":"genre_slug","in":"path","required":true,"schema":{"type":"string","title":"Genre Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/es/imagenes-satelitales/{country_slug}":{"get":{"summary":"Seo Media Es Satellite Country","operationId":"seo_media_es_satellite_country_es_imagenes_satelitales__country_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pt/imagens-de-satelite/{country_slug}":{"get":{"summary":"Seo Media Pt Satellite Country","operationId":"seo_media_pt_satellite_country_pt_imagens_de_satelite__country_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fr/images-satellite/{country_slug}":{"get":{"summary":"Seo Media Fr Satellite Country","operationId":"seo_media_fr_satellite_country_fr_images_satellite__country_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/de/satellitenbilder/{country_slug}":{"get":{"summary":"Seo Media De Satellite Country","operationId":"seo_media_de_satellite_country_de_satellitenbilder__country_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ru/sputnikovye-snimki/{country_slug}":{"get":{"summary":"Seo Media Ru Satellite Country","operationId":"seo_media_ru_satellite_country_ru_sputnikovye_snimki__country_slug__get","parameters":[{"name":"country_slug","in":"path","required":true,"schema":{"type":"string","title":"Country Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/satellites":{"get":{"summary":"Seo Satellites","description":"SEO страница - каталог спутников.","operationId":"seo_satellites_satellites_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/iss-tracker":{"get":{"summary":"Seo Iss Tracker","description":"SEO страница - ISS Tracker.","operationId":"seo_iss_tracker_iss_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/starlink-tracker":{"get":{"summary":"Seo Starlink Tracker","description":"SEO страница - Starlink Tracker.","operationId":"seo_starlink_tracker_starlink_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/earthquakes":{"get":{"summary":"Seo Earthquakes","description":"SEO страница - землетрясения.","operationId":"seo_earthquakes_earthquakes_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/flight-radar":{"get":{"summary":"Seo Flight Radar","description":"SEO page for 'flight radar' keyword.","operationId":"seo_flight_radar_flight_radar_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/plane-finder":{"get":{"summary":"Seo Plane Finder","description":"SEO page for 'plane finder' keyword.","operationId":"seo_plane_finder_plane_finder_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ship-tracker":{"get":{"summary":"Seo Ship Tracker","description":"SEO page for 'ship tracker' keyword.","operationId":"seo_ship_tracker_ship_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/live-flight-tracker":{"get":{"summary":"Seo Live Flight Tracker","description":"SEO page for 'live flight tracker' keyword.","operationId":"seo_live_flight_tracker_live_flight_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/track-my-flight":{"get":{"summary":"Seo Track My Flight","description":"SEO page for 'track my flight' keyword.","operationId":"seo_track_my_flight_track_my_flight_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/marine-traffic":{"get":{"summary":"Seo Marine Traffic","description":"SEO page for 'marine traffic' keyword.","operationId":"seo_marine_traffic_marine_traffic_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/vessel-finder":{"get":{"summary":"Seo Vessel Finder","description":"SEO page for 'vessel finder' keyword.","operationId":"seo_vessel_finder_vessel_finder_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/cruise-ship-tracker":{"get":{"summary":"Seo Cruise Ship Tracker","description":"SEO page for 'cruise ship tracker' keyword.","operationId":"seo_cruise_ship_tracker_cruise_ship_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/cargo-ship-tracker":{"get":{"summary":"Seo Cargo Ship Tracker","description":"SEO page for 'cargo ship tracker' keyword.","operationId":"seo_cargo_ship_tracker_cargo_ship_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/satellite-map":{"get":{"summary":"Seo Satellite Map","description":"SEO page for 'satellite map' / 'live satellite' keyword.","operationId":"seo_satellite_map_satellite_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/hurricane-tracker":{"get":{"summary":"Seo Hurricane Tracker","description":"SEO page for 'hurricane tracker' / 'storm tracker' keyword.","operationId":"seo_hurricane_tracker_hurricane_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/volcano-map":{"get":{"summary":"Seo Volcano Map","description":"SEO page for 'volcano map' / 'active volcanoes' keyword.","operationId":"seo_volcano_map_volcano_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/earthquake-map":{"get":{"summary":"Seo Earthquake Map","description":"SEO page for 'earthquake map' / 'live earthquakes' keyword.","operationId":"seo_earthquake_map_earthquake_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/world-weather-map":{"get":{"summary":"Seo World Weather Map","description":"SEO page for 'world weather map' keyword.","operationId":"seo_world_weather_map_world_weather_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/flight-status":{"get":{"summary":"Seo Flight Status","description":"SEO page for 'flight status' keyword.","operationId":"seo_flight_status_flight_status_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/global-flight-map":{"get":{"summary":"Seo Global Flight Map","description":"SEO page for 'global flight map' / 'world flight map' keyword.","operationId":"seo_global_flight_map_global_flight_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ru/{slug}":{"get":{"summary":"Seo Ru Page","description":"Data-driven Russian SEO pages.","operationId":"seo_ru_page_ru__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/country/{country_code}":{"get":{"summary":"Seo Country Page","description":"SEO page for country profile.","operationId":"seo_country_page_country__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/passport/{country_code}":{"get":{"summary":"Seo Passport Page","description":"SEO page for passport visa requirements.","operationId":"seo_passport_page_passport__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/passports":{"get":{"summary":"Seo Passports Hub","description":"Hub page listing all passports with their power ranking.","operationId":"seo_passports_hub_passports_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/countries":{"get":{"summary":"Seo Countries Hub","description":"Hub page listing all countries by continent.","operationId":"seo_countries_hub_countries_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/airports":{"get":{"summary":"Seo Airports Hub","description":"Hub page listing all airports by region.","operationId":"seo_airports_hub_airports_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/airlines":{"get":{"summary":"Seo Airlines Hub","description":"Hub page listing all airlines.","operationId":"seo_airlines_hub_airlines_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/compare/{slug}":{"get":{"summary":"Seo Compare Page","description":"SEO page comparing two countries.","operationId":"seo_compare_page_compare__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/city/{city_slug}":{"get":{"summary":"Seo City Page","description":"SEO page for city profile.","operationId":"seo_city_page_city__city_slug__get","parameters":[{"name":"city_slug","in":"path","required":true,"schema":{"type":"string","title":"City Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/weather-satellites-tracker":{"get":{"summary":"Seo Weather Satellites Tracker Route","operationId":"seo_weather_satellites_tracker_route_weather_satellites_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/flights-from-{city_slug}":{"get":{"summary":"Seo Flights From City","description":"SEO page for flights departing from a city.","operationId":"seo_flights_from_city_flights_from__city_slug__get","parameters":[{"name":"city_slug","in":"path","required":true,"schema":{"type":"string","title":"City Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/flights-to-{city_slug}":{"get":{"summary":"Seo Flights To City","description":"SEO page for flights arriving at a city.","operationId":"seo_flights_to_city_flights_to__city_slug__get","parameters":[{"name":"city_slug","in":"path","required":true,"schema":{"type":"string","title":"City Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/weather-{city_slug}":{"get":{"summary":"Seo City Weather","description":"SEO page for city weather.","operationId":"seo_city_weather_weather__city_slug__get","parameters":[{"name":"city_slug","in":"path","required":true,"schema":{"type":"string","title":"City Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/volcano/{volcano_slug}":{"get":{"summary":"Seo Volcano Detail","description":"SEO page for individual volcano.","operationId":"seo_volcano_detail_volcano__volcano_slug__get","parameters":[{"name":"volcano_slug","in":"path","required":true,"schema":{"type":"string","title":"Volcano Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/earthquakes/{region_slug}":{"get":{"summary":"Seo Earthquake Region","description":"SEO page for earthquake-prone region.","operationId":"seo_earthquake_region_earthquakes__region_slug__get","parameters":[{"name":"region_slug","in":"path","required":true,"schema":{"type":"string","title":"Region Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/airline/{airline_slug}":{"get":{"summary":"Seo Airline Page","description":"SEO page for individual airline.","operationId":"seo_airline_page_airline__airline_slug__get","parameters":[{"name":"airline_slug","in":"path","required":true,"schema":{"type":"string","title":"Airline Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/flights/{route_slug}":{"get":{"summary":"Seo Route Page","description":"SEO page for specific flight route.","operationId":"seo_route_page_flights__route_slug__get","parameters":[{"name":"route_slug","in":"path","required":true,"schema":{"type":"string","title":"Route Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/airport/{airport_slug}/arrivals":{"get":{"summary":"Seo Airport Arrivals","description":"SEO page for airport arrivals.","operationId":"seo_airport_arrivals_airport__airport_slug__arrivals_get","parameters":[{"name":"airport_slug","in":"path","required":true,"schema":{"type":"string","title":"Airport Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/airport/{airport_slug}/departures":{"get":{"summary":"Seo Airport Departures","description":"SEO page for airport departures.","operationId":"seo_airport_departures_airport__airport_slug__departures_get","parameters":[{"name":"airport_slug","in":"path","required":true,"schema":{"type":"string","title":"Airport Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/iss-passes/{city_slug}":{"get":{"summary":"Seo Iss City","description":"SEO page for ISS passes over a city.","operationId":"seo_iss_city_iss_passes__city_slug__get","parameters":[{"name":"city_slug","in":"path","required":true,"schema":{"type":"string","title":"City Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/starlink-visible/{city_slug}":{"get":{"summary":"Seo Starlink City","description":"SEO page for Starlink visibility over a city.","operationId":"seo_starlink_city_starlink_visible__city_slug__get","parameters":[{"name":"city_slug","in":"path","required":true,"schema":{"type":"string","title":"City Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hurricane/{hurricane_slug}":{"get":{"summary":"Seo Hurricane Page","description":"SEO page for specific hurricane.","operationId":"seo_hurricane_page_hurricane__hurricane_slug__get","parameters":[{"name":"hurricane_slug","in":"path","required":true,"schema":{"type":"string","title":"Hurricane Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/live/{region_slug}":{"get":{"summary":"Seo Live Region","description":"SEO page for live regional tracking.","operationId":"seo_live_region_live__region_slug__get","parameters":[{"name":"region_slug","in":"path","required":true,"schema":{"type":"string","title":"Region Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/aircraft/{aircraft_slug}":{"get":{"summary":"Seo Aircraft Type","description":"SEO page for aircraft type.","operationId":"seo_aircraft_type_aircraft__aircraft_slug__get","parameters":[{"name":"aircraft_slug","in":"path","required":true,"schema":{"type":"string","title":"Aircraft Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/port/{port_slug}":{"get":{"summary":"Seo Port Page","description":"SEO page for individual port.","operationId":"seo_port_page_port__port_slug__get","parameters":[{"name":"port_slug","in":"path","required":true,"schema":{"type":"string","title":"Port Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tanker-tracker":{"get":{"summary":"Seo Tanker Tracker","operationId":"seo_tanker_tracker_tanker_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/yacht-tracker":{"get":{"summary":"Seo Yacht Tracker","operationId":"seo_yacht_tracker_yacht_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/fishing-vessel-tracker":{"get":{"summary":"Seo Fishing Vessel Tracker","operationId":"seo_fishing_vessel_tracker_fishing_vessel_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ferry-tracker":{"get":{"summary":"Seo Ferry Tracker","operationId":"seo_ferry_tracker_ferry_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/piracy-map":{"get":{"summary":"Seo Piracy Map","operationId":"seo_piracy_map_piracy_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ocean-currents-map":{"get":{"summary":"Seo Ocean Currents Map","operationId":"seo_ocean_currents_map_ocean_currents_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/sea-temperature-map":{"get":{"summary":"Seo Sea Temperature Map","operationId":"seo_sea_temperature_map_sea_temperature_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/dark-vessels-tracker":{"get":{"summary":"Seo Dark Vessels Tracker","operationId":"seo_dark_vessels_tracker_dark_vessels_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ship-sanctions-tracker":{"get":{"summary":"Seo Ship Sanctions Tracker","operationId":"seo_ship_sanctions_tracker_ship_sanctions_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ports-map":{"get":{"summary":"Seo Ports Map","operationId":"seo_ports_map_ports_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/military-aircraft-tracker":{"get":{"summary":"Seo Military Aircraft Tracker","operationId":"seo_military_aircraft_tracker_military_aircraft_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/private-jet-tracker":{"get":{"summary":"Seo Private Jet Tracker","operationId":"seo_private_jet_tracker_private_jet_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/helicopter-tracker":{"get":{"summary":"Seo Helicopter Tracker","operationId":"seo_helicopter_tracker_helicopter_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/flight-delays":{"get":{"summary":"Seo Flight Delays","operationId":"seo_flight_delays_flight_delays_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/hubble-tracker":{"get":{"summary":"Seo Hubble Tracker","operationId":"seo_hubble_tracker_hubble_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/tiangong-tracker":{"get":{"summary":"Seo Tiangong Tracker","operationId":"seo_tiangong_tracker_tiangong_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/space-debris-tracker":{"get":{"summary":"Seo Space Debris Tracker","operationId":"seo_space_debris_tracker_space_debris_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/gps-satellites-tracker":{"get":{"summary":"Seo Gps Satellites Tracker","operationId":"seo_gps_satellites_tracker_gps_satellites_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/nuclear-power-plants-map":{"get":{"summary":"Seo Nuclear Power Plants Map","operationId":"seo_nuclear_power_plants_map_nuclear_power_plants_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/submarine-cables-map":{"get":{"summary":"Seo Submarine Cables Map","operationId":"seo_submarine_cables_map_submarine_cables_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/data-centers-map":{"get":{"summary":"Seo Data Centers Map","operationId":"seo_data_centers_map_data_centers_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/metro-systems-map":{"get":{"summary":"Seo Metro Systems Map","operationId":"seo_metro_systems_map_metro_systems_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/lng-terminals-map":{"get":{"summary":"Seo Lng Terminals Map","operationId":"seo_lng_terminals_map_lng_terminals_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/refineries-map":{"get":{"summary":"Seo Refineries Map","operationId":"seo_refineries_map_refineries_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/epidemic-tracker":{"get":{"summary":"Seo Epidemic Tracker","operationId":"seo_epidemic_tracker_epidemic_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/flood-map":{"get":{"summary":"Seo Flood Map","description":"Alias for flood tracker.","operationId":"seo_flood_map_flood_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/space-weather-tracker":{"get":{"summary":"Seo Space Weather Tracker","description":"Alias for solar flare tracker.","operationId":"seo_space_weather_tracker_space_weather_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/tsunami-tracker":{"get":{"summary":"Seo Tsunami Tracker","description":"SEO page for 'tsunami tracker' keyword.","operationId":"seo_tsunami_tracker_tsunami_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/wildfire-map":{"get":{"summary":"Seo Wildfire Map","description":"SEO page for 'wildfire map' keyword - high volume search.","operationId":"seo_wildfire_map_wildfire_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/flood-tracker":{"get":{"summary":"Seo Flood Tracker","description":"SEO page for 'flood tracker' / 'flood map' keyword.","operationId":"seo_flood_tracker_flood_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/drought-monitor":{"get":{"summary":"Seo Drought Monitor","description":"SEO page for 'drought monitor' / 'drought map' keyword.","operationId":"seo_drought_monitor_drought_monitor_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/asteroid-tracker":{"get":{"summary":"Seo Asteroid Tracker","description":"SEO page for 'asteroid tracker' / 'near earth objects' keyword.","operationId":"seo_asteroid_tracker_asteroid_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/solar-flare-tracker":{"get":{"summary":"Seo Solar Flare Tracker","description":"SEO page for 'solar flare' / 'space weather' keyword.","operationId":"seo_solar_flare_tracker_solar_flare_tracker_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/air-quality-map":{"get":{"summary":"Seo Air Quality Map","description":"SEO page for 'air quality' / 'AQI map' keyword - high volume.","operationId":"seo_air_quality_map_air_quality_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/live-earthquakes":{"get":{"summary":"Seo Live Earthquakes","description":"SEO page for 'live earthquakes' / 'earthquakes today' keywords.","operationId":"seo_live_earthquakes_live_earthquakes_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/live-flights":{"get":{"summary":"Seo Live Flights","description":"SEO page for 'live flights' / 'flights now' keywords.","operationId":"seo_live_flights_live_flights_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/live-ships":{"get":{"summary":"Seo Live Ships","description":"SEO page for 'live ships' / 'ships now' keywords.","operationId":"seo_live_ships_live_ships_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/live-earth":{"get":{"summary":"Seo Live Earth Hub","description":"Top-level hub for curious explorers entering the live globe.","operationId":"seo_live_earth_hub_live_earth_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/disasters-today":{"get":{"summary":"Seo Disasters Today Hub","operationId":"seo_disasters_today_hub_disasters_today_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/world-tv-radio":{"get":{"summary":"Seo World Tv Radio Hub","operationId":"seo_world_tv_radio_hub_world_tv_radio_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/open-data":{"get":{"summary":"Seo Open Data Hub","operationId":"seo_open_data_hub_open_data_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/widgets":{"get":{"summary":"Seo Widgets Hub","operationId":"seo_widgets_hub_widgets_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/storms-today":{"get":{"summary":"Seo Storms Today","description":"SEO page for 'storms today' / 'hurricanes now' keywords.","operationId":"seo_storms_today_storms_today_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/volcanoes-today":{"get":{"summary":"Seo Volcanoes Today","description":"SEO page for 'volcanoes today' / 'erupting volcanoes' keywords.","operationId":"seo_volcanoes_today_volcanoes_today_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/tr/{slug}":{"get":{"summary":"Seo Lang Page","description":"Data-driven multilingual SEO pages.","operationId":"seo_lang_page_tr__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ko/{slug}":{"get":{"summary":"Seo Lang Page","description":"Data-driven multilingual SEO pages.","operationId":"seo_lang_page_ko__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ar/{slug}":{"get":{"summary":"Seo Lang Page","description":"Data-driven multilingual SEO pages.","operationId":"seo_lang_page_ar__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/zh/{slug}":{"get":{"summary":"Seo Lang Page","description":"Data-driven multilingual SEO pages.","operationId":"seo_lang_page_zh__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pt/{slug}":{"get":{"summary":"Seo Lang Page","description":"Data-driven multilingual SEO pages.","operationId":"seo_lang_page_pt__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ja/{slug}":{"get":{"summary":"Seo Lang Page","description":"Data-driven multilingual SEO pages.","operationId":"seo_lang_page_ja__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fr/{slug}":{"get":{"summary":"Seo Lang Page","description":"Data-driven multilingual SEO pages.","operationId":"seo_lang_page_fr__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/es/{slug}":{"get":{"summary":"Seo Lang Page","description":"Data-driven multilingual SEO pages.","operationId":"seo_lang_page_es__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/de/{slug}":{"get":{"summary":"Seo Lang Page","description":"Data-driven multilingual SEO pages.","operationId":"seo_lang_page_de__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sources":{"get":{"summary":"Sources Page","description":"Render the complete localized source and limitations registry.","operationId":"sources_page_sources_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/about":{"get":{"summary":"About Page","description":"Describe the product, its editorial purpose and its operating model.","operationId":"about_page_about_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/changelog":{"get":{"summary":"Changelog Page","description":"Human-readable release notes linked from the application shell.","operationId":"changelog_page_changelog_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/methodology":{"get":{"summary":"Methodology Page","description":"Explain PocketWorld's original processing, sources and limitations.","operationId":"methodology_page_methodology_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/privacy":{"get":{"summary":"Privacy Page","description":"Privacy Policy page for AdSense compliance.","operationId":"privacy_page_privacy_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/terms":{"get":{"summary":"Terms Page","description":"Terms of Service page for AdSense compliance.","operationId":"terms_page_terms_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/contact":{"get":{"summary":"Contact Page","description":"Contact and correction channels.","operationId":"contact_page_contact_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/og-image/{kind}/{key}.png":{"get":{"summary":"Og Image","description":"Сгенерировать (или отдать из кэша) уникальную OG-картинку для SEO-страницы.","operationId":"og_image_og_image__kind___key__png_get","parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string","title":"Kind"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/":{"get":{"summary":"Api Docs Page","description":"Public API documentation — human-readable + AI-friendly.","operationId":"api_docs_page_api__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api":{"get":{"summary":"Api Docs Page","description":"Public API documentation — human-readable + AI-friendly.","operationId":"api_docs_page_api_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/robots.txt":{"get":{"summary":"Robots Txt","description":"robots.txt для поисковых систем.","operationId":"robots_txt_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/llms.txt":{"get":{"summary":"Llms Txt","description":"llms.txt — короткая карта сайта для AI-ассистентов.\n\nСтандарт: https://llmstxt.org/\nЦель: помочь LLM понять структуру сайта и чаще цитировать его в ответах.","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ads.txt":{"get":{"summary":"Ads Txt","description":"ads.txt для Google AdSense.","operationId":"ads_txt_ads_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/45f8bda3611d4e72b66f4a473f9bab02.txt":{"get":{"summary":"Indexnow Key File","description":"IndexNow key verification file.","operationId":"indexnow_key_file_45f8bda3611d4e72b66f4a473f9bab02_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sitemap-all.xml":{"get":{"summary":"Sitemap All Xml","description":"Compatibility sitemap containing the same reviewed canonical surface.","operationId":"sitemap_all_xml_sitemap_all_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sitemap.xml":{"get":{"summary":"Sitemap Xml","description":"Sitemap index grouped by search intent and update cadence.","operationId":"sitemap_xml_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sitemap-{bucket}.xml":{"get":{"summary":"Sitemap Bucket Xml","description":"Bucketed sitemap: static/live/media/api.","operationId":"sitemap_bucket_xml_sitemap__bucket__xml_get","parameters":[{"name":"bucket","in":"path","required":true,"schema":{"type":"string","title":"Bucket"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/feed/earthquakes":{"get":{"summary":"Rss Earthquakes","description":"Retire the old synthetic feed until it can publish real source records.","operationId":"rss_earthquakes_feed_earthquakes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/donate-notify":{"post":{"summary":"Donate Notify","description":"Уведомление о действиях в разделе донатов.","operationId":"donate_notify_api_donate_notify_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/feedback":{"post":{"summary":"Feedback Endpoint","description":"Store bounded anonymous feedback and notify the private admin bot.","operationId":"feedback_endpoint_api_feedback_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/track-affiliate":{"post":{"summary":"Track Affiliate","description":"Уведомление о кликах на affiliate ссылки (отели, билеты).","operationId":"track_affiliate_api_track_affiliate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/yandex_9f16c8a1d735be10.html":{"get":{"summary":"Yandex Verification","description":"Файл верификации Яндекс.Вебмастер.","operationId":"yandex_verification_yandex_9f16c8a1d735be10_html_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/countries":{"get":{"summary":"Get Countries","description":"Получить список стран с координатами.","operationId":"get_countries_api_countries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/news/{country_code}":{"get":{"summary":"Get Country News","description":"Получить новости для страны.","operationId":"get_country_news_api_news__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/news":{"get":{"summary":"Get All News","description":"Получить все новости.","operationId":"get_all_news_api_news_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/visa-requirements/{origin}":{"get":{"summary":"Get Visa Requirements","description":"Визовые требования для гражданина страны origin (ISO2).\nВозвращает {dest_iso: {type, days?}}, где type:\n  - \"visa-free\" — без визы (если days задан, число дней)\n  - \"visa-on-arrival\" — виза по прибытии\n  - \"e-visa\" — электронная виза\n  - \"eta\" — eTA (electronic travel authorization)\n  - \"visa-required\" — нужна виза заранее\n  - \"no-admission\" — въезд закрыт","operationId":"get_visa_requirements_api_visa_requirements__origin__get","parameters":[{"name":"origin","in":"path","required":true,"schema":{"type":"string","title":"Origin"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stats":{"get":{"summary":"Get Stats","description":"Статистика по новостям.\n\nCached for 120s and parsed off the event loop: load_news_cache() does a\nsynchronous json.load of a ~1.7MB file, and re-reading it on every request\n(this endpoint is polled on every page load) pegged the loop and starved\nother endpoints.","operationId":"get_stats_api_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/user-geo":{"get":{"summary":"Get User Geo","description":"Определить страну пользователя по IP для таргетинга рекламы.","operationId":"get_user_geo_api_user_geo_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/news-activity":{"get":{"summary":"Get News Activity","description":"Получить активность новостей по странам для heat map.","operationId":"get_news_activity_api_news_activity_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/country-stats":{"get":{"summary":"Get Country Stats","description":"Получить детальную статистику по странам.","operationId":"get_country_stats_api_country_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/country-sources/{country_code}":{"get":{"summary":"Get Country Sources","description":"Получить список RSS источников страны с их статусом.","operationId":"get_country_sources_api_country_sources__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/top-news":{"get":{"summary":"Get Top News","description":"Получить топ мировых новостей с ранжированием по важности.","operationId":"get_top_news_api_top_news_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/refresh-news":{"post":{"summary":"Refresh News","description":"Запустить сборщик новостей в фоне (по кнопке).","operationId":"refresh_news_api_refresh_news_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auto-refresh":{"post":{"summary":"Auto Refresh News","description":"Report freshness; the supervised worker owns automatic collection.","operationId":"auto_refresh_news_api_auto_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/refresh-progress":{"get":{"summary":"Get Refresh Progress","description":"Получить прогресс сбора новостей.","operationId":"get_refresh_progress_api_refresh_progress_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/translate":{"get":{"summary":"Api Translate","description":"Перевести текст через пул API переводов.","operationId":"api_translate_api_translate_get","parameters":[{"name":"text","in":"query","required":true,"schema":{"type":"string","title":"Text"}},{"name":"to_lang","in":"query","required":false,"schema":{"type":"string","default":"ru","title":"To Lang"}},{"name":"from_lang","in":"query","required":false,"schema":{"type":"string","title":"From Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/my-location":{"get":{"summary":"Get My Location","description":"Получить локацию пользователя по IP.","operationId":"get_my_location_api_my_location_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/iss":{"get":{"summary":"Get Iss Position","description":"Прокси для получения позиции МКС.","operationId":"get_iss_position_api_iss_get","parameters":[{"name":"soft","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Soft"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search-news":{"get":{"summary":"Search News","description":"Поиск новостей через Google News RSS.","operationId":"search_news_api_search_news_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Limit"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"}},{"name":"soft","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Soft"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/disaster-news":{"get":{"summary":"Get Disaster News","description":"Получить новости о катастрофе из ReliefWeb API + Google News RSS.","operationId":"get_disaster_news_api_disaster_news_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"earthquake","title":"Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":6,"title":"Limit"}},{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/deep-space/{object_id}":{"get":{"summary":"Get Deep Space Position","description":"Получить позицию объекта глубокого космоса (JWST, Euclid и т.д.).","operationId":"get_deep_space_position_api_deep_space__object_id__get","parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"string","title":"Object Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/planets":{"get":{"summary":"Get Planets","description":"Get positions and data for all solar system planets.","operationId":"get_planets_api_planets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/tle/{satellite_id}":{"get":{"summary":"Get Satellite Tle","description":"Получить TLE данные для спутника.","operationId":"get_satellite_tle_api_tle__satellite_id__get","parameters":[{"name":"satellite_id","in":"path","required":true,"schema":{"type":"string","title":"Satellite Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tle-all":{"get":{"summary":"Get All Tle","description":"Получить TLE данные для всех отслеживаемых спутников (параллельно).","operationId":"get_all_tle_api_tle_all_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/tle-catalog":{"get":{"summary":"Get Tle Catalog","description":"Pre-serialized HTTP wrapper around _compute_tle_catalog (see note above).","operationId":"get_tle_catalog_api_tle_catalog_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}},{"name":"wire","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Wire"}},{"name":"stream","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Stream"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tle-catalog/{norad_id}":{"get":{"summary":"Get Tle Catalog Object","description":"Return one normalized object from the full CelesTrak-backed catalog.","operationId":"get_tle_catalog_object_api_tle_catalog__norad_id__get","parameters":[{"name":"norad_id","in":"path","required":true,"schema":{"type":"integer","title":"Norad Id"}},{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/iss-passes/{city_slug}":{"get":{"summary":"Api Iss Passes","description":"Return upcoming ISS visual pass predictions for a city.","operationId":"api_iss_passes_api_iss_passes__city_slug__get","parameters":[{"name":"city_slug","in":"path","required":true,"schema":{"type":"string","title":"City Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/currency/{country_code}":{"get":{"summary":"Get Country Currency","description":"Get currency exchange rates for a country.","operationId":"get_country_currency_api_currency__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/currency/converter":{"get":{"summary":"Get Converter Rates","description":"Get exchange rates for currency converter (USD based).","operationId":"get_converter_rates_api_currency_converter_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/weather/cities":{"get":{"summary":"Get Weather Cities","description":"Получить погоду для крупных городов мира.","operationId":"get_weather_cities_api_weather_cities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/weather/forecast":{"get":{"summary":"Get Weather Forecast","description":"Bounded same-origin proxy for Open-Meteo current/hourly/daily output.","operationId":"get_weather_forecast_api_weather_forecast_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/weather/{country_code}":{"get":{"summary":"Get Country Weather","description":"Get weather for country's capital city with fallback.","operationId":"get_country_weather_api_weather__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/weather-status":{"get":{"summary":"Get Weather Api Status","description":"Get status of all weather API providers.","operationId":"get_weather_api_status_api_weather_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/translation-stats":{"get":{"summary":"Api Translation Stats","description":"Статистика по API переводов.","operationId":"api_translation_stats_api_translation_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/flights":{"get":{"summary":"Get Live Flights","description":"Pre-serialized HTTP wrapper around _compute_live_flights.\n\nReturns a Response with json.dumps output so FastAPI's jsonable_encoder does\nNOT walk the multi-thousand-row payload in pure Python on the event loop\n(that walk pegged the loop and stalled every endpoint).","operationId":"get_live_flights_api_flights_get","parameters":[{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}},{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Limit"}},{"name":"bbox","in":"query","required":false,"schema":{"type":"string","default":"","title":"Bbox"}},{"name":"mode","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Mode"}},{"name":"route_bbox","in":"query","required":false,"schema":{"type":"string","default":"","title":"Route Bbox"}},{"name":"wire","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Wire"}},{"name":"full","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Full"}},{"name":"chunk","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chunk"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flights/sources":{"get":{"summary":"Get Flight Sources","description":"Flight provider registry and runtime health for the radar UI.","operationId":"get_flight_sources_api_flights_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/aircraft-photo":{"get":{"summary":"Get Aircraft Photo","description":"Return aircraft photo metadata from legal public sources without proxying image bytes.","operationId":"get_aircraft_photo_api_aircraft_photo_get","parameters":[{"name":"registration","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration"}},{"name":"icao24","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icao24"}},{"name":"callsign","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Callsign"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flights/catalog":{"get":{"summary":"Get Flights Catalog","description":"Filtered flight catalog for radar panels and deep links.","operationId":"get_flights_catalog_api_flights_catalog_get","parameters":[{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox"}},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"}},{"name":"icao24","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icao24"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"airline","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Airline"}},{"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"}},{"name":"min_alt","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Alt"}},{"name":"max_alt","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Alt"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"recent_seconds","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recent Seconds"}},{"name":"include_stale","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Stale"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5000,"title":"Limit"}},{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flights/aircraft/{icao24}/refresh":{"get":{"summary":"Refresh Selected Flight Endpoint","operationId":"refresh_selected_flight_endpoint_api_flights_aircraft__icao24__refresh_get","parameters":[{"name":"icao24","in":"path","required":true,"schema":{"type":"string","title":"Icao24"}},{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flights/track/{icao24}":{"get":{"summary":"Get Flight Track V2","operationId":"get_flight_track_v2_api_flights_track__icao24__get","parameters":[{"name":"icao24","in":"path","required":true,"schema":{"type":"string","title":"Icao24"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flight-track/{icao24}":{"get":{"summary":"Get Flight Track","description":"Backward-compatible alias for the canonical v2 track endpoint.","operationId":"get_flight_track_api_flight_track__icao24__get","parameters":[{"name":"icao24","in":"path","required":true,"schema":{"type":"string","title":"Icao24"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/airport/nearest":{"get":{"summary":"Get Nearest Airport","description":"Найти ближайший аэропорт по координатам.","operationId":"get_nearest_airport_api_airport_nearest_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","title":"Lng"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/localtime":{"get":{"summary":"Get Local Time","description":"Получить местное время по координатам.","operationId":"get_local_time_api_localtime_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","title":"Lng"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/airports":{"get":{"summary":"Get Airports","description":"Получить список аэропортов (предзагружены из локального файла).","operationId":"get_airports_api_airports_get","parameters":[{"name":"wire","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Wire"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/airports/lookup":{"get":{"summary":"Lookup Airports","description":"Получить только нужные аэропорты по IATA/ICAO кодам.","operationId":"lookup_airports_api_airports_lookup_get","parameters":[{"name":"codes","in":"query","required":false,"schema":{"type":"string","default":"","title":"Codes"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flights/airports/{code}/board":{"get":{"summary":"Get Flight Airport Board","description":"FR24-style airport board built from current normalized flight states.","operationId":"get_flight_airport_board_api_flights_airports__code__board_get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"arrivals","title":"Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flights/airports/{code}/status":{"get":{"summary":"Get Flight Airport Status","description":"Current airport traffic load and delay status for the airport card.","operationId":"get_flight_airport_status_api_flights_airports__code__status_get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/airport/{code}/flights":{"get":{"summary":"Get Airport Flights","description":"Получить рейсы аэропорта (прилёты/вылеты).","operationId":"get_airport_flights_api_airport__code__flights_get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"arrivals","title":"Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/airport-delays":{"get":{"summary":"Get Airport Delays","description":"Get airport delays from FAA and simulate for international airports.","operationId":"get_airport_delays_api_airport_delays_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/launches":{"get":{"summary":"Get Launches","description":"Get upcoming rocket launches from Launch Library 2.","operationId":"get_launches_api_launches_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/notams":{"get":{"summary":"Get Notams","description":"Fetch live NOTAMs with one bounded refresh shared by concurrent callers.","operationId":"get_notams_api_notams_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/quakes":{"get":{"summary":"Get Earthquakes","description":"Получить землетрясения за последние 24 часа (USGS).","operationId":"get_earthquakes_api_quakes_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/volcanoes":{"get":{"summary":"Get Volcanoes","description":"Получить активные вулканы (NASA EONET).","operationId":"get_volcanoes_api_volcanoes_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/storms":{"get":{"summary":"Get Storms","description":"Получить активные штормы/ураганы (NOAA NHC + NASA EONET + GDACS).","operationId":"get_storms_api_storms_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/wildfires":{"get":{"summary":"Get Wildfires","description":"Получить активные пожары (NASA EONET API).","operationId":"get_wildfires_api_wildfires_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tsunamis":{"get":{"summary":"Get Tsunamis","description":"Получить предупреждения о цунами и цунамигенных землетрясениях.","operationId":"get_tsunamis_api_tsunamis_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/air-quality":{"get":{"summary":"Get Air Quality","description":"Получить данные о качестве воздуха (Open-Meteo Air Quality API).","operationId":"get_air_quality_api_air_quality_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/space/weather":{"get":{"summary":"Get Space Weather Status","description":"Compact Space-mode weather status from NOAA SWPC K-index data.","operationId":"get_space_weather_status_api_space_weather_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/space-weather":{"get":{"summary":"Get Space Weather","description":"Получить данные о космической погоде (NOAA SWPC).","operationId":"get_space_weather_api_space_weather_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/asteroids":{"get":{"summary":"Get Asteroids","description":"Получить данные о близких астероидах (NASA NEO API).","operationId":"get_asteroids_api_asteroids_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/floods":{"get":{"summary":"Get Floods","description":"Получить данные о наводнениях (NASA EONET + GDACS).","operationId":"get_floods_api_floods_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/drought":{"get":{"summary":"Get Drought","description":"Получить данные о засухе (NASA EONET + GDACS).","operationId":"get_drought_api_drought_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/monitoring/health":{"get":{"summary":"Get Monitoring Health","description":"Получить статус здоровья всех API endpoints.","operationId":"get_monitoring_health_api_monitoring_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/monitoring/metrics":{"get":{"summary":"Get Monitoring Metrics","description":"Получить сводку метрик.","operationId":"get_monitoring_metrics_api_monitoring_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/monitoring/logs":{"get":{"summary":"Get Monitoring Logs","description":"Получить последние логи запросов.","operationId":"get_monitoring_logs_api_monitoring_logs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/monitoring/alerts":{"get":{"summary":"Get Monitoring Alerts","description":"Получить последние алерты.","operationId":"get_monitoring_alerts_api_monitoring_alerts_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/monitoring/dashboard":{"get":{"summary":"Get Monitoring Dashboard","description":"Полные данные для дашборда мониторинга.","operationId":"get_monitoring_dashboard_api_monitoring_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health":{"get":{"summary":"Health Check Http","description":"Serialize the large readiness snapshot off FastAPI's recursive encoder.","operationId":"health_check_http_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/mode-status":{"get":{"summary":"Mode Status","description":"Expose retained mode health without running the readiness endpoint.","operationId":"mode_status_api_mode_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/monitoring":{"get":{"summary":"Monitoring Page","description":"Страница мониторинга API.","operationId":"monitoring_page_monitoring_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/radio/stats":{"get":{"summary":"Get Radio Stats","description":"Получить общую статистику радиостанций.","operationId":"get_radio_stats_api_radio_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/media/playback-token":{"post":{"summary":"Media Playback Token","operationId":"media_playback_token_api_media_playback_token_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaPlaybackTokenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/media/proxy":{"get":{"summary":"Media Proxy","operationId":"media_proxy_api_media_proxy_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/radio/sources":{"get":{"summary":"Get Radio Sources","operationId":"get_radio_sources_api_radio_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/radio/countries":{"get":{"summary":"Get Radio Catalog Countries","operationId":"get_radio_catalog_countries_api_radio_countries_get","parameters":[{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"}},{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/radio/regions/{country_code}":{"get":{"summary":"Get Radio Regions","operationId":"get_radio_regions_api_radio_regions__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"}},{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/radio/genres":{"get":{"summary":"Get Radio Catalog Genres","operationId":"get_radio_catalog_genres_api_radio_genres_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":120,"title":"Limit"}},{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/radio/catalog":{"get":{"summary":"Get Radio Catalog Endpoint","operationId":"get_radio_catalog_endpoint_api_radio_catalog_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"}},{"name":"genre","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Genre"}},{"name":"language","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"working","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Working"}},{"name":"has_geo","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Has Geo"}},{"name":"compact","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Compact"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":80,"title":"Limit"}},{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/radio/report":{"post":{"summary":"Report Radio Station","operationId":"report_radio_station_api_radio_report_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadioReportRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/radio/analytics":{"post":{"summary":"Radio Analytics","operationId":"radio_analytics_api_radio_analytics_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadioAnalyticsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/radio/{country_code}":{"get":{"summary":"Get Radio Stations","description":"Получить радиостанции страны (совместимый endpoint поверх нового каталога).","operationId":"get_radio_stations_api_radio__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/popular/all":{"get":{"summary":"Get Popular Tv Channels","description":"Получить популярные мировые каналы из нормализованного каталога.","operationId":"get_popular_tv_channels_api_tv_popular_all_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":80,"title":"Limit"}},{"name":"probe","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Probe"}},{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/sources":{"get":{"summary":"Get Tv Sources","description":"Public description of legal TV source discovery and configured providers.","operationId":"get_tv_sources_api_tv_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/tv/discovery/status":{"get":{"summary":"Get Tv Discovery Status","operationId":"get_tv_discovery_status_api_tv_discovery_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/tv/discovery/candidates":{"get":{"summary":"Get Tv Discovery Candidates","operationId":"get_tv_discovery_candidates_api_tv_discovery_candidates_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"approved","title":"Status"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/submit":{"post":{"summary":"Submit Tv Channel","description":"Accept a community suggestion for later review; never tests arbitrary private URLs.","operationId":"submit_tv_channel_api_tv_submit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvSubmitRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/countries":{"get":{"summary":"Get Tv Countries","operationId":"get_tv_countries_api_tv_countries_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/regions/{country_code}":{"get":{"summary":"Get Tv Regions","operationId":"get_tv_regions_api_tv_regions__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/catalog":{"get":{"summary":"Get Tv Catalog Endpoint","operationId":"get_tv_catalog_endpoint_api_tv_catalog_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"language","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"working","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Working"}},{"name":"probe","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Probe"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":80,"title":"Limit"}},{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/epg/now":{"get":{"summary":"Get Tv Epg Now","operationId":"get_tv_epg_now_api_tv_epg_now_get","parameters":[{"name":"ids","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ids"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/report":{"post":{"summary":"Report Tv Channel","operationId":"report_tv_channel_api_tv_report_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvReportRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/analytics":{"post":{"summary":"Track Tv Event","description":"Lightweight TV-specific event tracking that does not affect visitor sessions.","operationId":"track_tv_event_api_tv_analytics_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/tv/{country_code}":{"get":{"summary":"Get Tv Channels","description":"Совместимый endpoint: каналы страны, теперь с регионами, городами, качеством и status.","operationId":"get_tv_channels_api_tv__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"language","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"working","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Working"}},{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/country-info/{country_code}":{"get":{"summary":"Get Country Info","operationId":"get_country_info_api_country_info__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/holidays/{country_code}":{"get":{"summary":"Get Holidays","description":"Получить праздники страны (Nager.Date API - бесплатный).","operationId":"get_holidays_api_holidays__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}},{"name":"year","in":"query","required":false,"schema":{"type":"integer","title":"Year"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webcams/{country_code}":{"get":{"summary":"Get Webcams","description":"Получить веб-камеры страны (Windy API).","operationId":"get_webcams_api_webcams__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crypto":{"get":{"summary":"Get Crypto Prices","description":"Получить курсы криптовалют (CoinGecko API).","operationId":"get_crypto_prices_api_crypto_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/crypto/{coin_id}/history":{"get":{"summary":"Get Crypto History","description":"Получить историю цен криптовалюты с fallback APIs.","operationId":"get_crypto_history_api_crypto__coin_id__history_get","parameters":[{"name":"coin_id","in":"path","required":true,"schema":{"type":"string","title":"Coin Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stock/{symbol}/history":{"get":{"summary":"Get Stock History","description":"Get stock/index price history.","operationId":"get_stock_history_api_stock__symbol__history_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/commodity/{symbol}/history":{"get":{"summary":"Get Commodity History","description":"Get commodity price history.","operationId":"get_commodity_history_api_commodity__symbol__history_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin":{"get":{"summary":"Admin Plain Page","description":"Admin panel with normal session auth; no secret in URL.","operationId":"admin_plain_page_admin_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/admin/login":{"post":{"summary":"Admin Plain Login","description":"Admin login without secret URL.","operationId":"admin_plain_login_admin_login_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/logout":{"get":{"summary":"Admin Plain Logout","description":"Admin logout for the normal /admin route.","operationId":"admin_plain_logout_admin_logout_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/super-admin-{secret}":{"get":{"summary":"Admin Page","description":"Секретная админ-панель с авторизацией.","operationId":"admin_page_super_admin__secret__get","parameters":[{"name":"secret","in":"path","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/super-admin-{secret}/login":{"post":{"summary":"Admin Login","description":"Обработка логина в админку.","operationId":"admin_login_super_admin__secret__login_post","parameters":[{"name":"secret","in":"path","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/super-admin-{secret}/logout":{"get":{"summary":"Admin Logout","description":"Выход из админки.","operationId":"admin_logout_super_admin__secret__logout_get","parameters":[{"name":"secret","in":"path","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/{secret}/stats":{"get":{"summary":"Admin Stats","description":"Статистика для админки.","operationId":"admin_stats_api_admin__secret__stats_get","parameters":[{"name":"secret","in":"path","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/{secret}/translators":{"get":{"summary":"Admin Translators","description":"Список переводчиков для админки.","operationId":"admin_translators_api_admin__secret__translators_get","parameters":[{"name":"secret","in":"path","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/{secret}/countries":{"get":{"summary":"Admin Countries","description":"Список стран с источниками для админки.","operationId":"admin_countries_api_admin__secret__countries_get","parameters":[{"name":"secret","in":"path","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/{secret}/collect":{"post":{"summary":"Admin Collect","description":"Запустить сбор новостей.","operationId":"admin_collect_api_admin__secret__collect_post","parameters":[{"name":"secret","in":"path","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/{secret}/discover":{"post":{"summary":"Admin Discover","description":"Запустить поиск новых источников.","operationId":"admin_discover_api_admin__secret__discover_post","parameters":[{"name":"secret","in":"path","required":true,"schema":{"type":"string","title":"Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/x/trends":{"get":{"summary":"Get X Trends","description":"Получить тренды X/Twitter","operationId":"get_x_trends_api_x_trends_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"type":"string","title":"Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/x/posts":{"get":{"summary":"Get X Posts","description":"Получить посты X/Twitter","operationId":"get_x_posts_api_x_posts_get","parameters":[{"name":"query","in":"query","required":false,"schema":{"type":"string","default":"","title":"Query"}},{"name":"country","in":"query","required":false,"schema":{"type":"string","title":"Country"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/live-summary":{"get":{"summary":"Api Live Summary","description":"Compact live counts for first-run UX, SEO pages and AI agents.","operationId":"api_live_summary_api_live_summary_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/growth/summary":{"get":{"summary":"Api Growth Summary","description":"Anonymous public growth aggregates under the v1 privacy contract.","operationId":"api_growth_summary_api_growth_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/growth/funnels":{"get":{"summary":"Api Growth Funnels","description":"Anonymous public funnel aggregates with small page buckets merged.","operationId":"api_growth_funnels_api_growth_funnels_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/growth/opportunities":{"get":{"summary":"Api Growth Opportunities","description":"Anonymous public page aggregates above the fixed privacy floor.","operationId":"api_growth_opportunities_api_growth_opportunities_get","parameters":[{"name":"min_views","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Min Views"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/track":{"post":{"summary":"Track Visitor","description":"Отслеживание посетителей pocketworld.org","operationId":"track_visitor_api_track_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorEvent"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/visitor-stats":{"get":{"summary":"Get Visitor Stats","description":"Anonymous public live visitor aggregates under the v1 privacy contract.","operationId":"get_visitor_stats_api_visitor_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/telegram-webhook":{"post":{"summary":"Telegram Webhook","description":"Обработчик Telegram webhook для команд бота.","operationId":"telegram_webhook_telegram_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/events":{"get":{"summary":"Get Events","description":"Получить события мира.","operationId":"get_events_api_events_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/webcams":{"get":{"summary":"Get Webcams","description":"Получить список веб-камер мира.","operationId":"get_webcams_api_webcams_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/stats/countries":{"get":{"summary":"Get Country Stats","operationId":"get_country_stats_api_stats_countries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/military/{country_code}":{"get":{"summary":"Get Military Data","description":"Получить военную статистику страны.","operationId":"get_military_data_api_military__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/economy/{country_code}":{"get":{"summary":"Get Economy Data","description":"Получить экономические показатели страны.","operationId":"get_economy_data_api_economy__country_code__get","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","title":"Country Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sanctioned-vessels":{"get":{"summary":"Get Sanctioned Vessels","description":"Return list of sanctioned vessels from OpenSanctions.","operationId":"get_sanctioned_vessels_api_sanctioned_vessels_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/dark-vessels":{"get":{"summary":"Get Dark Vessels","description":"Return unmatched SAR detections aggregated into grid cells.","operationId":"get_dark_vessels_api_dark_vessels_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/dark-vessels/points":{"get":{"summary":"Get Dark Vessel Points","description":"Return compact aggregated SAR grid-cell points for map-first rendering.","operationId":"get_dark_vessel_points_api_dark_vessels_points_get","parameters":[{"name":"min_detections","in":"query","required":false,"schema":{"type":"integer","default":2,"title":"Min Detections"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/shadow-fleet":{"get":{"summary":"Get Shadow Fleet","description":"Retired: generated positions are not live shadow-fleet observations.","operationId":"get_shadow_fleet_api_shadow_fleet_get","parameters":[{"name":"count","in":"query","required":false,"schema":{"type":"integer","default":60000,"title":"Count"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ports":{"get":{"summary":"Get Ports","description":"Return world ports data.","operationId":"get_ports_api_ports_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/port-photo/{port_key}":{"get":{"summary":"Get Port Photo","description":"Get port photo (cached on disk).","operationId":"get_port_photo_api_port_photo__port_key__get","parameters":[{"name":"port_key","in":"path","required":true,"schema":{"type":"string","title":"Port Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/port-info/{port_key}":{"get":{"summary":"Get Port Info","description":"Get detailed port information.","operationId":"get_port_info_api_port_info__port_key__get","parameters":[{"name":"port_key","in":"path","required":true,"schema":{"type":"string","title":"Port Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stock-indices":{"get":{"summary":"Get Stock Indices","description":"Get current values for all major stock indices.","operationId":"get_stock_indices_api_stock_indices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/epidemics":{"get":{"summary":"Get Epidemics","description":"Get current disease outbreaks worldwide.","operationId":"get_epidemics_api_epidemics_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stadiums":{"get":{"summary":"Get Stadiums","description":"Return world stadiums.","operationId":"get_stadiums_api_stadiums_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/unesco":{"get":{"summary":"Get Unesco Sites","description":"Return UNESCO World Heritage Sites.","operationId":"get_unesco_sites_api_unesco_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/radio-stations":{"get":{"summary":"Get Radio Stations Legacy","description":"Legacy globe endpoint backed by the unified Radio Browser catalog.","operationId":"get_radio_stations_legacy_api_radio_stations_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"type":"string","title":"Country"}},{"name":"tag","in":"query","required":false,"schema":{"type":"string","title":"Tag"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":3000,"title":"Limit"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"}},{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/radio/bytag/{tag}":{"get":{"summary":"Get Radio By Tag","description":"Get radio stations by tag/genre from the unified catalog.","operationId":"get_radio_by_tag_api_radio_bytag__tag__get","parameters":[{"name":"tag","in":"path","required":true,"schema":{"type":"string","title":"Tag"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Limit"}},{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/radio-genres":{"get":{"summary":"Get Radio Genres","description":"Legacy list of radio genres/tags.","operationId":"get_radio_genres_api_radio_genres_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/radio-countries":{"get":{"summary":"Get Radio Countries","description":"Legacy list of countries with radio stations.","operationId":"get_radio_countries_api_radio_countries_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lightning":{"get":{"summary":"Get Lightning","description":"Return recent lightning strikes.","operationId":"get_lightning_api_lightning_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/satellites/{norad_id}/photo":{"get":{"summary":"Get Satellite Photo","operationId":"get_satellite_photo_api_satellites__norad_id__photo_get","parameters":[{"name":"norad_id","in":"path","required":true,"schema":{"type":"string","title":"Norad Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ships":{"get":{"summary":"Get Ships","description":"Return the shared Redis vessel snapshot with explicit provenance.","operationId":"get_ships_api_ships_get","parameters":[{"name":"mock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mock"}},{"name":"wire","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Wire"}},{"name":"snapshot_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ships/stats":{"get":{"summary":"Get Ships Stats","description":"Return AIS connection statistics.","operationId":"get_ships_stats_api_ships_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/ships/{mmsi}/history":{"get":{"summary":"Get Ship History","description":"Return a cached, coalesced, bounded AIS track for one vessel.","operationId":"get_ship_history_api_ships__mmsi__history_get","parameters":[{"name":"mmsi","in":"path","required":true,"schema":{"type":"string","title":"Mmsi"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ships/{mmsi}":{"get":{"summary":"Get Ship Detail","description":"Return one current AIS vessel record for the selected map marker.","operationId":"get_ship_detail_api_ships__mmsi__get","parameters":[{"name":"mmsi","in":"path","required":true,"schema":{"type":"string","title":"Mmsi"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ships/{mmsi}/photo":{"get":{"summary":"Get Ship Photo","operationId":"get_ship_photo_api_ships__mmsi__photo_get","parameters":[{"name":"mmsi","in":"path","required":true,"schema":{"type":"string","title":"Mmsi"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sst":{"get":{"summary":"Get Sst","description":"Return Sea Surface Temperature data.","operationId":"get_sst_api_sst_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/wiki/{entity_type}/{name}":{"get":{"summary":"Get Wiki Info","description":"Get Wikipedia info for airport/port with server-side caching.","operationId":"get_wiki_info_api_wiki__entity_type___name__get","parameters":[{"name":"entity_type","in":"path","required":true,"schema":{"type":"string","title":"Entity Type"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"country","in":"query","required":false,"schema":{"type":"string","default":"","title":"Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oil/pipelines":{"get":{"summary":"Get Oil Pipelines","description":"Получить данные о трубопроводах","operationId":"get_oil_pipelines_api_oil_pipelines_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/oil/refineries":{"get":{"summary":"Get Oil Refineries","description":"Получить данные о НПЗ","operationId":"get_oil_refineries_api_oil_refineries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/oil/fields":{"get":{"summary":"Get Oil Fields","description":"Получить данные о месторождениях","operationId":"get_oil_fields_api_oil_fields_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/oil/news":{"get":{"summary":"Get Oil News","description":"Получить новости о нефти через GDELT","operationId":"get_oil_news_api_oil_news_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/photo-cache/{cache_type}/{key}":{"get":{"summary":"Get Cached Photo","description":"Получить фото из кеша.","operationId":"get_cached_photo_api_photo_cache__cache_type___key__get","parameters":[{"name":"cache_type","in":"path","required":true,"schema":{"type":"string","title":"Cache Type"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/wiki-photo":{"get":{"summary":"Get Wiki Photo","description":"Bound the complete cold-photo path, including preload and retained-cache I/O.","operationId":"get_wiki_photo_api_wiki_photo_get","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","title":"Query"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"spaceport","title":"Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/city-photo/{city_key}":{"get":{"summary":"Get City Photo","description":"Получить фото города (с кешированием на диске).","operationId":"get_city_photo_api_city_photo__city_key__get","parameters":[{"name":"city_key","in":"path","required":true,"schema":{"type":"string","title":"City Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/datacenter-photo/{dc_key}":{"get":{"summary":"Get Datacenter Photo","description":"Получить фото дата-центра (с кешированием на диске).","operationId":"get_datacenter_photo_api_datacenter_photo__dc_key__get","parameters":[{"name":"dc_key","in":"path","required":true,"schema":{"type":"string","title":"Dc Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"MediaPlaybackTokenRequest":{"properties":{"url":{"type":"string","title":"Url"},"kind":{"type":"string","title":"Kind","default":"stream"}},"type":"object","required":["url"],"title":"MediaPlaybackTokenRequest"},"RadioAnalyticsRequest":{"properties":{"event":{"type":"string","title":"Event"},"station_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Station Id"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"genre":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Genre"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"watch_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Watch Time"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","default":"web"}},"type":"object","required":["event"],"title":"RadioAnalyticsRequest"},"RadioReportRequest":{"properties":{"station_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Station Id"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","default":"broken"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details"}},"type":"object","title":"RadioReportRequest"},"TvReportRequest":{"properties":{"channel_id":{"type":"string","title":"Channel Id"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","default":"broken"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details"}},"type":"object","required":["channel_id"],"title":"TvReportRequest"},"TvSubmitRequest":{"properties":{"name":{"type":"string","title":"Name"},"official_page":{"type":"string","title":"Official Page"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"stream_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Url"},"embed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Embed Url"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["name","official_page"],"title":"TvSubmitRequest"},"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"},"VisitorEvent":{"properties":{"event":{"type":"string","title":"Event"},"session_id":{"type":"string","title":"Session Id"},"visitor_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visitor Id"},"page":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page"},"referrer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referrer"},"screen":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"time_on_site":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Time On Site"},"current_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Mode"},"event_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Event Data"}},"type":"object","required":["event","session_id"],"title":"VisitorEvent"}}}}