{"openapi":"3.1.0","info":{"title":"Pascal Map API","version":"1.0.0","license":{"name":"Proprietary","url":"https://www.pascal.app/terms"},"description":"Canonical geodata platform for Pascal. Parcels are the layer of truth; every fact carries provenance, and incomplete data is a first-class state. Structured errors: { error: { code, message, param?, hint?, request_id } }. Additive-change policy: new fields, new dossier sections, and new enum values may appear without a version bump — clients must ignore keys they do not know."},"externalDocs":{"description":"Quickstart, examples, and agent integration","url":"https://map.pascal.app/docs"},"servers":[{"url":"https://map.pascal.app/api","description":"production"},{"url":"/api","description":"this deployment"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key minted in the account dialog at map.pascal.app (sign in → account → API keys). Keys look like `sk_map_…`, are hashed at rest, scoped (read:public), and rate-limited at 300 requests/min. `x-api-key: <key>` is accepted too. Only /v1/health, /docs, /openapi.json and /llms.txt are open."},"apiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"Same key as bearerAuth, as a header."}}},"security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"tags":[{"name":"location","description":"Combined facts and coverage for a place."},{"name":"platform","description":"Health and data-plane version information."},{"name":"layers","description":"Catalog entries and viewport GeoJSON."},{"name":"search","description":"Address, place, county, and ZIP discovery."},{"name":"parcels","description":"Resources in the ingested parcel query plane."}],"paths":{"/v1/location":{"get":{"operationId":"getLocation","x-openai-isConsequential":false,"summary":"The location dossier — everything known about one spot","description":"One lookup answers \"what do we know here?\" across every data layer: the parcel (the layer of truth), flood zone + FIRM panel, wetlands coverage, buildings, soils, the design-code bundle (wind/climate/rainfall), zoning + future land use, permits, sewer-vs-septic + electric territory, market observation, tax assessment, live weather, elevation, and county/ZIP. Look up by ll=lat,lng, a mailing address, or a parcel key. `layers=` filters which sections come back — exactly like toggling layers on the map. Every section has a plain-language `summary` on top of structured `data`, carries its `source` (provenance), and reports status available | empty | not_covered | not_available — a section that cannot be answered says why instead of disappearing. `GET /v1/coverage` scorecards where each section answers.","tags":["location"],"parameters":[{"name":"lat","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":1}},{"name":"lng","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":1}},{"name":"ll","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","description":"Shorthand for lat,lng in one param — latitude first","type":"string","pattern":"^\\s*[+-]?\\d+(\\.\\d+)?\\s*,\\s*[+-]?\\d+(\\.\\d+)?\\s*$"},"description":"Shorthand for lat,lng in one param — latitude first"},{"name":"address","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","description":"A mailing address — e.g. address=501 5th Ave N, St Petersburg, FL","type":"string","minLength":3,"maxLength":500},"description":"A mailing address — e.g. address=501 5th Ave N, St Petersburg, FL"},{"name":"parcel","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","description":"A parcel_key from the parcel section","type":"string","minLength":4,"maxLength":200},"description":"A parcel_key from the parcel section"},{"name":"layers","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","description":"Comma-separated sections to include (default: all). One of: parcel, flood, wetlands, structures, soils, code_basis, weather, elevation, boundaries, market, tax, zoning, permits, utilities","type":"string"},"description":"Comma-separated sections to include (default: all). One of: parcel, flood, wetlands, structures, soils, code_basis, weather, elevation, boundaries, market, tax, zoning, permits, utilities"},{"name":"include_geometry","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","default":"false","description":"Include GeoJSON geometries (parcel polygon, flood zones and wetlands clipped to the parcel)","type":"string","enum":["true","false"]},"description":"Include GeoJSON geometries (parcel polygon, flood zones and wetlands clipped to the parcel)"},{"name":"include_adjacent","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","default":"false","description":"Also resolve the parcels sharing a boundary with this one (parcel.data.adjacent_parcels)","type":"string","enum":["true","false"]},"description":"Also resolve the parcels sharing a boundary with this one (parcel.data.adjacent_parcels)"}],"responses":{"200":{"description":"Location dossier","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"object":{"type":"string","const":"location"},"as_of":{"type":"string","description":"When this snapshot was assembled (ISO 8601)"},"query":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"coordinates"},"lat":{"type":"number"},"lng":{"type":"number"}},"required":["type","lat","lng"]},{"type":"object","properties":{"type":{"type":"string","const":"address"},"address":{"type":"string"}},"required":["type","address"]},{"type":"object","properties":{"type":{"type":"string","const":"parcel"},"parcel":{"type":"string"}},"required":["type","parcel"]}],"description":"Echo of how the lookup was made"},"point":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"},"source":{"type":"string","enum":["input","geocoded","parcel_anchor"],"description":"Where these coordinates came from"}},"required":["lat","lng","source"],"description":"The coordinates every section was evaluated at"},"address":{"description":"The mailing address of this spot: the one you searched by, or the nearest address (reverse-geocoded) for coordinate and parcel lookups — usable to re-query via ?address=","type":"object","properties":{"formatted":{"type":"string"},"precision":{"type":"string","enum":["rooftop","street","place"],"description":"rooftop = the address point; street = a street centerline (can be 50–200 m off); place = a locality centroid"}},"required":["formatted","precision"]},"layers":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","properties":{"object":{"type":"string","const":"location_section"},"layer":{"type":"string","const":"parcel"},"name":{"type":"string","description":"Display name, e.g. \"FEMA flood zones\""},"category":{"type":"string","enum":["property","classification","geography","conditions"]},"status":{"type":"string","enum":["available","empty","not_covered","not_available"]},"summary":{"type":"string","description":"One plain-language sentence anyone can read — the layman answer"},"data":{"anyOf":[{"type":"object","properties":{"parcel_key":{"type":"string","description":"Stable pseudonymous parcel handle (HMAC of the county key)"},"county":{"type":"object","properties":{"name":{"description":"Human name, e.g. \"Pinellas\"","type":["string","null"]},"fips":{"description":"5-digit Census FIPS, e.g. \"12103\"","type":["string","null"]},"local_code":{"description":"Florida DOR county code, e.g. 62 — a state-local identifier","type":["number","null"]}},"required":["name","fips","local_code"]},"situs_address":{"anyOf":[{"type":"object","properties":{"line1":{"type":"string"},"city":{"type":["string","null"]},"zip":{"type":["string","null"]}},"required":["line1","city","zip"]},{"type":"null"}],"description":"Property (situs) address from the county tax roll, where the roll plane covers this county"},"vintage":{"description":"Tax-roll vintage the parcel came from","type":["string","null"]},"area_m2":{"description":"Parcel area in square meters; null when only a point is known","type":["number","null"]},"area_acres":{"type":["number","null"]},"parcel_count_here":{"type":"number","description":"How many parcels share this exact spot — condo units stack dozens of parcels on one footprint"},"stacked_parcel_keys":{"type":"array","items":{"type":"string"},"description":"Up to 10 other parcel keys at this same spot (smallest-area parcel is the one answered)"},"adjacent_parcels":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"parcel_key":{"type":"string"},"area_m2":{"type":["number","null"]}},"required":["parcel_key","area_m2"]}},{"type":"null"}],"description":"Neighbors sharing a boundary — present with include_adjacent=true"},"frontage":{"anyOf":[{"type":"object","properties":{"total_ft":{"type":"number"},"total_m":{"type":"number"},"segment_count":{"type":"number"},"geometry":{"description":"GeoJSON MultiLineString (include_geometry=true)"}},"required":["total_ft","total_m","segment_count"]},{"type":"null"}],"description":"Boundary NOT shared with any adjacent parcel — the street/right-of-way (or water) fronting edges. Derived from the parcel fabric; present with include_adjacent=true"},"geometry":{"description":"GeoJSON Feature of the parcel polygon (include_geometry=true)"}},"required":["parcel_key","county","situs_address","vintage","area_m2","area_acres","parcel_count_here","stacked_parcel_keys","adjacent_parcels","frontage"]},{"type":"null"}]},"source":{"type":"object","properties":{"name":{"type":"string","description":"Human name of the upstream dataset or service"},"kind":{"type":"string","enum":["live","official","archive","computed"],"description":"live = real-time conditions; official = a regulatory record queried from the authority (current, but a classification — not a condition); archive = our pinned data build; computed = derived here"},"vintage":{"description":"Data vintage, e.g. the \"2026F\" tax roll, or \"live\"","type":"string"},"attribution":{"type":"string"},"note":{"description":"Caveats a careful reader should know (datum, resolution, …)","type":"string"}},"required":["name","kind"]},"reason":{"description":"Present on not_covered / not_available: why there is no answer","type":"string"},"hint":{"description":"What would produce an answer","type":"string"}},"required":["object","layer","name","category","status","summary","data"]},{"type":"object","properties":{"object":{"type":"string","const":"location_section"},"layer":{"type":"string","const":"flood"},"name":{"type":"string","description":"Display name, e.g. \"FEMA flood zones\""},"category":{"type":"string","enum":["property","classification","geography","conditions"]},"status":{"type":"string","enum":["available","empty","not_covered","not_available"]},"summary":{"type":"string","description":"One plain-language sentence anyone can read — the layman answer"},"data":{"anyOf":[{"type":"object","properties":{"is_in_flood_zone":{"description":"True when the queried point sits in a high-risk (SFHA) zone; null when the point sits in a map gap (check zones_on_parcel)","type":["boolean","null"]},"mapped":{"type":"boolean","description":"False = FEMA has not mapped this area (NOT the same as low risk)"},"firm_panel":{"anyOf":[{"type":"object","properties":{"panel":{"type":"string","description":"FIRM panel number"},"effective_date":{"description":"Panel effective date","type":["string","null"]}},"required":["panel","effective_date"]},{"type":"null"}]},"zone_at_point":{"anyOf":[{"type":"object","properties":{"zone":{"type":"string","description":"FEMA zone label, e.g. \"AE\", \"VE\", \"X\""},"zone_subtype":{"type":["string","null"]},"description":{"type":"string","description":"The zone decoded into plain language"},"is_in_flood_zone":{"type":"boolean","description":"True when this is a high-risk (SFHA) zone"},"base_flood_elevation_ft":{"description":"BFE in feet where FEMA publishes one","type":["number","null"]},"bfe_datum":{"description":"Vertical datum for BFE — do not compare against other datums","type":"string","const":"NAVD88"}},"required":["zone","zone_subtype","description","is_in_flood_zone","base_flood_elevation_ft"]},{"type":"null"}],"description":"The zone at the exact queried point; null when the point sits in a gap"},"evaluated_against":{"type":"string","enum":["parcel","point"],"description":"Whether zone coverage was computed over the parcel polygon or just the point"},"zones_on_parcel":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"zone":{"type":"string"},"zone_subtype":{"type":["string","null"]},"description":{"type":"string"},"is_in_flood_zone":{"type":"boolean"},"base_flood_elevation_ft":{"description":"NAVD88; zones split by BFE appear as separate rows","type":["number","null"]},"coverage_pct":{"type":"number","description":"% of the parcel this zone covers"},"area_m2":{"type":"number"}},"required":["zone","zone_subtype","description","is_in_flood_zone","base_flood_elevation_ft","coverage_pct","area_m2"]}},{"type":"null"}],"description":"Per-zone coverage of the parcel; null without a parcel polygon"},"highest_risk_zone_on_parcel":{"type":["string","null"]},"geometry":{"description":"GeoJSON FeatureCollection of flood zones clipped to the parcel (include_geometry=true)"}},"required":["is_in_flood_zone","mapped","firm_panel","zone_at_point","evaluated_against","zones_on_parcel","highest_risk_zone_on_parcel"]},{"type":"null"}]},"source":{"type":"object","properties":{"name":{"type":"string","description":"Human name of the upstream dataset or service"},"kind":{"type":"string","enum":["live","official","archive","computed"],"description":"live = real-time conditions; official = a regulatory record queried from the authority (current, but a classification — not a condition); archive = our pinned data build; computed = derived here"},"vintage":{"description":"Data vintage, e.g. the \"2026F\" tax roll, or \"live\"","type":"string"},"attribution":{"type":"string"},"note":{"description":"Caveats a careful reader should know (datum, resolution, …)","type":"string"}},"required":["name","kind"]},"reason":{"description":"Present on not_covered / not_available: why there is no answer","type":"string"},"hint":{"description":"What would produce an answer","type":"string"}},"required":["object","layer","name","category","status","summary","data"]},{"type":"object","properties":{"object":{"type":"string","const":"location_section"},"layer":{"type":"string","const":"wetlands"},"name":{"type":"string","description":"Display name, e.g. \"FEMA flood zones\""},"category":{"type":"string","enum":["property","classification","geography","conditions"]},"status":{"type":"string","enum":["available","empty","not_covered","not_available"]},"summary":{"type":"string","description":"One plain-language sentence anyone can read — the layman answer"},"data":{"anyOf":[{"type":"object","properties":{"intersects_parcel":{"description":"True when mapped wetlands overlap the parcel; null without a parcel","type":["boolean","null"]},"is_on_wetland":{"type":"boolean","description":"True when the exact point is inside a mapped wetland"},"evaluated_against":{"type":"string","enum":["parcel","point"]},"parcel_coverage_pct":{"description":"% of the parcel covered by mapped wetlands","type":["number","null"]},"wetlands":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"NWI class in words, e.g. \"Freshwater Forested/Shrub Wetland\""},"code":{"description":"Raw NWI Cowardin code, e.g. \"E1UBL\"","type":["string","null"]},"is_open_water":{"type":"boolean","description":"True for open-water classes (bays, lakes) — not a vegetated wetland"},"coverage_pct":{"type":["number","null"]},"area_m2":{"type":["number","null"]}},"required":["type","code","is_open_water","coverage_pct","area_m2"]}},"geometry":{"description":"GeoJSON FeatureCollection of wetlands clipped to the parcel (include_geometry=true)"}},"required":["intersects_parcel","is_on_wetland","evaluated_against","parcel_coverage_pct","wetlands"]},{"type":"null"}]},"source":{"type":"object","properties":{"name":{"type":"string","description":"Human name of the upstream dataset or service"},"kind":{"type":"string","enum":["live","official","archive","computed"],"description":"live = real-time conditions; official = a regulatory record queried from the authority (current, but a classification — not a condition); archive = our pinned data build; computed = derived here"},"vintage":{"description":"Data vintage, e.g. the \"2026F\" tax roll, or \"live\"","type":"string"},"attribution":{"type":"string"},"note":{"description":"Caveats a careful reader should know (datum, resolution, …)","type":"string"}},"required":["name","kind"]},"reason":{"description":"Present on not_covered / not_available: why there is no answer","type":"string"},"hint":{"description":"What would produce an answer","type":"string"}},"required":["object","layer","name","category","status","summary","data"]},{"type":"object","properties":{"object":{"type":"string","const":"location_section"},"layer":{"type":"string","const":"structures"},"name":{"type":"string","description":"Display name, e.g. \"FEMA flood zones\""},"category":{"type":"string","enum":["property","classification","geography","conditions"]},"status":{"type":"string","enum":["available","empty","not_covered","not_available"]},"summary":{"type":"string","description":"One plain-language sentence anyone can read — the layman answer"},"data":{"anyOf":[{"type":"object","properties":{"building_count":{"type":"number","description":"Buildings whose footprints intersect the parcel"},"total_footprint_m2":{"type":["number","null"]},"buildings":{"type":"array","items":{"type":"object","properties":{"occupancy":{"description":"e.g. \"Residential\"","type":["string","null"]},"primary_occupancy":{"type":["string","null"]},"height_m":{"description":"null where the source has no height","type":["number","null"]},"footprint_m2":{"type":["number","null"]}},"required":["occupancy","primary_occupancy","height_m","footprint_m2"]}},"county_record":{"description":"Authoritative county tax-roll facts (kind: record) — year built here beats the modeled NSI estimate","anyOf":[{"type":"object","properties":{"year_built_actual":{"type":["number","null"]},"year_built_effective":{"type":["number","null"]},"living_area_sqft":{"type":["number","null"]},"building_count":{"type":["number","null"]},"residential_units":{"type":["number","null"]},"construction_class_code":{"description":"DOR construction class code, verbatim — decode table lands with the NAL layout doc","type":["string","null"]},"improvement_quality_code":{"type":["string","null"]}},"required":["year_built_actual","year_built_effective","living_area_sqft","building_count","residential_units","construction_class_code","improvement_quality_code"]},{"type":"null"}]},"footprint_source":{"description":"Where the footprint GEOMETRY came from: OpenStreetMap surveyed outlines when present, USA Structures ML otherwise","type":"string"},"structure_attributes":{"type":"array","items":{"type":"object","properties":{"year_built":{"type":["number","null"]},"stories":{"type":["number","null"]},"foundation_type":{"type":["string","null"]},"foundation_height_ft":{"type":["number","null"]},"ground_elevation_ft":{"type":["number","null"]},"first_floor_elevation_ft_est":{"description":"ground_elevation_ft + foundation_height_ft — a modeled ESTIMATE, not an elevation certificate","type":["number","null"]},"elevation_datum":{"type":"string","const":"NAVD88"},"occupancy_type":{"type":["string","null"]}},"required":["year_built","stories","foundation_type","foundation_height_ft","ground_elevation_ft","first_floor_elevation_ft_est","elevation_datum","occupancy_type"]},"description":"Per-structure attributes from the USACE National Structure Inventory — a separate plane from the footprints, reported side by side"},"geometry":{"description":"GeoJSON FeatureCollection of footprints (include_geometry=true)"}},"required":["building_count","total_footprint_m2","buildings","structure_attributes"]},{"type":"null"}]},"source":{"type":"object","properties":{"name":{"type":"string","description":"Human name of the upstream dataset or service"},"kind":{"type":"string","enum":["live","official","archive","computed"],"description":"live = real-time conditions; official = a regulatory record queried from the authority (current, but a classification — not a condition); archive = our pinned data build; computed = derived here"},"vintage":{"description":"Data vintage, e.g. the \"2026F\" tax roll, or \"live\"","type":"string"},"attribution":{"type":"string"},"note":{"description":"Caveats a careful reader should know (datum, resolution, …)","type":"string"}},"required":["name","kind"]},"reason":{"description":"Present on not_covered / not_available: why there is no answer","type":"string"},"hint":{"description":"What would produce an answer","type":"string"}},"required":["object","layer","name","category","status","summary","data"]},{"type":"object","properties":{"object":{"type":"string","const":"location_section"},"layer":{"type":"string","const":"soils"},"name":{"type":"string","description":"Display name, e.g. \"FEMA flood zones\""},"category":{"type":"string","enum":["property","classification","geography","conditions"]},"status":{"type":"string","enum":["available","empty","not_covered","not_available"]},"summary":{"type":"string","description":"One plain-language sentence anyone can read — the layman answer"},"data":{"anyOf":[{"type":"object","properties":{"soil_units":{"type":"array","items":{"type":"object","properties":{"map_unit":{"type":"string","description":"SSURGO map unit name"},"symbol":{"type":["string","null"]},"drainage_class":{"description":"e.g. \"Poorly drained\" — a construction constraint","type":["string","null"]},"hydrologic_group":{"description":"Runoff potential A (low) … D (high)","type":["string","null"]},"hydric_pct":{"description":"% of the map unit rated hydric (wetland soil)","type":["number","null"]}},"required":["map_unit","symbol","drainage_class","hydrologic_group","hydric_pct"]}},"evaluated_against":{"type":"string","enum":["parcel","point"]}},"required":["soil_units","evaluated_against"]},{"type":"null"}]},"source":{"type":"object","properties":{"name":{"type":"string","description":"Human name of the upstream dataset or service"},"kind":{"type":"string","enum":["live","official","archive","computed"],"description":"live = real-time conditions; official = a regulatory record queried from the authority (current, but a classification — not a condition); archive = our pinned data build; computed = derived here"},"vintage":{"description":"Data vintage, e.g. the \"2026F\" tax roll, or \"live\"","type":"string"},"attribution":{"type":"string"},"note":{"description":"Caveats a careful reader should know (datum, resolution, …)","type":"string"}},"required":["name","kind"]},"reason":{"description":"Present on not_covered / not_available: why there is no answer","type":"string"},"hint":{"description":"What would produce an answer","type":"string"}},"required":["object","layer","name","category","status","summary","data"]},{"type":"object","properties":{"object":{"type":"string","const":"location_section"},"layer":{"type":"string","const":"code_basis"},"name":{"type":"string","description":"Display name, e.g. \"FEMA flood zones\""},"category":{"type":"string","enum":["property","classification","geography","conditions"]},"status":{"type":"string","enum":["available","empty","not_covered","not_available"]},"summary":{"type":"string","description":"One plain-language sentence anyone can read — the layman answer"},"data":{"anyOf":[{"type":"object","properties":{"climate_zone_iecc":{"description":"IECC climate zone, e.g. \"2A\"","type":["string","null"]},"frost_depth_ft":{"description":"Design frost line depth","type":["number","null"]},"ground_snow_load_psf":{"type":["number","null"]},"seismic_design_category":{"description":"Typical ASCE 7 SDC for ordinary structures here","type":["string","null"]},"wind_speed_mph":{"description":"ASCE 7 basic wind speed, Risk Category II (county-level value)","type":["number","null"]},"wind_borne_debris_region":{"type":["boolean","null"]},"wind_exposure":{"description":"Site-specific judgment — null; requires a designer","type":["string","null"]},"rainfall_100yr_24hr_in":{"description":"NOAA Atlas 14 100-year 24-hour depth at the point","type":["number","null"]},"rainfall_source":{"type":["string","null"]},"climate_zone_title24":{"description":"California Energy Commission climate zone (1–16), CA only","type":["string","null"]},"seismic_sds":{"description":"ASCE 7-22 SDS at the point (Site Class D assumed) — USGS web service","type":["number","null"]},"seismic_sd1":{"type":["number","null"]},"fire_hazard_severity":{"description":"CAL FIRE Fire Hazard Severity Zone class (Moderate/High/Very High), CA only","type":["string","null"]},"fire_responsibility_area":{"description":"SRA = state responsibility area; LRA = local","type":["string","null"]},"county":{"type":["string","null"]}},"required":["climate_zone_iecc","frost_depth_ft","ground_snow_load_psf","seismic_design_category","wind_speed_mph","wind_borne_debris_region","wind_exposure","rainfall_100yr_24hr_in","rainfall_source"]},{"type":"null"}]},"source":{"type":"object","properties":{"name":{"type":"string","description":"Human name of the upstream dataset or service"},"kind":{"type":"string","enum":["live","official","archive","computed"],"description":"live = real-time conditions; official = a regulatory record queried from the authority (current, but a classification — not a condition); archive = our pinned data build; computed = derived here"},"vintage":{"description":"Data vintage, e.g. the \"2026F\" tax roll, or \"live\"","type":"string"},"attribution":{"type":"string"},"note":{"description":"Caveats a careful reader should know (datum, resolution, …)","type":"string"}},"required":["name","kind"]},"reason":{"description":"Present on not_covered / not_available: why there is no answer","type":"string"},"hint":{"description":"What would produce an answer","type":"string"}},"required":["object","layer","name","category","status","summary","data"]},{"type":"object","properties":{"object":{"type":"string","const":"location_section"},"layer":{"type":"string","const":"weather"},"name":{"type":"string","description":"Display name, e.g. \"FEMA flood zones\""},"category":{"type":"string","enum":["property","classification","geography","conditions"]},"status":{"type":"string","enum":["available","empty","not_covered","not_available"]},"summary":{"type":"string","description":"One plain-language sentence anyone can read — the layman answer"},"data":{"anyOf":[{"type":"object","properties":{"is_raining":{"type":"boolean"},"precipitation_mm":{"type":"number","description":"Precipitation over the last observation interval, in mm"},"precipitation_interval_seconds":{"type":"number"},"conditions":{"type":"string","description":"Plain-language sky/precipitation state"},"temperature_c":{"type":"number"},"temperature_f":{"type":"number"},"humidity_pct":{"type":"number"},"pressure_hpa":{"description":"Surface air pressure","type":["number","null"]},"cloud_cover_pct":{"type":["number","null"]},"uv_index":{"description":"Sun exposure right now","type":["number","null"]},"is_day":{"type":["boolean","null"]},"wind_speed_kmh":{"type":"number"},"wind_speed_mph":{"type":"number"},"wind_gusts_kmh":{"type":["number","null"]},"wind_direction_deg":{"type":"number"},"wind_direction":{"type":"string","description":"Cardinal, e.g. \"ESE\""},"air_quality":{"anyOf":[{"type":"object","properties":{"us_aqi":{"description":"US EPA Air Quality Index","type":["number","null"]},"pm2_5":{"description":"µg/m³","type":["number","null"]},"pm10":{"description":"µg/m³","type":["number","null"]},"ozone":{"description":"µg/m³","type":["number","null"]}},"required":["us_aqi","pm2_5","pm10","ozone"]},{"type":"null"}],"description":"null when the air-quality service did not answer"}},"required":["is_raining","precipitation_mm","precipitation_interval_seconds","conditions","temperature_c","temperature_f","humidity_pct","pressure_hpa","cloud_cover_pct","uv_index","is_day","wind_speed_kmh","wind_speed_mph","wind_gusts_kmh","wind_direction_deg","wind_direction","air_quality"]},{"type":"null"}]},"source":{"type":"object","properties":{"name":{"type":"string","description":"Human name of the upstream dataset or service"},"kind":{"type":"string","enum":["live","official","archive","computed"],"description":"live = real-time conditions; official = a regulatory record queried from the authority (current, but a classification — not a condition); archive = our pinned data build; computed = derived here"},"vintage":{"description":"Data vintage, e.g. the \"2026F\" tax roll, or \"live\"","type":"string"},"attribution":{"type":"string"},"note":{"description":"Caveats a careful reader should know (datum, resolution, …)","type":"string"}},"required":["name","kind"]},"reason":{"description":"Present on not_covered / not_available: why there is no answer","type":"string"},"hint":{"description":"What would produce an answer","type":"string"}},"required":["object","layer","name","category","status","summary","data"]},{"type":"object","properties":{"object":{"type":"string","const":"location_section"},"layer":{"type":"string","const":"elevation"},"name":{"type":"string","description":"Display name, e.g. \"FEMA flood zones\""},"category":{"type":"string","enum":["property","classification","geography","conditions"]},"status":{"type":"string","enum":["available","empty","not_covered","not_available"]},"summary":{"type":"string","description":"One plain-language sentence anyone can read — the layman answer"},"data":{"anyOf":[{"type":"object","properties":{"elevation_m":{"type":"number"},"elevation_ft":{"type":"number"},"datum":{"type":"string","description":"Vertical reference of this number"},"model":{"type":"string","description":"What was measured — a satellite surface model includes buildings/canopy and is NOT an elevation-certificate substitute"},"resolution_m":{"type":"number","description":"Grid resolution of the elevation model"},"terrain_status":{"type":"string","enum":["ready","computing","unavailable","no_parcel"],"description":"computing = the first look at this parcel is warming the USGS 3DEP mosaic (~30 s) — ask again shortly; no_parcel = terrain needs a resolved parcel"},"terrain":{"anyOf":[{"type":"object","properties":{"min_ft":{"type":"number"},"max_ft":{"type":"number"},"relief_ft":{"type":"number"},"contour_interval_ft":{"type":"number"},"contour_count":{"type":"number"},"datum":{"type":"string","const":"NAVD88"},"source_resolution_m":{"type":"number"},"clipped_to":{"type":"string","const":"parcel_bbox"},"geometry":{"description":"GeoJSON FeatureCollection of contour LineStrings, each with elevation_ft (include_geometry=true)"}},"required":["min_ft","max_ft","relief_ft","contour_interval_ft","contour_count","datum","source_resolution_m","clipped_to"]},{"type":"null"}],"description":"Parcel-wide bare-earth terrain from USGS 3DEP (~10 m grid) — 1-ft contours; null without a resolved parcel"}},"required":["elevation_m","elevation_ft","datum","model","resolution_m","terrain_status","terrain"]},{"type":"null"}]},"source":{"type":"object","properties":{"name":{"type":"string","description":"Human name of the upstream dataset or service"},"kind":{"type":"string","enum":["live","official","archive","computed"],"description":"live = real-time conditions; official = a regulatory record queried from the authority (current, but a classification — not a condition); archive = our pinned data build; computed = derived here"},"vintage":{"description":"Data vintage, e.g. the \"2026F\" tax roll, or \"live\"","type":"string"},"attribution":{"type":"string"},"note":{"description":"Caveats a careful reader should know (datum, resolution, …)","type":"string"}},"required":["name","kind"]},"reason":{"description":"Present on not_covered / not_available: why there is no answer","type":"string"},"hint":{"description":"What would produce an answer","type":"string"}},"required":["object","layer","name","category","status","summary","data"]},{"type":"object","properties":{"object":{"type":"string","const":"location_section"},"layer":{"type":"string","const":"boundaries"},"name":{"type":"string","description":"Display name, e.g. \"FEMA flood zones\""},"category":{"type":"string","enum":["property","classification","geography","conditions"]},"status":{"type":"string","enum":["available","empty","not_covered","not_available"]},"summary":{"type":"string","description":"One plain-language sentence anyone can read — the layman answer"},"data":{"anyOf":[{"type":"object","properties":{"state":{"type":["string","null"]},"county":{"anyOf":[{"type":"object","properties":{"name":{"description":"Human name, e.g. \"Pinellas\"","type":["string","null"]},"fips":{"description":"5-digit Census FIPS, e.g. \"12103\"","type":["string","null"]},"local_code":{"description":"Florida DOR county code, e.g. 62 — a state-local identifier","type":["number","null"]}},"required":["name","fips","local_code"]},{"type":"null"}]},"zip":{"type":["string","null"]},"precision":{"type":"string","enum":["boundary_file","parcel"],"description":"boundary_file = point-in-polygon on generalized Census boundaries; parcel = taken from the resolved parcel when the generalized file misses (coastal margins)"}},"required":["state","county","zip","precision"]},{"type":"null"}]},"source":{"type":"object","properties":{"name":{"type":"string","description":"Human name of the upstream dataset or service"},"kind":{"type":"string","enum":["live","official","archive","computed"],"description":"live = real-time conditions; official = a regulatory record queried from the authority (current, but a classification — not a condition); archive = our pinned data build; computed = derived here"},"vintage":{"description":"Data vintage, e.g. the \"2026F\" tax roll, or \"live\"","type":"string"},"attribution":{"type":"string"},"note":{"description":"Caveats a careful reader should know (datum, resolution, …)","type":"string"}},"required":["name","kind"]},"reason":{"description":"Present on not_covered / not_available: why there is no answer","type":"string"},"hint":{"description":"What would produce an answer","type":"string"}},"required":["object","layer","name","category","status","summary","data"]},{"type":"object","properties":{"object":{"type":"string","const":"location_section"},"layer":{"type":"string","const":"market"},"name":{"type":"string","description":"Display name, e.g. \"FEMA flood zones\""},"category":{"type":"string","enum":["property","classification","geography","conditions"]},"status":{"type":"string","enum":["available","empty","not_covered","not_available"]},"summary":{"type":"string","description":"One plain-language sentence anyone can read — the layman answer"},"data":{"anyOf":[{"type":"object","properties":{"has_observations":{"type":"boolean"},"observation":{"anyOf":[{"type":"object","properties":{"zpid":{"description":"Zillow property id","type":["string","null"]},"home_type":{"type":["string","null"]},"home_status":{"type":["string","null"]},"bedrooms":{"type":["number","null"]},"bathrooms":{"type":["number","null"]},"living_area_sqft":{"type":["number","null"]},"lot_size_sqft":{"type":["number","null"]},"year_built":{"type":["number","null"]},"estimated_value":{"description":"Zestimate, USD","type":["number","null"]},"estimated_rent_monthly":{"type":["number","null"]},"last_sold_price":{"type":["number","null"]},"last_sold_at":{"type":["string","null"]},"days_on_market":{"type":["number","null"]},"photo_count":{"type":["number","null"]},"listing_url":{"type":["string","null"]},"as_of":{"description":"When the observation was last seen","type":["string","null"]}},"required":["zpid","home_type","home_status","bedrooms","bathrooms","living_area_sqft","lot_size_sqft","year_built","estimated_value","estimated_rent_monthly","last_sold_price","last_sold_at","days_on_market","photo_count","listing_url","as_of"]},{"type":"null"}],"description":"The Zillow-derived observation for this parcel"}},"required":["has_observations","observation"]},{"type":"null"}]},"source":{"type":"object","properties":{"name":{"type":"string","description":"Human name of the upstream dataset or service"},"kind":{"type":"string","enum":["live","official","archive","computed"],"description":"live = real-time conditions; official = a regulatory record queried from the authority (current, but a classification — not a condition); archive = our pinned data build; computed = derived here"},"vintage":{"description":"Data vintage, e.g. the \"2026F\" tax roll, or \"live\"","type":"string"},"attribution":{"type":"string"},"note":{"description":"Caveats a careful reader should know (datum, resolution, …)","type":"string"}},"required":["name","kind"]},"reason":{"description":"Present on not_covered / not_available: why there is no answer","type":"string"},"hint":{"description":"What would produce an answer","type":"string"}},"required":["object","layer","name","category","status","summary","data"]},{"type":"object","properties":{"object":{"type":"string","const":"location_section"},"layer":{"type":"string","const":"tax"},"name":{"type":"string","description":"Display name, e.g. \"FEMA flood zones\""},"category":{"type":"string","enum":["property","classification","geography","conditions"]},"status":{"type":"string","enum":["available","empty","not_covered","not_available"]},"summary":{"type":"string","description":"One plain-language sentence anyone can read — the layman answer"},"data":{"anyOf":[{"type":"object","properties":{"roll":{"description":"The county assessment roll (FL DOR NAL) — recorded values, the authority when present; estimate fields below are Zillow-derived","anyOf":[{"type":"object","properties":{"assessment_year":{"type":["number","null"]},"annual_tax":{"description":"ACTUAL annual tax where the county publishes it (Orange County CA)","type":["number","null"]},"just_value":{"type":["number","null"]},"assessed_value":{"type":["number","null"]},"taxable_value":{"type":["number","null"]},"land_value":{"type":["number","null"]},"dor_use_code":{"type":["string","null"]},"last_sale_price":{"type":["number","null"]},"last_sale_year":{"type":["number","null"]}},"required":["assessment_year","just_value","assessed_value","taxable_value","land_value","dor_use_code","last_sale_price","last_sale_year"]},{"type":"null"}]},"assessed_value":{"description":"County assessed value, USD","type":["number","null"]},"property_tax_rate_pct":{"type":["number","null"]},"estimated_annual_tax":{"type":["number","null"]},"year_built":{"type":["number","null"]}},"required":["assessed_value","property_tax_rate_pct","estimated_annual_tax","year_built"]},{"type":"null"}]},"source":{"type":"object","properties":{"name":{"type":"string","description":"Human name of the upstream dataset or service"},"kind":{"type":"string","enum":["live","official","archive","computed"],"description":"live = real-time conditions; official = a regulatory record queried from the authority (current, but a classification — not a condition); archive = our pinned data build; computed = derived here"},"vintage":{"description":"Data vintage, e.g. the \"2026F\" tax roll, or \"live\"","type":"string"},"attribution":{"type":"string"},"note":{"description":"Caveats a careful reader should know (datum, resolution, …)","type":"string"}},"required":["name","kind"]},"reason":{"description":"Present on not_covered / not_available: why there is no answer","type":"string"},"hint":{"description":"What would produce an answer","type":"string"}},"required":["object","layer","name","category","status","summary","data"]},{"type":"object","properties":{"object":{"type":"string","const":"location_section"},"layer":{"type":"string","const":"zoning"},"name":{"type":"string","description":"Display name, e.g. \"FEMA flood zones\""},"category":{"type":"string","enum":["property","classification","geography","conditions"]},"status":{"type":"string","enum":["available","empty","not_covered","not_available"]},"summary":{"type":"string","description":"One plain-language sentence anyone can read — the layman answer"},"data":{"anyOf":[{"type":"object","properties":{"district":{"type":"string","description":"Zoning district code, e.g. \"DC-C\""},"district_description":{"type":["string","null"]},"jurisdiction":{"type":"string","description":"Which authority answered"},"future_land_use":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"description":{"type":["string","null"]}},"required":["code","description"]},{"type":"null"}]},"land_development_code_url":{"description":"Link to the governing code text where the GIS provides one","type":["string","null"]},"governing_documents":{"description":"The jurisdiction's governing construction/permitting documents — curated, verified deep links into the codified text","type":"array","items":{"type":"object","properties":{"kind":{"type":"string","description":"land_development_code | building_code_administration | floodplain_ordinance | permit_administration | tree_landscaping | impact_fees | …"},"title":{"type":"string","description":"Verbatim table-of-contents title"},"section":{"type":"string"},"url":{"type":"string"},"retrieved_at":{"type":"string"}},"required":["kind","title","url"]}},"setbacks":{"anyOf":[{"type":"object","properties":{"front_ft":{"type":["number","null"]},"side_ft":{"type":["number","null"]},"rear_ft":{"type":["number","null"]}},"required":["front_ft","side_ft","rear_ft"]},{"type":"null"}],"description":"Minimum setbacks from the land development code. null values mean the code expresses a conditional rule — read dimensional_note"},"max_height_ft":{"type":["number","null"]},"max_far":{"type":["number","null"]},"min_lot_sqft":{"type":["number","null"]},"dimensional_note":{"description":"Verbatim conditions from the code where a single number cannot represent the rule (neighborhood-pattern medians, platted-date splits, corner lots)","type":["string","null"]},"dimensional_source":{"anyOf":[{"type":"object","properties":{"url":{"type":"string"},"section":{"type":"string"},"retrieved_at":{"type":"string"}},"required":["url","section","retrieved_at"]},{"type":"null"}],"description":"The exact code section the dimensional numbers came from"}},"required":["district","district_description","jurisdiction","future_land_use","land_development_code_url","setbacks","max_height_ft","max_far","min_lot_sqft","dimensional_note","dimensional_source"]},{"type":"null"}]},"source":{"type":"object","properties":{"name":{"type":"string","description":"Human name of the upstream dataset or service"},"kind":{"type":"string","enum":["live","official","archive","computed"],"description":"live = real-time conditions; official = a regulatory record queried from the authority (current, but a classification — not a condition); archive = our pinned data build; computed = derived here"},"vintage":{"description":"Data vintage, e.g. the \"2026F\" tax roll, or \"live\"","type":"string"},"attribution":{"type":"string"},"note":{"description":"Caveats a careful reader should know (datum, resolution, …)","type":"string"}},"required":["name","kind"]},"reason":{"description":"Present on not_covered / not_available: why there is no answer","type":"string"},"hint":{"description":"What would produce an answer","type":"string"}},"required":["object","layer","name","category","status","summary","data"]},{"type":"object","properties":{"object":{"type":"string","const":"location_section"},"layer":{"type":"string","const":"permits"},"name":{"type":"string","description":"Display name, e.g. \"FEMA flood zones\""},"category":{"type":"string","enum":["property","classification","geography","conditions"]},"status":{"type":"string","enum":["available","empty","not_covered","not_available"]},"summary":{"type":"string","description":"One plain-language sentence anyone can read — the layman answer"},"data":{"anyOf":[{"type":"object","properties":{"permits":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":["string","null"]},"status":{"type":["string","null"]},"description":{"type":["string","null"]},"address":{"type":["string","null"]},"issued_at":{"type":["string","null"]},"url":{"description":"Deep link into the permitting system","type":["string","null"]}},"required":["id","type","status","description","address","issued_at","url"]}},"radius_m":{"type":"number","description":"Search radius around the point"},"feed":{"type":"string","description":"Which authority feed answered"},"feeds_unavailable":{"type":"array","items":{"type":"string"},"description":"Feeds that errored — results may be incomplete when non-empty"}},"required":["permits","radius_m","feed","feeds_unavailable"]},{"type":"null"}]},"source":{"type":"object","properties":{"name":{"type":"string","description":"Human name of the upstream dataset or service"},"kind":{"type":"string","enum":["live","official","archive","computed"],"description":"live = real-time conditions; official = a regulatory record queried from the authority (current, but a classification — not a condition); archive = our pinned data build; computed = derived here"},"vintage":{"description":"Data vintage, e.g. the \"2026F\" tax roll, or \"live\"","type":"string"},"attribution":{"type":"string"},"note":{"description":"Caveats a careful reader should know (datum, resolution, …)","type":"string"}},"required":["name","kind"]},"reason":{"description":"Present on not_covered / not_available: why there is no answer","type":"string"},"hint":{"description":"What would produce an answer","type":"string"}},"required":["object","layer","name","category","status","summary","data"]},{"type":"object","properties":{"object":{"type":"string","const":"location_section"},"layer":{"type":"string","const":"utilities"},"name":{"type":"string","description":"Display name, e.g. \"FEMA flood zones\""},"category":{"type":"string","enum":["property","classification","geography","conditions"]},"status":{"type":"string","enum":["available","empty","not_covered","not_available"]},"summary":{"type":"string","description":"One plain-language sentence anyone can read — the layman answer"},"data":{"anyOf":[{"type":"object","properties":{"wastewater":{"anyOf":[{"type":"string","enum":["sewer","septic"]},{"type":"null"}],"description":"Sewer vs onsite septic, from the FL Water Management Inventory"},"wastewater_confidence":{"anyOf":[{"type":"string","enum":["known","likely"]},{"type":"null"}]},"wastewater_updated":{"type":["string","null"]},"drinking_water":{"type":["string","null"]},"electric_providers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":["string","null"]}},"required":["name","type"]}}},"required":["wastewater","wastewater_confidence","wastewater_updated","drinking_water","electric_providers"]},{"type":"null"}]},"source":{"type":"object","properties":{"name":{"type":"string","description":"Human name of the upstream dataset or service"},"kind":{"type":"string","enum":["live","official","archive","computed"],"description":"live = real-time conditions; official = a regulatory record queried from the authority (current, but a classification — not a condition); archive = our pinned data build; computed = derived here"},"vintage":{"description":"Data vintage, e.g. the \"2026F\" tax roll, or \"live\"","type":"string"},"attribution":{"type":"string"},"note":{"description":"Caveats a careful reader should know (datum, resolution, …)","type":"string"}},"required":["name","kind"]},"reason":{"description":"Present on not_covered / not_available: why there is no answer","type":"string"},"hint":{"description":"What would produce an answer","type":"string"}},"required":["object","layer","name","category","status","summary","data"]}]},"description":"One section per requested layer — the `layers` query param filters this, exactly like toggling layers on the map. New layers appear over time; ignore keys you do not know."},"request_id":{"type":"string"}},"required":["object","as_of","query","point","layers","request_id"]}}}},"400":{"description":"Invalid request","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"401":{"description":"Missing, invalid, expired, or revoked API key.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"403":{"description":"The credential lacks read:public access.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"429":{"description":"Rate limit exceeded. Wait for Retry-After seconds.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"501":{"description":"Parcel-key lookup is unavailable; use coordinates or an address.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"503":{"description":"A required service is unavailable; retry after the indicated delay.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}}}}},"/v1/health":{"get":{"operationId":"getHealth","security":[],"x-openai-isConsequential":false,"summary":"Service health and data-plane status","tags":["platform"],"parameters":[],"responses":{"200":{"description":"Liveness and configured data planes; configuration is not a readiness check.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"object":{"type":"string","const":"health"},"status":{"type":"string","const":"ok"},"time":{"type":"string"},"planes":{"type":"object","properties":{"database":{"type":"string","enum":["configured","not_configured"]},"search_index":{"type":"object","properties":{"items":{"type":"number"}},"required":["items"]},"tile_archives":{"type":"object","properties":{"local":{"type":"array","items":{"type":"string"}},"parcels":{"type":"object","properties":{"status":{"type":"string","enum":["configured","not_configured"]},"archives":{"type":"number"}},"required":["status","archives"]}},"required":["local","parcels"]}},"required":["database","search_index","tile_archives"]}},"required":["object","status","time","planes"]}}}},"503":{"description":"Service temporarily unavailable.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}}}}},"/v1/layers":{"get":{"operationId":"listLayers","x-openai-isConsequential":false,"summary":"List the layer catalog","description":"Every layer the platform knows about, including planned/building ones, with coverage, vintage, attribution, and rendering config. Incomplete data is explicit: consumers must handle status != available.","tags":["layers"],"parameters":[],"responses":{"200":{"description":"Layer list","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string","const":"layer"},"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"category":{"type":"string","enum":["boundary","parcel","hazard","regulatory","market","imagery","infrastructure","environment"]},"status":{"type":"string","enum":["available","building","planned"]},"coverage":{"type":"object","properties":{"label":{"type":"string"},"states":{"type":"array","items":{"type":"string"}},"county_count":{"type":"number"},"feature_count":{"type":"number"}},"required":["label"]},"vintage":{"type":"string"},"attribution":{"type":"string"},"rendering":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"geojson"},"url":{"type":"string"},"geometry":{"type":"string","enum":["polygon","line","point"]},"id_property":{"type":"string"},"label_property":{"type":"string"},"min_zoom":{"type":"number"},"max_zoom":{"type":"number"}},"required":["type","url","geometry","id_property"]},{"type":"object","properties":{"type":{"type":"string","const":"live_geojson"},"query_url":{"type":"string"},"geometry":{"type":"string","enum":["polygon","line","point"]},"min_zoom":{"type":"number"},"label_property":{"type":"string"},"color_by":{"type":"object","properties":{"property":{"type":"string"},"map":{"type":"object","additionalProperties":{"type":"string"}},"default":{"type":"string"}},"required":["property","map"]},"overview_tiles":{"type":"object","properties":{"tile_url":{"type":"string"},"min_zoom":{"type":"number"},"max_zoom":{"type":"number"},"source_layer":{"type":"string"}},"required":["tile_url","min_zoom","max_zoom","source_layer"]}},"required":["type","query_url","geometry","min_zoom"]},{"type":"object","properties":{"type":{"type":"string","const":"vector_tiles"},"sources":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"tile_url":{"type":"string"},"min_zoom":{"type":"number"},"max_zoom":{"type":"number"},"bounds":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"},{"type":"number"}],"items":false,"minItems":4,"maxItems":4},"source_layers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"fields":{"type":"object","additionalProperties":{"type":"string"}},"filter":{"type":"object","properties":{"property":{"type":"string"},"equals":{"type":["string","number","boolean"]}},"required":["property","equals"]}},"required":["id"]}}},"required":["id","tile_url","min_zoom","max_zoom","source_layers"]}},"color_by":{"type":"object","properties":{"property":{"type":"string"},"map":{"type":"object","additionalProperties":{"type":"string"}},"default":{"type":"string"}},"required":["property","map"]},"point_radius":{"type":"number"}},"required":["type","sources"]},{"type":"object","properties":{"type":{"type":"string","const":"raster"},"tile_url":{"type":"string"},"tile_size":{"type":"number"},"min_zoom":{"type":"number"},"max_zoom":{"type":"number"},"opacity":{"type":"number"}},"required":["type","tile_url"]},{"type":"object","properties":{"type":{"type":"string","const":"hillshade"},"dem_url":{"type":"string"},"exaggeration":{"type":"number"}},"required":["type","dem_url"]},{"type":"object","properties":{"type":{"type":"string","const":"none"}},"required":["type"]}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","object","slug","title","category","status","coverage","rendering","created_at","updated_at"]}},"has_more":{"type":"boolean"}},"required":["object","data","has_more"]}}}},"401":{"description":"Missing, invalid, expired, or revoked API key.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"403":{"description":"The credential lacks read:public access.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"429":{"description":"Rate limit exceeded. Wait for Retry-After seconds.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"503":{"description":"Service temporarily unavailable.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}}}}},"/v1/layers/{slug}":{"get":{"operationId":"getLayer","x-openai-isConsequential":false,"summary":"Get a layer by slug","tags":["layers"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Layer slug, e.g. florida-counties"}],"responses":{"200":{"description":"Layer","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"object":{"type":"string","const":"layer"},"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"category":{"type":"string","enum":["boundary","parcel","hazard","regulatory","market","imagery","infrastructure","environment"]},"status":{"type":"string","enum":["available","building","planned"]},"coverage":{"type":"object","properties":{"label":{"type":"string"},"states":{"type":"array","items":{"type":"string"}},"county_count":{"type":"number"},"feature_count":{"type":"number"}},"required":["label"]},"vintage":{"type":"string"},"attribution":{"type":"string"},"rendering":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"geojson"},"url":{"type":"string"},"geometry":{"type":"string","enum":["polygon","line","point"]},"id_property":{"type":"string"},"label_property":{"type":"string"},"min_zoom":{"type":"number"},"max_zoom":{"type":"number"}},"required":["type","url","geometry","id_property"]},{"type":"object","properties":{"type":{"type":"string","const":"live_geojson"},"query_url":{"type":"string"},"geometry":{"type":"string","enum":["polygon","line","point"]},"min_zoom":{"type":"number"},"label_property":{"type":"string"},"color_by":{"type":"object","properties":{"property":{"type":"string"},"map":{"type":"object","additionalProperties":{"type":"string"}},"default":{"type":"string"}},"required":["property","map"]},"overview_tiles":{"type":"object","properties":{"tile_url":{"type":"string"},"min_zoom":{"type":"number"},"max_zoom":{"type":"number"},"source_layer":{"type":"string"}},"required":["tile_url","min_zoom","max_zoom","source_layer"]}},"required":["type","query_url","geometry","min_zoom"]},{"type":"object","properties":{"type":{"type":"string","const":"vector_tiles"},"sources":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"tile_url":{"type":"string"},"min_zoom":{"type":"number"},"max_zoom":{"type":"number"},"bounds":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"},{"type":"number"}],"items":false,"minItems":4,"maxItems":4},"source_layers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"fields":{"type":"object","additionalProperties":{"type":"string"}},"filter":{"type":"object","properties":{"property":{"type":"string"},"equals":{"type":["string","number","boolean"]}},"required":["property","equals"]}},"required":["id"]}}},"required":["id","tile_url","min_zoom","max_zoom","source_layers"]}},"color_by":{"type":"object","properties":{"property":{"type":"string"},"map":{"type":"object","additionalProperties":{"type":"string"}},"default":{"type":"string"}},"required":["property","map"]},"point_radius":{"type":"number"}},"required":["type","sources"]},{"type":"object","properties":{"type":{"type":"string","const":"raster"},"tile_url":{"type":"string"},"tile_size":{"type":"number"},"min_zoom":{"type":"number"},"max_zoom":{"type":"number"},"opacity":{"type":"number"}},"required":["type","tile_url"]},{"type":"object","properties":{"type":{"type":"string","const":"hillshade"},"dem_url":{"type":"string"},"exaggeration":{"type":"number"}},"required":["type","dem_url"]},{"type":"object","properties":{"type":{"type":"string","const":"none"}},"required":["type"]}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","object","slug","title","category","status","coverage","rendering","created_at","updated_at"]}}}},"400":{"description":"Invalid request","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"401":{"description":"Missing, invalid, expired, or revoked API key.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"403":{"description":"The credential lacks read:public access.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"429":{"description":"Rate limit exceeded. Wait for Retry-After seconds.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"503":{"description":"A required service is unavailable; retry after the indicated delay.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}}}}},"/v1/search":{"get":{"operationId":"search","x-openai-isConsequential":false,"summary":"Multi-type autocomplete: addresses, ZIPs, counties, places","description":"Local index (DuckDB: counties, ZIPs) merged with Mapbox address/place autocomplete. Results carry a point and optional bounds.","tags":["search"],"parameters":[{"name":"q","in":"query","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":1,"maxLength":200}},{"name":"limit","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","default":10,"type":"integer","minimum":1,"maximum":50}},{"name":"kinds","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string"}},{"name":"near","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","description":"longitude,latitude proximity bias","type":"string","pattern":"^-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?$"},"description":"longitude,latitude proximity bias"}],"responses":{"200":{"description":"Search results","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string","const":"search_result"},"kind":{"type":"string","enum":["county","zip","parcel","address","place"]},"name":{"type":"string"},"secondary":{"type":"string"},"location":{"type":"object","properties":{"type":{"type":"string","const":"point"},"coordinates":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2}},"required":["type","coordinates"]},"bounds":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"},{"type":"number"}],"items":false,"minItems":4,"maxItems":4}},"required":["id","object","kind","name","location"]}},"has_more":{"type":"boolean"}},"required":["object","data","has_more"]}}}},"400":{"description":"Invalid request","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"401":{"description":"Missing, invalid, expired, or revoked API key.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"403":{"description":"The credential lacks read:public access.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"429":{"description":"Rate limit exceeded. Wait for Retry-After seconds.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"503":{"description":"A required service is unavailable; retry after the indicated delay.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}}}}},"/v1/flood":{"get":{"operationId":"queryFloodZones","x-openai-isConsequential":false,"summary":"FEMA flood zones for a viewport (live NFHL proxy)","description":"GeoJSON FeatureCollection of SFHA + 0.2%-annual-chance flood zones intersecting the bbox. Proxied live from FEMA NFHL layer 28.","tags":["layers"],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?$","description":"west,south,east,north in degrees; maximum span 0.5 degrees"},"description":"west,south,east,north in degrees; maximum span 0.5 degrees"}],"responses":{"200":{"description":"GeoJSON FeatureCollection; exceededTransferLimit indicates truncation.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string","const":"FeatureCollection"},"features":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","const":"Feature"},"id":{"type":["string","number"]},"geometry":{},"properties":{"anyOf":[{"type":"object","additionalProperties":{}},{"type":"null"}]}},"required":["type","geometry","properties"]}},"exceededTransferLimit":{"type":"boolean"}},"required":["type","features"]}}}},"400":{"description":"Invalid request","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"401":{"description":"Missing, invalid, expired, or revoked API key.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"403":{"description":"The credential lacks read:public access.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"429":{"description":"Rate limit exceeded. Wait for Retry-After seconds.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"502":{"description":"Upstream FEMA service unavailable","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"503":{"description":"A required service is unavailable; retry after the indicated delay.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}}}}},"/v1/wetlands":{"get":{"operationId":"queryWetlands","x-openai-isConsequential":false,"summary":"NWI wetlands for a viewport (live USFWS proxy)","description":"GeoJSON FeatureCollection of National Wetlands Inventory polygons intersecting the bbox.","tags":["layers"],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?$","description":"west,south,east,north in degrees; maximum span 0.5 degrees"},"description":"west,south,east,north in degrees; maximum span 0.5 degrees"}],"responses":{"200":{"description":"GeoJSON FeatureCollection; exceededTransferLimit indicates truncation.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string","const":"FeatureCollection"},"features":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","const":"Feature"},"id":{"type":["string","number"]},"geometry":{},"properties":{"anyOf":[{"type":"object","additionalProperties":{}},{"type":"null"}]}},"required":["type","geometry","properties"]}},"exceededTransferLimit":{"type":"boolean"}},"required":["type","features"]}}}},"400":{"description":"Invalid request","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"401":{"description":"Missing, invalid, expired, or revoked API key.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"403":{"description":"The credential lacks read:public access.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"429":{"description":"Rate limit exceeded. Wait for Retry-After seconds.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"502":{"description":"Upstream USFWS service unavailable","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"503":{"description":"A required service is unavailable; retry after the indicated delay.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}}}}},"/v1/wastewater":{"get":{"operationId":"queryWastewater","x-openai-isConsequential":false,"summary":"Sewer vs septic for a viewport (live FLWMI proxy)","description":"GeoJSON FeatureCollection of Florida Water Management Inventory parcels intersecting the bbox — WW is KnownSewer/LikelySewer/KnownSeptic/LikelySeptic, DW the drinking-water class.","tags":["layers"],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?$","description":"west,south,east,north in degrees; maximum span 0.5 degrees"},"description":"west,south,east,north in degrees; maximum span 0.5 degrees"}],"responses":{"200":{"description":"GeoJSON FeatureCollection; exceededTransferLimit indicates truncation.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string","const":"FeatureCollection"},"features":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","const":"Feature"},"id":{"type":["string","number"]},"geometry":{},"properties":{"anyOf":[{"type":"object","additionalProperties":{}},{"type":"null"}]}},"required":["type","geometry","properties"]}},"exceededTransferLimit":{"type":"boolean"}},"required":["type","features"]}}}},"400":{"description":"Invalid request","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"401":{"description":"Missing, invalid, expired, or revoked API key.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"403":{"description":"The credential lacks read:public access.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"429":{"description":"Rate limit exceeded. Wait for Retry-After seconds.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"502":{"description":"Upstream FDOH service unavailable","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"503":{"description":"A required service is unavailable; retry after the indicated delay.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}}}}},"/v1/structures":{"get":{"operationId":"queryStructures","x-openai-isConsequential":false,"summary":"Building footprints for a viewport (live USA Structures proxy)","description":"GeoJSON FeatureCollection of FEMA/ORNL USA Structures footprints intersecting the bbox, with occupancy class and height/area where surveyed.","tags":["layers"],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?$","description":"west,south,east,north in degrees; maximum span 0.5 degrees"},"description":"west,south,east,north in degrees; maximum span 0.5 degrees"}],"responses":{"200":{"description":"GeoJSON FeatureCollection; exceededTransferLimit indicates truncation.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string","const":"FeatureCollection"},"features":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","const":"Feature"},"id":{"type":["string","number"]},"geometry":{},"properties":{"anyOf":[{"type":"object","additionalProperties":{}},{"type":"null"}]}},"required":["type","geometry","properties"]}},"exceededTransferLimit":{"type":"boolean"}},"required":["type","features"]}}}},"400":{"description":"Invalid request","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"401":{"description":"Missing, invalid, expired, or revoked API key.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"403":{"description":"The credential lacks read:public access.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"429":{"description":"Rate limit exceeded. Wait for Retry-After seconds.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"502":{"description":"Upstream federal service unavailable","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"503":{"description":"A required service is unavailable; retry after the indicated delay.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}}}}},"/v1/changes":{"get":{"operationId":"getChanges","x-openai-isConsequential":false,"summary":"The change feed — version stamps per data plane","description":"Honest version stamps, not fabricated event history: every pinned plane (69 county parcel archives, the market warehouse) carries a `version` (vintage + build digest). Poll and compare — a changed version means that plane was re-pinned. Live sections have no version to watch. Per-parcel diffs land when consecutive vintages are held side by side.","tags":["platform"],"parameters":[],"responses":{"200":{"description":"Change feed","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"object":{"type":"string","const":"change_feed"},"as_of":{"type":"string"},"note":{"type":"string"},"planes":{"type":"object","properties":{"parcels":{"type":"array","items":{"type":"object","properties":{"plane":{"type":"string","const":"parcels"},"alias":{"type":"string"},"county":{"type":"string"},"kind":{"type":"string"},"vintage":{"type":"string"},"version":{"type":"string"},"feature_count":{"type":"number"}},"required":["plane","alias","county","kind","vintage","version","feature_count"]}},"market":{"anyOf":[{"type":"object","properties":{"plane":{"type":"string","const":"market_observations"},"version":{"type":"string"},"import_vintages":{"type":"array","items":{"type":"string"}},"note":{"type":"string"}},"required":["plane","version","import_vintages","note"]},{"type":"object","properties":{"plane":{"type":"string","const":"market_observations"},"status":{"type":"string","const":"not_available"},"note":{"type":"string"}},"required":["plane","status","note"]}]}},"required":["parcels","market"]}},"required":["object","as_of","note","planes"]}}}},"401":{"description":"Missing, invalid, expired, or revoked API key.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"403":{"description":"The credential lacks read:public access.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"429":{"description":"Rate limit exceeded. Wait for Retry-After seconds.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"503":{"description":"Service temporarily unavailable.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}}}}},"/v1/coverage":{"get":{"operationId":"getCoverage","x-openai-isConsequential":false,"summary":"The completeness scorecard — where each section answers","description":"Per-county matrix of what /v1/location can answer at what depth across the Tampa–Orlando region (full | partial | not_covered, with notes), plus the statewide sections that answer at any Florida point. Derived from the same constants the resolvers gate on.","tags":["location"],"parameters":[],"responses":{"200":{"description":"Coverage scorecard","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"object":{"type":"string","const":"coverage"},"region":{"type":"string"},"section_names":{"type":"object","additionalProperties":{"type":"string"}},"statewide":{"type":"object","additionalProperties":{"type":"object","properties":{"status":{"type":"string","enum":["full","partial","not_covered"]},"note":{"type":"string"}},"required":["status"]}},"counties":{"type":"array","items":{"type":"object","properties":{"county":{"type":"string"},"sections":{"type":"object","additionalProperties":{"type":"object","properties":{"status":{"type":"string","enum":["full","partial","not_covered"]},"note":{"type":"string"}},"required":["status"]}}},"required":["county","sections"]}}},"required":["object","region","section_names","statewide","counties"]}}}},"401":{"description":"Missing, invalid, expired, or revoked API key.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"403":{"description":"The credential lacks read:public access.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"429":{"description":"Rate limit exceeded. Wait for Retry-After seconds.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"503":{"description":"Service temporarily unavailable.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}}}}},"/v1/parcels":{"get":{"operationId":"lookupParcels","x-openai-isConsequential":false,"summary":"Look up parcels (point-in-polygon)","description":"PostGIS-backed. Returns `not_available` until DATABASE_URL points at a migrated PostGIS database.","tags":["parcels"],"parameters":[{"name":"point","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?$"}},{"name":"limit","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","default":50,"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Parcels","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string","const":"parcel"},"parcel_key":{"type":"string"},"geometry_kind":{"type":"string","enum":["polygon","centroid","none"]},"county":{"type":"object","properties":{"fips":{"type":"string"},"name":{"type":"string"}},"required":["fips"]},"situs":{"type":"object","properties":{"street":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postal_code":{"type":"string"}}},"vintage":{"type":"string"},"geometry":{},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","object","parcel_key","geometry_kind","county","created_at","updated_at"]}},"has_more":{"type":"boolean"}},"required":["object","data","has_more"]}}}},"400":{"description":"Invalid request","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"401":{"description":"Missing, invalid, expired, or revoked API key.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"403":{"description":"The credential lacks read:public access.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"429":{"description":"Rate limit exceeded. Wait for Retry-After seconds.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"503":{"description":"A required service is unavailable; retry after the indicated delay.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}}}}},"/v1/parcels/{id}":{"get":{"operationId":"getParcel","x-openai-isConsequential":false,"summary":"Get a parcel by id","tags":["parcels"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Prefixed parcel id (parcel_…)"}],"responses":{"200":{"description":"Parcel","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"object":{"type":"string","const":"parcel"},"parcel_key":{"type":"string"},"geometry_kind":{"type":"string","enum":["polygon","centroid","none"]},"county":{"type":"object","properties":{"fips":{"type":"string"},"name":{"type":"string"}},"required":["fips"]},"situs":{"type":"object","properties":{"street":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postal_code":{"type":"string"}}},"vintage":{"type":"string"},"geometry":{},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","object","parcel_key","geometry_kind","county","created_at","updated_at"]}}}},"400":{"description":"Invalid request","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"401":{"description":"Missing, invalid, expired, or revoked API key.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"403":{"description":"The credential lacks read:public access.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"404":{"description":"Not found","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"429":{"description":"Rate limit exceeded. Wait for Retry-After seconds.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}},"503":{"description":"A required service is unavailable; retry after the indicated delay.","headers":{"X-Request-Id":{"description":"Support correlation identifier.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","not_found","not_available","not_implemented","unauthorized","forbidden","rate_limited","internal_error"]},"message":{"type":"string"},"param":{"type":"string"},"hint":{"type":"string"},"request_id":{"type":"string"}},"required":["code","message","request_id"]}},"required":["error"]}}}}}}}}}