{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/api/tiers":{"get":{"summary":"Get Tiers","operationId":"get_tiers_api_tiers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/weather":{"get":{"summary":"Get Weather","operationId":"get_weather_api_weather_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Month"}},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"}},{"name":"day","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Day"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/timeseries":{"get":{"summary":"Get Timeseries","description":"Return monthly average (12 values) and 10-year monthly timeseries for a variable.","operationId":"get_timeseries_api_timeseries_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"variable","in":"query","required":true,"schema":{"type":"string","title":"Variable"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/timeseries/all":{"get":{"summary":"Get Timeseries All","description":"Return timeseries data for ALL variables in a single request.","operationId":"get_timeseries_all_api_timeseries_all_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/hazards":{"get":{"summary":"Get Hazards","operationId":"get_hazards_api_hazards_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"forecast","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Forecast"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/regions/boundaries":{"get":{"summary":"Get Region Boundaries","description":"Serve region boundaries. ADM0 from local file, ADM1/ADM2 from geoBoundaries.","operationId":"get_region_boundaries_api_regions_boundaries_get","parameters":[{"name":"iso3","in":"query","required":true,"schema":{"type":"string","title":"Iso3"}},{"name":"level","in":"query","required":false,"schema":{"type":"string","default":"ADM1","title":"Level"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/regions/precomputed":{"get":{"summary":"Get Precomputed Region","description":"Serve pre-computed static stats for a known region.","operationId":"get_precomputed_region_api_regions_precomputed_get","parameters":[{"name":"key","in":"query","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/regions/precomputed/list":{"get":{"summary":"List Precomputed Regions","description":"Return the list of all pre-computed region keys.","operationId":"list_precomputed_regions_api_regions_precomputed_list_get","parameters":[{"name":"iso3","in":"query","required":false,"schema":{"type":"string","title":"Iso3"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/regions/compute-precomputed":{"post":{"summary":"Compute Precomputed Region","description":"Compute and store pre-computed stats for a single region using grid sampling.","operationId":"compute_precomputed_region_api_regions_compute_precomputed_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/polygon-stats":{"post":{"summary":"Polygon Stats","operationId":"polygon_stats_api_polygon_stats_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolygonRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/locations":{"get":{"summary":"Get Locations","operationId":"get_locations_api_locations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"summary":"Save Location","operationId":"save_location_api_locations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedLocation"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/locations/{loc_id}":{"delete":{"summary":"Delete Location","operationId":"delete_location_api_locations__loc_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"loc_id","in":"path","required":true,"schema":{"type":"string","title":"Loc Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/locations/batch":{"post":{"summary":"Save Locations Batch","operationId":"save_locations_batch_api_locations_batch_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/api-keys":{"get":{"summary":"List Api Keys","operationId":"list_api_keys_api_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"summary":"Create Api Key","operationId":"create_api_key_api_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/api-keys/{key_id}":{"delete":{"summary":"Revoke Api Key","operationId":"revoke_api_key_api_api_keys__key_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feedback":{"post":{"summary":"Submit Feedback","operationId":"submit_feedback_api_feedback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/bulk":{"post":{"summary":"Bulk Export","operationId":"bulk_export_api_bulk_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proximity":{"get":{"summary":"Get Proximity","operationId":"get_proximity_api_proximity_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/refresh-gfs":{"post":{"summary":"Refresh Gfs","description":"Trigger a GFS data refresh. Called by Cloud Scheduler.","operationId":"refresh_gfs_api_refresh_gfs_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/staticmap":{"get":{"summary":"Staticmap","operationId":"staticmap_api_staticmap_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","title":"Lon"}},{"name":"z","in":"query","required":false,"schema":{"type":"integer","default":12,"title":"Z"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/weather":{"get":{"tags":["Public API v1"],"summary":"Current weather conditions","description":"Get current weather (nowcast) for a point. Returns temperature, humidity, precipitation, wind, pressure, cloud cover, and more.","operationId":"v1_weather_v1_weather_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key (alternative to X-API-Key header)","title":"Api Key"},"description":"API key (alternative to X-API-Key header)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/weather/forecast":{"get":{"tags":["Public API v1"],"summary":"Weather forecast","description":"Get weather forecast for a point. Day 0 = today, up to 7 days ahead.","operationId":"v1_weather_forecast_v1_weather_forecast_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"day","in":"query","required":false,"schema":{"type":"integer","description":"Forecast day (0=today, 1=tomorrow, etc.)","default":0,"title":"Day"},"description":"Forecast day (0=today, 1=tomorrow, etc.)"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/weather/historical":{"get":{"tags":["Public API v1"],"summary":"Historical weather averages","description":"Get historical ERA5 weather averages for a point. Optional month filter (1-12).","operationId":"v1_weather_historical_v1_weather_historical_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Month (1-12) for monthly average, or omit for annual","title":"Month"},"description":"Month (1-12) for monthly average, or omit for annual"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/terrain":{"get":{"tags":["Public API v1"],"summary":"Terrain data","description":"Get elevation, slope, aspect, and TWI for a point.","operationId":"v1_terrain_v1_terrain_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/hazards":{"get":{"tags":["Public API v1"],"summary":"Hazard data","description":"Get soil erosion (RUSLE) and flood risk (TWI) for a point.","operationId":"v1_hazards_v1_hazards_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/environment":{"get":{"tags":["Public API v1"],"summary":"Environment data","description":"Get NDVI, evapotranspiration, and land cover for a point.","operationId":"v1_environment_v1_environment_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/proximity":{"get":{"tags":["Public API v1"],"summary":"Proximity data","description":"Get nearest features (cities, water bodies, protected areas, etc.) for a point.","operationId":"v1_proximity_v1_proximity_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/polygon/stats":{"post":{"tags":["Public API v1"],"summary":"Polygon zonal statistics","description":"Compute weather, terrain, hazard, and environment statistics for a polygon area. Coordinates are [longitude, latitude] pairs. Polygon size limits depend on tier.","operationId":"v1_polygon_stats_v1_polygon_stats_post","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1PolygonRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/usage":{"get":{"tags":["Public API v1"],"summary":"Check API usage","description":"Check your current daily API usage and tier limits.","operationId":"v1_usage_v1_usage_get","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/lemonsqueezy":{"post":{"summary":"Lemonsqueezy Webhook","description":"Handle Lemon Squeezy webhook events.","operationId":"lemonsqueezy_webhook_api_webhooks_lemonsqueezy_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/checkout":{"post":{"summary":"Create Checkout","description":"Create a Lemon Squeezy checkout URL for new subscriptions.","operationId":"create_checkout_api_checkout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/checkout-report":{"post":{"summary":"Create Report Checkout","description":"Create a Lemon Squeezy checkout for a single one-time PDF report.\n\nOptional JSON body {lat, lon, label, region} personalizes the checkout:\nthe product name carries the coordinates or region name and the product\nimage becomes a map of the location, so buyers see exactly what they\nare paying for.","operationId":"create_report_checkout_api_checkout_report_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/report-credits":{"get":{"summary":"Get Report Credits","description":"Return the user's remaining one-time report credits.","operationId":"get_report_credits_api_report_credits_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/report-credits/consume":{"post":{"summary":"Consume Report Credit","description":"Atomically consume one report credit and record the purchased report. 402 if none left.","operationId":"consume_report_credit_api_report_credits_consume_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/reports/{report_id}/content":{"post":{"summary":"Store Report Content","description":"Store the generated report HTML as the buyer's frozen snapshot (write-once).","operationId":"store_report_content_api_reports__report_id__content_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Get Report Content","description":"Return the frozen snapshot HTML of a purchased report.","operationId":"get_report_content_api_reports__report_id__content_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports":{"get":{"summary":"List Purchased Reports","description":"List the user's purchased reports (regenerable for free).","operationId":"list_purchased_reports_api_reports_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/subscription/upgrade":{"post":{"summary":"Upgrade Subscription","description":"Upgrade an existing subscription to a higher tier (prorated).","operationId":"upgrade_subscription_api_subscription_upgrade_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/subscription":{"get":{"summary":"Get Subscription","description":"Get current user's subscription info, with live verification.","operationId":"get_subscription_api_subscription_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/.well-known/mcp-registry-auth":{"get":{"summary":"Mcp Registry Auth","operationId":"mcp_registry_auth__well_known_mcp_registry_auth_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/mcp":{"get":{"summary":"Mcp Get","operationId":"mcp_get_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Mcp Post","operationId":"mcp_post_mcp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"delete":{"summary":"Mcp Delete","operationId":"mcp_delete_mcp_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"options":{"summary":"Mcp Preflight","operationId":"mcp_preflight_mcp_options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/logo.png":{"get":{"summary":"Serve Logo","operationId":"serve_logo_logo_png_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/favicon.png":{"get":{"summary":"Serve Favicon","operationId":"serve_favicon_favicon_png_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/landing-logo.png":{"get":{"summary":"Serve Landing Logo","operationId":"serve_landing_logo_landing_logo_png_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/landing-logo.webp":{"get":{"summary":"Serve Landing Logo Webp","operationId":"serve_landing_logo_webp_landing_logo_webp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/logo_dark_mode.jpg":{"get":{"summary":"Serve Logo Dark","operationId":"serve_logo_dark_logo_dark_mode_jpg_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/hero-dashboard.png":{"get":{"summary":"Serve Hero","operationId":"serve_hero_hero_dashboard_png_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/hero-dashboard.webp":{"get":{"summary":"Serve Hero Webp","operationId":"serve_hero_webp_hero_dashboard_webp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/hero-dashboard-480w.webp":{"get":{"summary":"Serve Hero 480W","operationId":"serve_hero_480w_hero_dashboard_480w_webp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/hero-dashboard-768w.webp":{"get":{"summary":"Serve Hero 768W","operationId":"serve_hero_768w_hero_dashboard_768w_webp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/hero-dashboard-960w.webp":{"get":{"summary":"Serve Hero 960W","operationId":"serve_hero_960w_hero_dashboard_960w_webp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/og-banner.png":{"get":{"summary":"Serve Og Banner","operationId":"serve_og_banner_og_banner_png_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robots.txt":{"get":{"summary":"Serve Robots","operationId":"serve_robots_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sitemap.xml":{"get":{"summary":"Serve Sitemap","operationId":"serve_sitemap_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/llms.txt":{"get":{"summary":"Serve Llms Txt","operationId":"serve_llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/blog":{"get":{"summary":"Serve Blog Index","operationId":"serve_blog_index_blog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/blog/{slug}":{"get":{"summary":"Serve Blog Article","operationId":"serve_blog_article_blog__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sample-report":{"get":{"summary":"Serve Sample Report","operationId":"serve_sample_report_sample_report_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/terms":{"get":{"summary":"Serve Terms","operationId":"serve_terms_terms_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/privacy":{"get":{"summary":"Serve Privacy","operationId":"serve_privacy_privacy_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"summary":"Serve Landing","operationId":"serve_landing__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/app/{rest_of_path}":{"get":{"summary":"Serve App","operationId":"serve_app_app__rest_of_path__get","parameters":[{"name":"rest_of_path","in":"path","required":true,"schema":{"type":"string","title":"Rest Of Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/app":{"get":{"summary":"Serve App","operationId":"serve_app_app_get","parameters":[{"name":"rest_of_path","in":"query","required":false,"schema":{"type":"string","default":"","title":"Rest Of Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"BulkPoint":{"properties":{"lat":{"type":"number","title":"Lat"},"lon":{"type":"number","title":"Lon"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"}},"type":"object","required":["lat","lon"],"title":"BulkPoint"},"BulkRequest":{"properties":{"points":{"items":{"$ref":"#/components/schemas/BulkPoint"},"type":"array","title":"Points"},"mode":{"type":"string","title":"Mode","default":"nowcast"},"forecast_days":{"type":"integer","title":"Forecast Days","default":7},"include_weather":{"type":"boolean","title":"Include Weather","default":true},"include_hazards":{"type":"boolean","title":"Include Hazards","default":true},"include_proximity":{"type":"boolean","title":"Include Proximity","default":true}},"type":"object","required":["points"],"title":"BulkRequest"},"CreateKeyRequest":{"properties":{"name":{"type":"string","title":"Name","default":"Default"}},"type":"object","title":"CreateKeyRequest"},"FeedbackRequest":{"properties":{"category":{"type":"string","title":"Category"},"message":{"type":"string","title":"Message"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"screenshot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screenshot"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"}},"type":"object","required":["category","message"],"title":"FeedbackRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PolygonRequest":{"properties":{"coordinates":{"items":{"items":{"type":"number"},"type":"array"},"type":"array","title":"Coordinates"},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode","default":"nowcast"},"day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Day"},"month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Month"}},"type":"object","required":["coordinates"],"title":"PolygonRequest"},"SavedLocation":{"properties":{"name":{"type":"string","title":"Name"},"lat":{"type":"number","title":"Lat"},"lng":{"type":"number","title":"Lng"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","default":"point"},"vertices":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Vertices"}},"type":"object","required":["name","lat","lng"],"title":"SavedLocation"},"V1PolygonRequest":{"properties":{"coordinates":{"items":{"items":{"type":"number"},"type":"array"},"type":"array","title":"Coordinates"},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode","default":"nowcast"},"day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Day"},"month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Month"}},"type":"object","required":["coordinates"],"title":"V1PolygonRequest","example":{"coordinates":[[23.7,37.9],[23.8,37.9],[23.8,38.0],[23.7,38.0],[23.7,37.9]],"mode":"nowcast"}},"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"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}