{
    "openapi": "3.0.3",
    "info": {
        "title": "MapWise API",
        "version": "2026-11-14+c8f9fa16597e",
        "description": "Programmatic access to Florida property data across all 67 counties. Search parcels by owner, PIN, address, acreage, sales, value, and more. Every input is public record, sourced directly from the county property appraisers and the Florida Department of Revenue, with zero licensed or third-party-aggregated data. This API is for targeted queries and integrations, not bulk data download.",
        "x-mapwise-limits": {
            "secret_keys_per_user": 10,
            "publishable_keys_per_account": 10
        },
        "x-mapwise-key-format": {
            "secret": {
                "prefix": "mw_sk_"
            },
            "publishable": {
                "prefix": "mw_pk_"
            }
        }
    },
    "servers": [
        {
            "url": "https://www.mapwise.com/api_v2",
            "description": "`/api_v2` is the service's path, not a version number: the resources beneath it are not versioned individually."
        }
    ],
    "tags": [
        {
            "name": "Parcels",
            "description": "Parcel search and retrieval."
        },
        {
            "name": "Map Tiles",
            "description": "Aerial imagery as XYZ raster tiles, with a TileJSON document per tileset. Takes a publishable key in the query string."
        },
        {
            "name": "Reports",
            "description": "Property and flood reports for a parcel, as a PDF: create one, then fetch it, its PDF or its page-1 preview."
        }
    ],
    "paths": {
        "/parcels": {
            "get": {
                "tags": [
                    "Parcels"
                ],
                "summary": "Search parcels",
                "description": "Full parcel search across all 67 counties. Requires an API key. Billed per record returned. Combine spatial, owner, value, and characteristic filters; paginate with `limit`/`offset`.",
                "operationId": "searchParcels",
                "security": [
                    {
                        "ApiKeyHeader": []
                    },
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "format",
                        "in": "query",
                        "required": false,
                        "description": "Response format. Case-insensitive.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "JSON",
                                "HTML"
                            ]
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Page size, 1 to 100. Reduce the page size and paginate with offset.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                        }
                    },
                    {
                        "name": "start",
                        "in": "query",
                        "required": false,
                        "description": "Row offset, and an alias of `offset`. Send both and `start` wins. Deprecated: use `offset` instead.",
                        "schema": {
                            "type": "integer",
                            "minimum": 0
                        },
                        "deprecated": true
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "required": false,
                        "description": "Row offset for pagination. Ignored when `start` is also sent.",
                        "schema": {
                            "type": "integer",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Sort direction. Case-insensitive.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "ASC",
                                "DESC"
                            ]
                        }
                    },
                    {
                        "name": "dir",
                        "in": "query",
                        "required": false,
                        "description": "Sort direction. Deprecated: use `order` instead. Case-insensitive.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "ASC",
                                "DESC"
                            ]
                        },
                        "deprecated": true
                    },
                    {
                        "name": "sortBy",
                        "in": "query",
                        "required": false,
                        "description": "Field to sort by. Case-insensitive.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "owner",
                                "county",
                                "pin",
                                "acres",
                                "sale_date"
                            ]
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "Field to sort by. Deprecated: use `sortBy` instead. Case-insensitive.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "owner",
                                "county",
                                "pin",
                                "acres",
                                "sale_date"
                            ]
                        },
                        "deprecated": true
                    },
                    {
                        "name": "bufferPoint",
                        "in": "query",
                        "required": false,
                        "description": "Treat lat_lon as the center of a buffer. Also accepts 1/0 and yes/no.",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "bufferMeters",
                        "in": "query",
                        "required": false,
                        "description": "Used with `bufferPoint`. Buffer radius in METRES (1-50000). 1 mile ~ 1609, 1 foot ~ 0.3.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 50000
                        }
                    },
                    {
                        "name": "includeGeometry",
                        "in": "query",
                        "required": false,
                        "description": "Include parcel geometry in the response. Also accepts 1/0 and yes/no.",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "includeLegal",
                        "in": "query",
                        "required": false,
                        "description": "Include the legal description. Also accepts 1/0 and yes/no.",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "geometry",
                        "in": "query",
                        "required": false,
                        "description": "Older spelling of `includeGeometry`. Deprecated: use `includeGeometry` instead. Also accepts 1/0 and yes/no.",
                        "schema": {
                            "type": "boolean"
                        },
                        "deprecated": true
                    },
                    {
                        "name": "searchCounty",
                        "in": "query",
                        "required": false,
                        "description": "County name; `ALL` for statewide. Case-insensitive. Spaces, underscores and hyphens are interchangeable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "ALACHUA",
                                "BAKER",
                                "BAY",
                                "BRADFORD",
                                "BREVARD",
                                "BROWARD",
                                "CALHOUN",
                                "CHARLOTTE",
                                "CITRUS",
                                "CLAY",
                                "COLLIER",
                                "COLUMBIA",
                                "DESOTO",
                                "DIXIE",
                                "DUVAL",
                                "ESCAMBIA",
                                "FLAGLER",
                                "FRANKLIN",
                                "GADSDEN",
                                "GILCHRIST",
                                "GLADES",
                                "GULF",
                                "HAMILTON",
                                "HARDEE",
                                "HENDRY",
                                "HERNANDO",
                                "HIGHLANDS",
                                "HILLSBOROUGH",
                                "HOLMES",
                                "INDIAN_RIVER",
                                "JACKSON",
                                "JEFFERSON",
                                "LAKE",
                                "LAFAYETTE",
                                "LEE",
                                "LEON",
                                "LEVY",
                                "LIBERTY",
                                "MADISON",
                                "MANATEE",
                                "MARION",
                                "MARTIN",
                                "MIAMI-DADE",
                                "MONROE",
                                "NASSAU",
                                "OKALOOSA",
                                "OKEECHOBEE",
                                "ORANGE",
                                "OSCEOLA",
                                "PALM_BEACH",
                                "PASCO",
                                "PINELLAS",
                                "POLK",
                                "PUTNAM",
                                "ST_JOHNS",
                                "ST_LUCIE",
                                "SANTA_ROSA",
                                "SARASOTA",
                                "SEMINOLE",
                                "SUMTER",
                                "SUWANNEE",
                                "TAYLOR",
                                "UNION",
                                "VOLUSIA",
                                "WAKULLA",
                                "WALTON",
                                "WASHINGTON",
                                "ALL"
                            ]
                        }
                    },
                    {
                        "name": "searchCountyMulti",
                        "in": "query",
                        "required": false,
                        "description": "Several counties, case- and separator-insensitive. NOTE: when combined with `searchCounty`, the two are AND-ed: sending both narrows to the intersection, and disjoint sets return an empty 200. (Behavior tracked in api_v2#1602.) Comma-separated list. Allowed values: ALACHUA, BAKER, BAY, BRADFORD, BREVARD, BROWARD, CALHOUN, CHARLOTTE, CITRUS, CLAY, COLLIER, COLUMBIA, DESOTO, DIXIE, DUVAL, ESCAMBIA, FLAGLER, FRANKLIN, GADSDEN, GILCHRIST, GLADES, GULF, HAMILTON, HARDEE, HENDRY, HERNANDO, HIGHLANDS, HILLSBOROUGH, HOLMES, INDIAN_RIVER, JACKSON, JEFFERSON, LAKE, LAFAYETTE, LEE, LEON, LEVY, LIBERTY, MADISON, MANATEE, MARION, MARTIN, MIAMI-DADE, MONROE, NASSAU, OKALOOSA, OKEECHOBEE, ORANGE, OSCEOLA, PALM_BEACH, PASCO, PINELLAS, POLK, PUTNAM, ST_JOHNS, ST_LUCIE, SANTA_ROSA, SARASOTA, SEMINOLE, SUMTER, SUWANNEE, TAYLOR, UNION, VOLUSIA, WAKULLA, WALTON, WASHINGTON, ALL.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "searchOwner",
                        "in": "query",
                        "required": false,
                        "description": "Owner name (partial match).",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\s\\-\\.]+$"
                        }
                    },
                    {
                        "name": "searchMailing",
                        "in": "query",
                        "required": false,
                        "description": "Owner mailing address (partial match).",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\s\\-\\.#]+$"
                        }
                    },
                    {
                        "name": "searchPin",
                        "in": "query",
                        "required": false,
                        "description": "Parcel identification number (supports `*` wildcard).",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\s\\-\\.\\*]+$"
                        }
                    },
                    {
                        "name": "searchParcelId",
                        "in": "query",
                        "required": false,
                        "description": "Parcel ID (supports `*` wildcard).",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\s\\-\\.\\*]+$"
                        }
                    },
                    {
                        "name": "searchCity",
                        "in": "query",
                        "required": false,
                        "description": "Site city.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z\\s\\-\\.]+$"
                        }
                    },
                    {
                        "name": "searchCityOwner",
                        "in": "query",
                        "required": false,
                        "description": "Owner-address city.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z\\s\\-\\.]+$"
                        }
                    },
                    {
                        "name": "searchStateOwner",
                        "in": "query",
                        "required": false,
                        "description": "Owner-address state.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z\\s\\-\\.]+$"
                        }
                    },
                    {
                        "name": "searchZipcodeOwner",
                        "in": "query",
                        "required": false,
                        "description": "Owner-address ZIP (5-digit or ZIP+4).",
                        "schema": {
                            "type": "string",
                            "pattern": "^\\d{5}(?:-\\d{4})?$"
                        }
                    },
                    {
                        "name": "searchAddress",
                        "in": "query",
                        "required": false,
                        "description": "Site street address (partial match).",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\s\\-\\.#]+$"
                        }
                    },
                    {
                        "name": "searchNumber",
                        "in": "query",
                        "required": false,
                        "description": "Site street number.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\s\\-\\.]+$"
                        }
                    },
                    {
                        "name": "searchStreet",
                        "in": "query",
                        "required": false,
                        "description": "Site street name.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\s\\-\\.]+$"
                        }
                    },
                    {
                        "name": "searchUnit",
                        "in": "query",
                        "required": false,
                        "description": "Site unit.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\s\\-\\.#@]+$"
                        }
                    },
                    {
                        "name": "searchAcresMin",
                        "in": "query",
                        "required": false,
                        "description": "Smallest parcel size, in acres.",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "searchAcresMax",
                        "in": "query",
                        "required": false,
                        "description": "Largest parcel size, in acres.",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "searchAcres1",
                        "in": "query",
                        "required": false,
                        "description": "Older spelling of `searchAcresMin`. Deprecated: use `searchAcresMin` instead.",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        },
                        "deprecated": true
                    },
                    {
                        "name": "searchAcres2",
                        "in": "query",
                        "required": false,
                        "description": "Older spelling of `searchAcresMax`. Deprecated: use `searchAcresMax` instead.",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        },
                        "deprecated": true
                    },
                    {
                        "name": "saleAmountMin",
                        "in": "query",
                        "required": false,
                        "description": "Lowest sale price, in dollars.",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "saleAmountMax",
                        "in": "query",
                        "required": false,
                        "description": "Highest sale price, in dollars.",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "saleDateMin",
                        "in": "query",
                        "required": false,
                        "description": "Earliest sale date (YYYY-MM-DD).",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "saleDateMax",
                        "in": "query",
                        "required": false,
                        "description": "Latest sale date (YYYY-MM-DD).",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "lat_lon",
                        "in": "query",
                        "required": false,
                        "description": "Point \"lat,lon\" for point-in-parcel search.",
                        "schema": {
                            "type": "string",
                            "pattern": "^-?\\d+(?:\\.\\d+)?,-?\\d+(?:\\.\\d+)?$"
                        }
                    },
                    {
                        "name": "bbox",
                        "in": "query",
                        "required": false,
                        "description": "Bounding box xmin,ymin,xmax,ymax (EPSG:4326).",
                        "schema": {
                            "type": "string",
                            "pattern": "^-?\\d+(?:\\.\\d+)?,-?\\d+(?:\\.\\d+)?,-?\\d+(?:\\.\\d+)?,-?\\d+(?:\\.\\d+)?$"
                        }
                    },
                    {
                        "name": "searchZipcode",
                        "in": "query",
                        "required": false,
                        "description": "Site ZIP (5-digit or ZIP+4).",
                        "schema": {
                            "type": "string",
                            "pattern": "^\\d{5}(?:-\\d{4})?$"
                        }
                    },
                    {
                        "name": "searchSqftHtdMin",
                        "in": "query",
                        "required": false,
                        "description": "Smallest heated area, in square feet.",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "searchSqftHtdMax",
                        "in": "query",
                        "required": false,
                        "description": "Largest heated area, in square feet.",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "searchSqftTotMin",
                        "in": "query",
                        "required": false,
                        "description": "Smallest total building area, in square feet.",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "searchSqftTotMax",
                        "in": "query",
                        "required": false,
                        "description": "Largest total building area, in square feet.",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "searchSqftAdjMin",
                        "in": "query",
                        "required": false,
                        "description": "Smallest adjusted building area, in square feet.",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "searchSqftAdjMax",
                        "in": "query",
                        "required": false,
                        "description": "Largest adjusted building area, in square feet.",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "searchYearBuiltMin",
                        "in": "query",
                        "required": false,
                        "description": "Earliest actual year built.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1500,
                            "maximum": 2200
                        }
                    },
                    {
                        "name": "searchYearBuiltMax",
                        "in": "query",
                        "required": false,
                        "description": "Latest actual year built.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1500,
                            "maximum": 2200
                        }
                    },
                    {
                        "name": "searchYearBuiltEffMin",
                        "in": "query",
                        "required": false,
                        "description": "Earliest effective year built.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1500,
                            "maximum": 2200
                        }
                    },
                    {
                        "name": "searchYearBuiltEffMax",
                        "in": "query",
                        "required": false,
                        "description": "Latest effective year built.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1500,
                            "maximum": 2200
                        }
                    },
                    {
                        "name": "searchMarketValueMin",
                        "in": "query",
                        "required": false,
                        "description": "Lowest total market value, in dollars.",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "searchMarketValueMax",
                        "in": "query",
                        "required": false,
                        "description": "Highest total market value, in dollars.",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "searchLandUse",
                        "in": "query",
                        "required": false,
                        "description": "DOR land-use code(s), comma-separated.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\s\\-_\\.,]+$"
                        }
                    },
                    {
                        "name": "searchLandUse4",
                        "in": "query",
                        "required": false,
                        "description": "4-digit land-use code(s), comma-separated.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\s\\-_\\.,]+$"
                        }
                    },
                    {
                        "name": "searchSubdivision",
                        "in": "query",
                        "required": false,
                        "description": "Subdivision name (partial match).",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\s\\-_\\.]+$"
                        }
                    },
                    {
                        "name": "searchLegal",
                        "in": "query",
                        "required": false,
                        "description": "Legal description (partial match). Format: `^[\\p{L}\\p{N}\\s\\-_\\.,#*@&\\/:'\"()]+$`, Unicode.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "searchBook",
                        "in": "query",
                        "required": false,
                        "description": "Official records book of the sale.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\s\\-_\\.]+$"
                        }
                    },
                    {
                        "name": "searchPage",
                        "in": "query",
                        "required": false,
                        "description": "Official records page of the sale.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\s\\-_\\.]+$"
                        }
                    },
                    {
                        "name": "searchDocnum",
                        "in": "query",
                        "required": false,
                        "description": "Official records document number of the sale.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\s\\-_\\.]+$"
                        }
                    },
                    {
                        "name": "searchGeometry",
                        "in": "query",
                        "required": false,
                        "description": "Geometry for spatial search, as WKT or GeoJSON geometry text.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\s\\(\\),\\.\\-\\{\\}\\[\\]\":]+$"
                        }
                    }
                ],
                "x-mapwise-sample-query": {
                    "searchCounty": "ALACHUA",
                    "limit": 1
                },
                "responses": {
                    "200": {
                        "description": "Matching parcels.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Global-Limit": {
                                "$ref": "#/components/headers/RateLimitGlobalLimit"
                            },
                            "X-RateLimit-Global-Remaining": {
                                "$ref": "#/components/headers/RateLimitGlobalRemaining"
                            },
                            "X-RateLimit-Global-Reset": {
                                "$ref": "#/components/headers/RateLimitGlobalReset"
                            },
                            "X-RateLimit-Bucket-Capacity": {
                                "$ref": "#/components/headers/RateLimitBucketCapacity"
                            },
                            "X-RateLimit-Bucket-Remaining": {
                                "$ref": "#/components/headers/RateLimitBucketRemaining"
                            },
                            "X-RateLimit-Bucket-Refill-Rate": {
                                "$ref": "#/components/headers/RateLimitBucketRefillRate"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ParcelSearchResponse"
                                },
                                "example": {
                                    "success": true,
                                    "status": 200,
                                    "timestamp": "2026-08-14 15:03:35.336350",
                                    "meta": {
                                        "record_count": 2,
                                        "total_count": 108938
                                    },
                                    "data": [
                                        {
                                            "meta": {
                                                "ogc_fid": 1058677512,
                                                "county": "ALACHUA",
                                                "extracted_at": "20260814",
                                                "count": 1,
                                                "pa_pin_link": "https://qpublic.schneidercorp.com/Application.aspx?AppID=1081&LayerID=26490&PageTypeID=4&PageID=10770&Q=422075161&KeyValue=12057-000-000"
                                            },
                                            "identifiers": {
                                                "pin": "12057-000-000",
                                                "pin_clean": "12057000000",
                                                "pin2": null,
                                                "pin2_clean": null,
                                                "altkey": null,
                                                "prop_details": null
                                            },
                                            "owner": {
                                                "primary_name": "1000 SE 7TH LLC",
                                                "secondary_name": null,
                                                "tertiary_name": null,
                                                "address_line1": "1882 CARIBBEAN RD W",
                                                "address_line2": null,
                                                "address_line3": null,
                                                "city": "WEST PALM BEACH",
                                                "state": "FL",
                                                "zipcode": "33406"
                                            },
                                            "site": {
                                                "address": null,
                                                "city": null,
                                                "zipcode": null,
                                                "subdivision": "WAITES, W.H. BLKS 4&5 R 2 (ROPERS ADDN)",
                                                "subdivision_common": null,
                                                "subdivision_id": "209300",
                                                "condo": "NO"
                                            },
                                            "land": {
                                                "acres_deed": null,
                                                "acres_gis": 0.10391214201781951,
                                                "zoning": "SF",
                                                "land_use": {
                                                    "luse": "0000",
                                                    "luse_desc": "VACANT RESIDENTIAL",
                                                    "lusedor": "00",
                                                    "lusedor_desc": "Vacant Residential"
                                                }
                                            },
                                            "building": {
                                                "num_buildings": null,
                                                "stories": null,
                                                "sqft": {
                                                    "heated": null,
                                                    "total": null,
                                                    "adjusted": null
                                                },
                                                "total_sqft": null,
                                                "heated_sqft": null,
                                                "year_built_actual": null,
                                                "year_built_effective": null,
                                                "beds": null,
                                                "baths": {
                                                    "full": null,
                                                    "half": null
                                                }
                                            },
                                            "valuation": {
                                                "market": {
                                                    "building": 0,
                                                    "improvements": null,
                                                    "land": 58000,
                                                    "ag": 0,
                                                    "total": 58000
                                                },
                                                "assessed_total": 5500,
                                                "exempt_total": 0,
                                                "taxable_total": 5500
                                            },
                                            "sales": {
                                                "recent": {
                                                    "date": "2025-12-10",
                                                    "amount": 50000,
                                                    "type": "WD        ",
                                                    "qual": "Q",
                                                    "vac": "Vac",
                                                    "book": "5247                ",
                                                    "page": "1849                ",
                                                    "docnum": null,
                                                    "grantor": null
                                                },
                                                "previous": [
                                                    {
                                                        "date": "2016-08-18",
                                                        "amount": 3800,
                                                        "type": "TD        ",
                                                        "qual": "U",
                                                        "vac": "Vac",
                                                        "book": "4455                ",
                                                        "page": "0104                ",
                                                        "docnum": null,
                                                        "grantor": null
                                                    },
                                                    {
                                                        "date": "2016-07-21",
                                                        "amount": 200,
                                                        "type": "WD        ",
                                                        "qual": "U",
                                                        "vac": "Vac",
                                                        "book": "4450                ",
                                                        "page": "1046                ",
                                                        "docnum": null,
                                                        "grantor": null
                                                    }
                                                ]
                                            }
                                        },
                                        {
                                            "meta": {
                                                "ogc_fid": 1058717328,
                                                "county": "ALACHUA",
                                                "extracted_at": "20260814",
                                                "count": 2,
                                                "pa_pin_link": "https://qpublic.schneidercorp.com/Application.aspx?AppID=1081&LayerID=26490&PageTypeID=4&PageID=10770&Q=422075161&KeyValue=12739-000-000"
                                            },
                                            "identifiers": {
                                                "pin": "12739-000-000",
                                                "pin_clean": "12739000000",
                                                "pin2": null,
                                                "pin2_clean": null,
                                                "altkey": null,
                                                "prop_details": null
                                            },
                                            "owner": {
                                                "primary_name": "1000 SE 7TH LLC",
                                                "secondary_name": null,
                                                "tertiary_name": null,
                                                "address_line1": "1882 CARIBBEAN RD",
                                                "address_line2": null,
                                                "address_line3": null,
                                                "city": "W PALM BEACH",
                                                "state": "FL",
                                                "zipcode": "33406"
                                            },
                                            "site": {
                                                "address": "1000 SE 7TH AVE",
                                                "city": "GAINESVILLE",
                                                "zipcode": "32601",
                                                "subdivision": "N/A",
                                                "subdivision_common": null,
                                                "subdivision_id": "000000",
                                                "condo": "NO"
                                            },
                                            "land": {
                                                "acres_deed": null,
                                                "acres_gis": 0.07565936131091587,
                                                "zoning": "SF",
                                                "land_use": {
                                                    "luse": "0100",
                                                    "luse_desc": "SFR",
                                                    "lusedor": "01",
                                                    "lusedor_desc": "Single Family Residential"
                                                }
                                            },
                                            "building": {
                                                "num_buildings": null,
                                                "stories": null,
                                                "sqft": {
                                                    "heated": 1170,
                                                    "total": null,
                                                    "adjusted": null
                                                },
                                                "total_sqft": null,
                                                "heated_sqft": 1170,
                                                "year_built_actual": 2023,
                                                "year_built_effective": 2023,
                                                "beds": null,
                                                "baths": {
                                                    "full": null,
                                                    "half": null
                                                }
                                            },
                                            "valuation": {
                                                "market": {
                                                    "building": 140623,
                                                    "improvements": null,
                                                    "land": 29000,
                                                    "ag": 0,
                                                    "total": 169623
                                                },
                                                "assessed_total": 161876,
                                                "exempt_total": 0,
                                                "taxable_total": 161876
                                            },
                                            "sales": {
                                                "recent": {
                                                    "date": "2023-01-16",
                                                    "amount": 100,
                                                    "type": "SD        ",
                                                    "qual": "U",
                                                    "vac": "No",
                                                    "book": "5066                ",
                                                    "page": "1942                ",
                                                    "docnum": null,
                                                    "grantor": null
                                                },
                                                "previous": [
                                                    {
                                                        "date": "2022-01-17",
                                                        "amount": 100,
                                                        "type": "SD        ",
                                                        "qual": "U",
                                                        "vac": "No",
                                                        "book": "4969                ",
                                                        "page": "1069                ",
                                                        "docnum": null,
                                                        "grantor": null
                                                    },
                                                    {
                                                        "date": "2020-06-02",
                                                        "amount": 6000,
                                                        "type": "WD        ",
                                                        "qual": "Q",
                                                        "vac": "Vac",
                                                        "book": "4783                ",
                                                        "page": "1565                ",
                                                        "docnum": null,
                                                        "grantor": null
                                                    }
                                                ]
                                            }
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid parameter.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid API key.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                },
                                "example": {
                                    "success": false,
                                    "status": 401,
                                    "timestamp": "2026-09-20 16:11:27.245502",
                                    "errormsg": "Authentication required"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Wrong key class, or a website the key does not list. A publishable key cannot read data (code KEY_CLASS_MISMATCH).",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                },
                                "example": {
                                    "success": false,
                                    "status": 403,
                                    "timestamp": "2026-09-20 16:38:29.878128",
                                    "errormsg": "This publishable key is limited to tiles; use a secret API key for this endpoint.",
                                    "data": {
                                        "code": "KEY_CLASS_MISMATCH"
                                    }
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit or spend cap exceeded. These are two different bodies: a rate limit is the standard error envelope, a spend cap is its own shape carrying the billing state you need to recover. Check for a top-level `error` of spend_cap_exceeded to tell them apart.",
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait. On a spend cap this is the time to the period reset, which can be days.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-Billing-Period-Reset": {
                                "description": "On a spend cap: when the current billing period resets, ISO 8601 UTC.",
                                "schema": {
                                    "type": "string",
                                    "example": "2026-11-01T00:00:00Z"
                                }
                            },
                            "X-Billing-Period-Cap-Cents": {
                                "description": "On a spend cap: the monthly spend cap the account set, in cents. Calls stop at included usage plus this cap.",
                                "schema": {
                                    "type": "integer",
                                    "example": 10000
                                }
                            },
                            "X-Billing-Period-Included-Cents": {
                                "description": "On a spend cap: the usage included in the plan this month, in cents (0 when none). Calls stop at this plus the cap.",
                                "schema": {
                                    "type": "integer",
                                    "example": 0
                                }
                            },
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Global-Limit": {
                                "$ref": "#/components/headers/RateLimitGlobalLimit"
                            },
                            "X-RateLimit-Global-Remaining": {
                                "$ref": "#/components/headers/RateLimitGlobalRemaining"
                            },
                            "X-RateLimit-Global-Reset": {
                                "$ref": "#/components/headers/RateLimitGlobalReset"
                            },
                            "X-RateLimit-Bucket-Capacity": {
                                "$ref": "#/components/headers/RateLimitBucketCapacity"
                            },
                            "X-RateLimit-Bucket-Remaining": {
                                "$ref": "#/components/headers/RateLimitBucketRemaining"
                            },
                            "X-RateLimit-Bucket-Refill-Rate": {
                                "$ref": "#/components/headers/RateLimitBucketRefillRate"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "$ref": "#/components/schemas/ErrorEnvelope"
                                        },
                                        {
                                            "$ref": "#/components/schemas/SpendCapExceeded"
                                        }
                                    ]
                                },
                                "example": {
                                    "success": false,
                                    "status": 429,
                                    "errormsg": "Your spend cap for this billing period is reached. It resets at 2026-10-01T00:00:00Z. Ask an account billing admin to raise it, or wait until it resets.",
                                    "type": "https://www.mapwise.com/api_v2/problems/spend_cap_exceeded",
                                    "title": "Spend cap reached",
                                    "detail": "Your spend cap for this billing period is reached. It resets at 2026-10-01T00:00:00Z. Ask an account billing admin to raise it, or wait until it resets.",
                                    "code": "spend_cap_exceeded",
                                    "error": "spend_cap_exceeded",
                                    "endpoint": "parcels",
                                    "current_spend_cents": 0,
                                    "included_cents": 0,
                                    "cap_cents": 1,
                                    "reset_at": "2026-10-01T00:00:00Z",
                                    "estimated_call_cost_cents": 5,
                                    "request_id": "01a0c08c-e838-75cf-a2a8-faf9f0d44ece",
                                    "resets_at": "2026-10-01T00:00:00Z"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Unexpected server failure.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    }
                },
                "x-mapwise-rate-limit": {
                    "bucket": "account",
                    "requests_per_second": 10,
                    "burst": 600
                }
            }
        },
        "/parcels/test": {
            "get": {
                "tags": [
                    "Parcels"
                ],
                "summary": "Test parcel search (no API key required)",
                "description": "Try the request and response format without an API key. Nothing is billed. Searches only Alachua County; any other `searchCounty` is refused with a 400. Every search is answered as an anonymous caller: the owner, values, sale prices, building details, zoning and land use come back masked (`***`, or a `redacted` object). Send the same query to `/parcels` with a key for the full record.",
                "operationId": "sampleParcels",
                "security": [],
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Page size.",
                        "schema": {
                            "type": "string",
                            "pattern": "^\\d{1,3}$"
                        }
                    },
                    {
                        "name": "start",
                        "in": "query",
                        "required": false,
                        "description": "Row offset, and an alias of `offset`. Send both and `start` wins. Deprecated: use `offset` instead.",
                        "schema": {
                            "type": "string",
                            "pattern": "^\\d+$"
                        },
                        "deprecated": true
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "required": false,
                        "description": "Row offset for pagination. Ignored when `start` is also sent.",
                        "schema": {
                            "type": "string",
                            "pattern": "^\\d+$"
                        }
                    },
                    {
                        "name": "searchCounty",
                        "in": "query",
                        "required": true,
                        "description": "County name. Only `ALACHUA` is accepted. Case-insensitive. Spaces, underscores and hyphens are interchangeable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "ALACHUA"
                            ]
                        }
                    },
                    {
                        "name": "searchPin",
                        "in": "query",
                        "required": false,
                        "description": "Parcel identification number.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\-]+$"
                        }
                    },
                    {
                        "name": "searchParcelId",
                        "in": "query",
                        "required": false,
                        "description": "Parcel ID.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Za-z0-9\\-]+$"
                        }
                    }
                ],
                "x-mapwise-sample-query": {
                    "searchCounty": "ALACHUA",
                    "limit": 1
                },
                "responses": {
                    "200": {
                        "description": "Matching Alachua County parcels, with the owner, values and sale prices masked.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Endpoint-Limit": {
                                "$ref": "#/components/headers/RateLimitEndpointLimit"
                            },
                            "X-RateLimit-Endpoint-Remaining": {
                                "$ref": "#/components/headers/RateLimitEndpointRemaining"
                            },
                            "X-RateLimit-Endpoint-Reset": {
                                "$ref": "#/components/headers/RateLimitEndpointReset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ParcelTestResponse"
                                },
                                "example": {
                                    "success": true,
                                    "status": 200,
                                    "timestamp": "2026-09-21 15:38:46.924467",
                                    "meta": {
                                        "record_count": 1,
                                        "total_count": 108935,
                                        "test_mode": true,
                                        "data_scope": {
                                            "county": "ALACHUA"
                                        }
                                    },
                                    "data": [
                                        {
                                            "meta": {
                                                "ogc_fid": 1058677512,
                                                "county": "ALACHUA",
                                                "extracted_at": "20260921",
                                                "count": 1,
                                                "pa_pin_link": {
                                                    "redacted": true,
                                                    "message": "Log in to view property appraiser link"
                                                }
                                            },
                                            "identifiers": {
                                                "pin": "12057-000-000",
                                                "pin_clean": "12057000000",
                                                "pin2": null,
                                                "pin2_clean": null,
                                                "altkey": null,
                                                "prop_details": null
                                            },
                                            "owner": {
                                                "redacted": true,
                                                "message": "Log in to view owner information"
                                            },
                                            "site": {
                                                "address": null,
                                                "city": null,
                                                "zipcode": null,
                                                "subdivision": "WAITES, W.H. BLKS 4&5 R 2 (ROPERS ADDN)",
                                                "subdivision_common": null,
                                                "subdivision_id": "209300",
                                                "condo": "***"
                                            },
                                            "land": {
                                                "acres_deed": null,
                                                "acres_gis": 0.10391214201781951,
                                                "zoning": "***",
                                                "land_use": {
                                                    "redacted": true,
                                                    "message": "Sign up free to view land use"
                                                }
                                            },
                                            "building": {
                                                "num_buildings": null,
                                                "stories": null,
                                                "sqft": {
                                                    "heated": null,
                                                    "total": null,
                                                    "adjusted": null
                                                },
                                                "total_sqft": null,
                                                "heated_sqft": null,
                                                "year_built_actual": null,
                                                "year_built_effective": null,
                                                "beds": null,
                                                "baths": {
                                                    "full": null,
                                                    "half": null
                                                }
                                            },
                                            "valuation": {
                                                "market": {
                                                    "building": "***",
                                                    "improvements": null,
                                                    "land": "***",
                                                    "ag": "***",
                                                    "total": "***"
                                                },
                                                "assessed_total": "***",
                                                "exempt_total": "***",
                                                "taxable_total": "***"
                                            },
                                            "sales": {
                                                "recent": {
                                                    "date": "2025-12-10",
                                                    "amount": "***",
                                                    "type": "***",
                                                    "qual": "***",
                                                    "vac": "***",
                                                    "book": "***",
                                                    "page": "***",
                                                    "docnum": null,
                                                    "grantor": null
                                                },
                                                "previous": [
                                                    {
                                                        "date": "2016-08-18",
                                                        "amount": "***",
                                                        "type": "***",
                                                        "qual": "***",
                                                        "vac": "***",
                                                        "book": "***",
                                                        "page": "***",
                                                        "docnum": null,
                                                        "grantor": null
                                                    },
                                                    {
                                                        "date": "2016-07-21",
                                                        "amount": "***",
                                                        "type": "***",
                                                        "qual": "***",
                                                        "vac": "***",
                                                        "book": "***",
                                                        "page": "***",
                                                        "docnum": null,
                                                        "grantor": null
                                                    }
                                                ]
                                            }
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid parameter.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                },
                                "example": {
                                    "success": false,
                                    "status": 400,
                                    "timestamp": "2026-09-20 16:11:27.109986",
                                    "errormsg": "Query validation failed.",
                                    "errors": [
                                        "Parameter 'limit' has an invalid format (received 'abc').",
                                        "Missing required parameter: searchCounty"
                                    ],
                                    "help": {
                                        "message": "For a complete list of valid parameters and their usage, please visit:",
                                        "url": "/api_v2/help?topic=parcels/test"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Owner-name search refused (`searchOwner`, documented on `/parcels`): an anonymous caller cannot search by owner (data.error_code PLUS_REQUIRED).",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                },
                                "example": {
                                    "success": false,
                                    "status": 403,
                                    "timestamp": "2026-10-04 12:00:00.000000",
                                    "errormsg": "Searching by owner name requires a MapWise Plus subscription.",
                                    "data": {
                                        "error_code": "PLUS_REQUIRED"
                                    }
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Too many requests. This endpoint is limited more tightly than the keyed ones; back off and retry.",
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Endpoint-Limit": {
                                "$ref": "#/components/headers/RateLimitEndpointLimit"
                            },
                            "X-RateLimit-Endpoint-Remaining": {
                                "$ref": "#/components/headers/RateLimitEndpointRemaining"
                            },
                            "X-RateLimit-Endpoint-Reset": {
                                "$ref": "#/components/headers/RateLimitEndpointReset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Unexpected server failure.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    }
                },
                "x-mapwise-rate-limit": {
                    "bucket": "endpoint",
                    "requests_per_second": 5,
                    "window_seconds": 1
                }
            }
        },
        "/reports": {
            "post": {
                "tags": [
                    "Reports"
                ],
                "summary": "Create a report",
                "description": "Generates a PDF report for one Florida parcel and stores it: a `property` report (the parcel record, sales, building, values, legal description and soils) or a `flood` report (the FEMA flood zones over the parcel). Name the parcel by `subject.pin` and `subject.metadata.county`: a `county` sent beside `pin` is not read. A flood report also takes a point or a polygon. The answer is a reference to the report: its id, links to its PDF and page-1 preview, and a download link that works without a key for 15 minutes. Each report is billed once, `meta.record_count`, checked against your spend cap first; fetching it again is free. A request that is refused stores and bills nothing. `GET /reports/allowance` lists the report types and sections your key can create here.",
                "operationId": "createReport",
                "security": [
                    {
                        "ApiKeyHeader": []
                    },
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": false,
                        "description": "Makes a retry safe: the same key and body replay the first answer with `Idempotent-Replayed: true`, start no second job and bill nothing again. Printable ASCII. Any other key is a 400; the same key with another body is a 422; a key whose first request is still running is a 409 with `Retry-After: 2`; a key older than 24 hours is a 409 `idempotency_key_reused`.",
                        "schema": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128
                        }
                    }
                ],
                "requestBody": {
                    "description": "The report type and the parcel it is about, and an optional title.",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ReportRequest"
                            },
                            "example": {
                                "type": "property",
                                "subject": {
                                    "kind": "parcel",
                                    "pin": "163004775150002200",
                                    "metadata": {
                                        "county": "PINELLAS"
                                    }
                                },
                                "title": "13600 Icot Blvd, Property Report"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "The report is stored.",
                        "headers": {
                            "Idempotent-Replayed": {
                                "description": "`true` on a replay of an earlier request with the same `Idempotency-Key`.",
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Endpoint-Limit": {
                                "$ref": "#/components/headers/RateLimitEndpointLimit"
                            },
                            "X-RateLimit-Endpoint-Remaining": {
                                "$ref": "#/components/headers/RateLimitEndpointRemaining"
                            },
                            "X-RateLimit-Endpoint-Reset": {
                                "$ref": "#/components/headers/RateLimitEndpointReset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ReportResponse"
                                },
                                "example": {
                                    "success": true,
                                    "status": 201,
                                    "timestamp": "2026-10-20 12:07:44.388915",
                                    "meta": {
                                        "record_count": 1
                                    },
                                    "data": {
                                        "id": "rpt_8f240051-d05e-438e-a3ae-eaba01094770",
                                        "type": "property",
                                        "title": "13600 Icot Blvd, Property Report",
                                        "status": "active",
                                        "redacted": false,
                                        "subject": {
                                            "kind": "parcel",
                                            "pin": "163004775150002200",
                                            "county": "PINELLAS",
                                            "site_address": "13600 ICOT BLVD"
                                        },
                                        "created_at": "2026-10-20T12:07:44-04:00",
                                        "generated_at": "2026-10-20T12:07:44-04:00",
                                        "download_url": "https://www.mapwise.com/api_v2/reports/download/YOUR_DOWNLOAD_TOKEN",
                                        "expires_at": "2026-10-20T16:22:44+00:00",
                                        "preview_url": null,
                                        "pdf_url": "/api_v2/reports/rpt_8f240051-d05e-438e-a3ae-eaba01094770/pdf"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "No `type`, or one that is not a report type; a `subject` that breaks a rule (no `kind`, a parcel with no `pin`, a point outside -90 to 90 and -180 to 180, a polygon that is not a GeoJSON Polygon); or the `Idempotency-Key` is not a usable key.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "No API key, an invalid one, or an anonymous token.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "A report type this key cannot create on this host (`data.error_code` REPORT_TYPE_UNAVAILABLE, `data.reason` plan or not_released), or a publishable key, where this route takes a secret one (`data.code` KEY_CLASS_MISMATCH).",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No parcel matches the subject (`data.error_code` SUBJECT_NOT_FOUND).",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "You already have a report with this `title` (`data.suggestedTitle` is a free one); the `Idempotency-Key` belongs to a request still in progress (`Retry-After: 2`); or it belongs to an older report (`data.error_code` idempotency_key_reused).",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "The subject matches more than one parcel (`data.error_code` SUBJECT_AMBIGUOUS): send `subject.metadata.county`. Also the same `Idempotency-Key` with another body.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit or spend cap exceeded. These are two different bodies: a rate limit is the standard error envelope, a spend cap is its own shape carrying the billing state you need to recover. Check for a top-level `error` of spend_cap_exceeded to tell them apart.",
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait. On a spend cap this is the time to the period reset, which can be days.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-Billing-Period-Reset": {
                                "description": "On a spend cap: when the current billing period resets, ISO 8601 UTC.",
                                "schema": {
                                    "type": "string",
                                    "example": "2026-11-01T00:00:00Z"
                                }
                            },
                            "X-Billing-Period-Cap-Cents": {
                                "description": "On a spend cap: the monthly spend cap the account set, in cents. Calls stop at included usage plus this cap.",
                                "schema": {
                                    "type": "integer",
                                    "example": 10000
                                }
                            },
                            "X-Billing-Period-Included-Cents": {
                                "description": "On a spend cap: the usage included in the plan this month, in cents (0 when none). Calls stop at this plus the cap.",
                                "schema": {
                                    "type": "integer",
                                    "example": 0
                                }
                            },
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Endpoint-Limit": {
                                "$ref": "#/components/headers/RateLimitEndpointLimit"
                            },
                            "X-RateLimit-Endpoint-Remaining": {
                                "$ref": "#/components/headers/RateLimitEndpointRemaining"
                            },
                            "X-RateLimit-Endpoint-Reset": {
                                "$ref": "#/components/headers/RateLimitEndpointReset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "$ref": "#/components/schemas/ErrorEnvelope"
                                        },
                                        {
                                            "$ref": "#/components/schemas/SpendCapExceeded"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Unexpected server failure.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "503": {
                        "description": "The imagery the report prints is briefly unavailable (`data.error_code` RENDER_UNAVAILABLE); nothing was billed. Retry after `Retry-After`.",
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    }
                },
                "x-mapwise-rate-limit": {
                    "bucket": "endpoint",
                    "requests_per_second": 20,
                    "window_seconds": 60
                }
            }
        },
        "/reports/allowance": {
            "get": {
                "tags": [
                    "Reports"
                ],
                "summary": "Check what a report will include",
                "description": "Before creating a report: each report type, whether your key can create it here (`available`, and `reason` when not), the sections it prints, and a link to a sample PDF. An API key is billed per report, so `billing` is `metered` and `quota` is null. Send `pin` and `county` to ask whether a one-dataset report type would be refused for that parcel (`coverage`). Free.",
                "operationId": "getReportAllowance",
                "security": [
                    {
                        "ApiKeyHeader": []
                    },
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "pin",
                        "in": "query",
                        "required": false,
                        "description": "A parcel id to check, with `county`.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "county",
                        "in": "query",
                        "required": false,
                        "description": "The parcel's county, with `pin`.",
                        "schema": {
                            "type": "string",
                            "example": "PINELLAS"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "What your next report will be.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Global-Limit": {
                                "$ref": "#/components/headers/RateLimitGlobalLimit"
                            },
                            "X-RateLimit-Global-Remaining": {
                                "$ref": "#/components/headers/RateLimitGlobalRemaining"
                            },
                            "X-RateLimit-Global-Reset": {
                                "$ref": "#/components/headers/RateLimitGlobalReset"
                            },
                            "X-RateLimit-Bucket-Capacity": {
                                "$ref": "#/components/headers/RateLimitBucketCapacity"
                            },
                            "X-RateLimit-Bucket-Remaining": {
                                "$ref": "#/components/headers/RateLimitBucketRemaining"
                            },
                            "X-RateLimit-Bucket-Refill-Rate": {
                                "$ref": "#/components/headers/RateLimitBucketRefillRate"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ReportAllowanceResponse"
                                },
                                "example": {
                                    "success": true,
                                    "status": 200,
                                    "timestamp": "2026-10-28 16:50:49.356151",
                                    "data": {
                                        "billing": "metered",
                                        "quota": null,
                                        "types": {
                                            "property": {
                                                "available": true,
                                                "reason": null,
                                                "sections": [
                                                    {
                                                        "section": "owner_property",
                                                        "title": "Owner & Property Information",
                                                        "included": true
                                                    },
                                                    {
                                                        "section": "recent_sales",
                                                        "title": "Recent Sales",
                                                        "included": true
                                                    },
                                                    {
                                                        "section": "building",
                                                        "title": "Building Summary",
                                                        "included": true
                                                    },
                                                    {
                                                        "section": "values",
                                                        "title": "Property Values",
                                                        "included": true
                                                    },
                                                    {
                                                        "section": "legal",
                                                        "title": "Legal Description",
                                                        "included": true
                                                    },
                                                    {
                                                        "section": "soils",
                                                        "title": "Soils",
                                                        "included": true
                                                    }
                                                ],
                                                "sample_url": "https://www.mapwise.com/api_v2/reports/sample/property"
                                            },
                                            "flood": {
                                                "available": true,
                                                "reason": null,
                                                "sections": [
                                                    {
                                                        "section": "flood_zones",
                                                        "title": "Flood Zones on This Parcel",
                                                        "included": true
                                                    },
                                                    {
                                                        "section": "nfip_cbra",
                                                        "title": "NFIP & Coastal Barrier",
                                                        "included": true
                                                    }
                                                ],
                                                "sample_url": "https://www.mapwise.com/api_v2/reports/sample/flood"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Only one of `pin` and `county`, or a `pin` that is not a parcel id.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "No API key, an invalid one, or an anonymous token.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "A publishable key, where this route takes a secret one (`data.code` KEY_CLASS_MISMATCH).",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Too many requests; back off and retry.",
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Global-Limit": {
                                "$ref": "#/components/headers/RateLimitGlobalLimit"
                            },
                            "X-RateLimit-Global-Remaining": {
                                "$ref": "#/components/headers/RateLimitGlobalRemaining"
                            },
                            "X-RateLimit-Global-Reset": {
                                "$ref": "#/components/headers/RateLimitGlobalReset"
                            },
                            "X-RateLimit-Bucket-Capacity": {
                                "$ref": "#/components/headers/RateLimitBucketCapacity"
                            },
                            "X-RateLimit-Bucket-Remaining": {
                                "$ref": "#/components/headers/RateLimitBucketRemaining"
                            },
                            "X-RateLimit-Bucket-Refill-Rate": {
                                "$ref": "#/components/headers/RateLimitBucketRefillRate"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Unexpected server failure.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    }
                },
                "x-mapwise-rate-limit": {
                    "bucket": "account",
                    "requests_per_second": 10,
                    "burst": 600
                }
            }
        },
        "/reports/{id}": {
            "get": {
                "tags": [
                    "Reports"
                ],
                "summary": "Get a report",
                "description": "A report you created: the same reference the create answered, with a fresh 15-minute download link. Not billed.",
                "operationId": "getReport",
                "security": [
                    {
                        "ApiKeyHeader": []
                    },
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "The report id, `data.id` of the create: `rpt_` and a UUID.",
                        "schema": {
                            "type": "string",
                            "example": "rpt_3f2b8c1e-9d4a-4b7e-8f60-2a1c5d9e7b43"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The report.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Global-Limit": {
                                "$ref": "#/components/headers/RateLimitGlobalLimit"
                            },
                            "X-RateLimit-Global-Remaining": {
                                "$ref": "#/components/headers/RateLimitGlobalRemaining"
                            },
                            "X-RateLimit-Global-Reset": {
                                "$ref": "#/components/headers/RateLimitGlobalReset"
                            },
                            "X-RateLimit-Bucket-Capacity": {
                                "$ref": "#/components/headers/RateLimitBucketCapacity"
                            },
                            "X-RateLimit-Bucket-Remaining": {
                                "$ref": "#/components/headers/RateLimitBucketRemaining"
                            },
                            "X-RateLimit-Bucket-Refill-Rate": {
                                "$ref": "#/components/headers/RateLimitBucketRefillRate"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ReportResponse"
                                },
                                "example": {
                                    "success": true,
                                    "status": 200,
                                    "timestamp": "2026-10-20 12:07:56.773555",
                                    "data": {
                                        "id": "rpt_8f240051-d05e-438e-a3ae-eaba01094770",
                                        "type": "property",
                                        "title": "13600 Icot Blvd, Property Report",
                                        "status": "active",
                                        "redacted": false,
                                        "subject": {
                                            "kind": "parcel",
                                            "pin": "163004775150002200",
                                            "county": "PINELLAS",
                                            "site_address": "13600 ICOT BLVD"
                                        },
                                        "created_at": "2026-10-20T12:07:44-04:00",
                                        "generated_at": "2026-10-20T12:07:44-04:00",
                                        "download_url": "https://www.mapwise.com/api_v2/reports/download/YOUR_DOWNLOAD_TOKEN",
                                        "expires_at": "2026-10-20T16:22:56+00:00",
                                        "preview_url": null,
                                        "pdf_url": "/api_v2/reports/rpt_8f240051-d05e-438e-a3ae-eaba01094770/pdf"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "No API key, an invalid one, or an anonymous token.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "A publishable key, where this route takes a secret one (`data.code` KEY_CLASS_MISMATCH).",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No such report, or not yours: the same answer.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Too many requests; back off and retry.",
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Global-Limit": {
                                "$ref": "#/components/headers/RateLimitGlobalLimit"
                            },
                            "X-RateLimit-Global-Remaining": {
                                "$ref": "#/components/headers/RateLimitGlobalRemaining"
                            },
                            "X-RateLimit-Global-Reset": {
                                "$ref": "#/components/headers/RateLimitGlobalReset"
                            },
                            "X-RateLimit-Bucket-Capacity": {
                                "$ref": "#/components/headers/RateLimitBucketCapacity"
                            },
                            "X-RateLimit-Bucket-Remaining": {
                                "$ref": "#/components/headers/RateLimitBucketRemaining"
                            },
                            "X-RateLimit-Bucket-Refill-Rate": {
                                "$ref": "#/components/headers/RateLimitBucketRefillRate"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Unexpected server failure.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    }
                },
                "x-mapwise-rate-limit": {
                    "bucket": "account",
                    "requests_per_second": 10,
                    "burst": 600
                }
            }
        },
        "/reports/{id}/pdf": {
            "get": {
                "tags": [
                    "Reports"
                ],
                "summary": "Download a report's PDF",
                "description": "The PDF of a report you created, with your key. This link does not expire, unlike `download_url`. The first download renders the PDF, which can take several seconds; later ones serve the stored file. Not billed.",
                "operationId": "getReportPdf",
                "security": [
                    {
                        "ApiKeyHeader": []
                    },
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "The report id, `data.id` of the create: `rpt_` and a UUID.",
                        "schema": {
                            "type": "string",
                            "example": "rpt_3f2b8c1e-9d4a-4b7e-8f60-2a1c5d9e7b43"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The PDF.",
                        "headers": {
                            "Content-Disposition": {
                                "description": "`attachment`, with the report's file name.",
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "ETag": {
                                "description": "Sent once the PDF is stored: send it back as `If-None-Match` to get a 304.",
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Global-Limit": {
                                "$ref": "#/components/headers/RateLimitGlobalLimit"
                            },
                            "X-RateLimit-Global-Remaining": {
                                "$ref": "#/components/headers/RateLimitGlobalRemaining"
                            },
                            "X-RateLimit-Global-Reset": {
                                "$ref": "#/components/headers/RateLimitGlobalReset"
                            },
                            "X-RateLimit-Bucket-Capacity": {
                                "$ref": "#/components/headers/RateLimitBucketCapacity"
                            },
                            "X-RateLimit-Bucket-Remaining": {
                                "$ref": "#/components/headers/RateLimitBucketRemaining"
                            },
                            "X-RateLimit-Bucket-Refill-Rate": {
                                "$ref": "#/components/headers/RateLimitBucketRefillRate"
                            }
                        },
                        "content": {
                            "application/pdf": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                },
                                "examples": {
                                    "property": {
                                        "summary": "Sample property report",
                                        "externalValue": "https://www.mapwise.com/api_v2/reports/sample/property"
                                    },
                                    "flood": {
                                        "summary": "Sample flood report",
                                        "externalValue": "https://www.mapwise.com/api_v2/reports/sample/flood"
                                    }
                                }
                            }
                        }
                    },
                    "304": {
                        "description": "Not modified: your `If-None-Match` matches the stored PDF.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Global-Limit": {
                                "$ref": "#/components/headers/RateLimitGlobalLimit"
                            },
                            "X-RateLimit-Global-Remaining": {
                                "$ref": "#/components/headers/RateLimitGlobalRemaining"
                            },
                            "X-RateLimit-Global-Reset": {
                                "$ref": "#/components/headers/RateLimitGlobalReset"
                            },
                            "X-RateLimit-Bucket-Capacity": {
                                "$ref": "#/components/headers/RateLimitBucketCapacity"
                            },
                            "X-RateLimit-Bucket-Remaining": {
                                "$ref": "#/components/headers/RateLimitBucketRemaining"
                            },
                            "X-RateLimit-Bucket-Refill-Rate": {
                                "$ref": "#/components/headers/RateLimitBucketRefillRate"
                            }
                        }
                    },
                    "401": {
                        "description": "No API key, an invalid one, or an anonymous token.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "A report made without a paid plan, which has no PDF for its owner, or a publishable key, where this route takes a secret one (`data.code` KEY_CLASS_MISMATCH).",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No such report, or not yours: the same answer.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Too many requests; back off and retry.",
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Global-Limit": {
                                "$ref": "#/components/headers/RateLimitGlobalLimit"
                            },
                            "X-RateLimit-Global-Remaining": {
                                "$ref": "#/components/headers/RateLimitGlobalRemaining"
                            },
                            "X-RateLimit-Global-Reset": {
                                "$ref": "#/components/headers/RateLimitGlobalReset"
                            },
                            "X-RateLimit-Bucket-Capacity": {
                                "$ref": "#/components/headers/RateLimitBucketCapacity"
                            },
                            "X-RateLimit-Bucket-Remaining": {
                                "$ref": "#/components/headers/RateLimitBucketRemaining"
                            },
                            "X-RateLimit-Bucket-Refill-Rate": {
                                "$ref": "#/components/headers/RateLimitBucketRefillRate"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Unexpected server failure.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "502": {
                        "description": "The PDF could not be rendered; retry later.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "503": {
                        "description": "Every renderer is busy (`data.error_code` RENDER_BUSY); retry after `Retry-After`.",
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    }
                },
                "x-mapwise-rate-limit": {
                    "bucket": "account",
                    "requests_per_second": 10,
                    "burst": 600
                }
            }
        },
        "/reports/{id}/preview": {
            "get": {
                "tags": [
                    "Reports"
                ],
                "summary": "Get a report's page-1 preview",
                "description": "Page 1 of a report you created, as a WebP image. `thumb` is 320 pixels wide, `page` 1100. A report's `preview_url` is set once its preview is stored. Asking for `page` before then renders the report once, as its first PDF download would. Not billed.",
                "operationId": "getReportPreview",
                "security": [
                    {
                        "ApiKeyHeader": []
                    },
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "The report id, `data.id` of the create: `rpt_` and a UUID.",
                        "schema": {
                            "type": "string",
                            "example": "rpt_3f2b8c1e-9d4a-4b7e-8f60-2a1c5d9e7b43"
                        }
                    },
                    {
                        "name": "size",
                        "in": "query",
                        "required": false,
                        "description": "`thumb` for a list, `page` to read it.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "thumb",
                                "page"
                            ],
                            "default": "page"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The image.",
                        "headers": {
                            "ETag": {
                                "description": "Send it back as `If-None-Match` to get a 304.",
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Global-Limit": {
                                "$ref": "#/components/headers/RateLimitGlobalLimit"
                            },
                            "X-RateLimit-Global-Remaining": {
                                "$ref": "#/components/headers/RateLimitGlobalRemaining"
                            },
                            "X-RateLimit-Global-Reset": {
                                "$ref": "#/components/headers/RateLimitGlobalReset"
                            },
                            "X-RateLimit-Bucket-Capacity": {
                                "$ref": "#/components/headers/RateLimitBucketCapacity"
                            },
                            "X-RateLimit-Bucket-Remaining": {
                                "$ref": "#/components/headers/RateLimitBucketRemaining"
                            },
                            "X-RateLimit-Bucket-Refill-Rate": {
                                "$ref": "#/components/headers/RateLimitBucketRefillRate"
                            }
                        },
                        "content": {
                            "image/webp": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                },
                                "examples": {
                                    "property": {
                                        "summary": "Page 1 of the sample property report",
                                        "externalValue": "https://www.mapwise.com/api_v2/reports/sample/property/preview?size=thumb"
                                    },
                                    "flood": {
                                        "summary": "Page 1 of the sample flood report",
                                        "externalValue": "https://www.mapwise.com/api_v2/reports/sample/flood/preview?size=thumb"
                                    }
                                }
                            }
                        }
                    },
                    "304": {
                        "description": "Not modified: your `If-None-Match` matches the stored image.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Global-Limit": {
                                "$ref": "#/components/headers/RateLimitGlobalLimit"
                            },
                            "X-RateLimit-Global-Remaining": {
                                "$ref": "#/components/headers/RateLimitGlobalRemaining"
                            },
                            "X-RateLimit-Global-Reset": {
                                "$ref": "#/components/headers/RateLimitGlobalReset"
                            },
                            "X-RateLimit-Bucket-Capacity": {
                                "$ref": "#/components/headers/RateLimitBucketCapacity"
                            },
                            "X-RateLimit-Bucket-Remaining": {
                                "$ref": "#/components/headers/RateLimitBucketRemaining"
                            },
                            "X-RateLimit-Bucket-Refill-Rate": {
                                "$ref": "#/components/headers/RateLimitBucketRefillRate"
                            }
                        }
                    },
                    "400": {
                        "description": "`size` is not `thumb` or `page`.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "No API key, an invalid one, or an anonymous token.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "A report made without a paid plan, which has no preview for its owner, or a publishable key, where this route takes a secret one (`data.code` KEY_CLASS_MISMATCH).",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No such report, or not yours; or no preview: `data.error_code` PREVIEW_PENDING (not made yet, ask for `page` or download the PDF first) or PREVIEW_NEVER (a report older than previews, which never has one).",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Too many requests; back off and retry.",
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Global-Limit": {
                                "$ref": "#/components/headers/RateLimitGlobalLimit"
                            },
                            "X-RateLimit-Global-Remaining": {
                                "$ref": "#/components/headers/RateLimitGlobalRemaining"
                            },
                            "X-RateLimit-Global-Reset": {
                                "$ref": "#/components/headers/RateLimitGlobalReset"
                            },
                            "X-RateLimit-Bucket-Capacity": {
                                "$ref": "#/components/headers/RateLimitBucketCapacity"
                            },
                            "X-RateLimit-Bucket-Remaining": {
                                "$ref": "#/components/headers/RateLimitBucketRemaining"
                            },
                            "X-RateLimit-Bucket-Refill-Rate": {
                                "$ref": "#/components/headers/RateLimitBucketRefillRate"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Unexpected server failure.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "502": {
                        "description": "The report could not be rendered; retry later.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    },
                    "503": {
                        "description": "Every renderer is busy (`data.error_code` RENDER_BUSY); retry after `Retry-After`.",
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    }
                },
                "x-mapwise-rate-limit": {
                    "bucket": "account",
                    "requests_per_second": 10,
                    "burst": 600
                }
            }
        },
        "/tiles": {
            "get": {
                "tags": [
                    "Map Tiles"
                ],
                "summary": "List the tilesets you can draw",
                "description": "The aerial tileset catalog, scoped to the credential you send: it lists only what your own key can fetch, so everything in it is a tileset you can request. `url_template` and `tilejson` are absolute paths that already carry the `/api_v2` prefix, so join them to the scheme and host of the server URL above, not to its full URL. Or skip the arithmetic and take the ready-made absolute template from the tileset's TileJSON. Because the answer depends on your credential it is served `Cache-Control: private, no-store`; do not hold it in a shared cache.",
                "operationId": "listTilesets",
                "security": [
                    {
                        "PublishableKeyQuery": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The tilesets this credential can fetch.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Global-Limit": {
                                "$ref": "#/components/headers/RateLimitGlobalLimit"
                            },
                            "X-RateLimit-Global-Remaining": {
                                "$ref": "#/components/headers/RateLimitGlobalRemaining"
                            },
                            "X-RateLimit-Global-Reset": {
                                "$ref": "#/components/headers/RateLimitGlobalReset"
                            },
                            "X-RateLimit-Bucket-Capacity": {
                                "$ref": "#/components/headers/RateLimitBucketCapacity"
                            },
                            "X-RateLimit-Bucket-Remaining": {
                                "$ref": "#/components/headers/RateLimitBucketRemaining"
                            },
                            "X-RateLimit-Bucket-Refill-Rate": {
                                "$ref": "#/components/headers/RateLimitBucketRefillRate"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/TileCatalogResponse"
                                },
                                "example": {
                                    "success": true,
                                    "status": 200,
                                    "timestamp": "2026-09-24 21:25:51.289959",
                                    "data": {
                                        "tilesets": [
                                            {
                                                "name": "aerials-doq1995",
                                                "display_name": "Aerials — 1995 CIR",
                                                "vintage": "1995",
                                                "tier": "authenticated",
                                                "url_template": "/api_v2/tiles/aerials-doq1995/{z}/{x}/{y}.jpg",
                                                "tilejson": "/api_v2/tiles/aerials-doq1995/tiles.json"
                                            },
                                            {
                                                "name": "aerials-doq1999",
                                                "display_name": "Aerials — 1999 CIR",
                                                "vintage": "1999",
                                                "tier": "authenticated",
                                                "url_template": "/api_v2/tiles/aerials-doq1999/{z}/{x}/{y}.jpg",
                                                "tilejson": "/api_v2/tiles/aerials-doq1999/tiles.json"
                                            },
                                            {
                                                "name": "aerials-doq2004",
                                                "display_name": "Aerials — 2004 DOQ",
                                                "vintage": "2004",
                                                "tier": "authenticated",
                                                "url_template": "/api_v2/tiles/aerials-doq2004/{z}/{x}/{y}.jpg",
                                                "tilejson": "/api_v2/tiles/aerials-doq2004/tiles.json"
                                            },
                                            {
                                                "name": "aerials-latest",
                                                "display_name": "Aerials — Latest",
                                                "vintage": "most recent available per county",
                                                "tier": "authenticated",
                                                "url_template": "/api_v2/tiles/aerials-latest/{z}/{x}/{y}.jpg",
                                                "tilejson": "/api_v2/tiles/aerials-latest/tiles.json"
                                            },
                                            {
                                                "name": "aerials-naip-latest",
                                                "display_name": "Aerials — NAIP Latest",
                                                "vintage": "NAIP latest",
                                                "tier": "authenticated",
                                                "url_template": "/api_v2/tiles/aerials-naip-latest/{z}/{x}/{y}.jpg",
                                                "tilejson": "/api_v2/tiles/aerials-naip-latest/tiles.json"
                                            },
                                            {
                                                "name": "aerials-naip-latest-cir",
                                                "display_name": "Aerials — NAIP Latest CIR",
                                                "vintage": "NAIP latest color infrared",
                                                "tier": "authenticated",
                                                "url_template": "/api_v2/tiles/aerials-naip-latest-cir/{z}/{x}/{y}.jpg",
                                                "tilejson": "/api_v2/tiles/aerials-naip-latest-cir/tiles.json"
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                },
                                "example": {
                                    "success": false,
                                    "status": 401,
                                    "timestamp": "2026-09-24 03:41:31.489771",
                                    "errormsg": "Authentication required"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Told apart by `errormsg`: `Tiles require a publishable key` (code `KEY_CLASS_MISMATCH`): a secret key was sent; use a publishable one. `Origin not permitted for this API key`: the site is not on the key, or the request carried no `Origin` and no `Referer`; add the site to the key. `Browser origin is not permitted` (code `ORIGIN_NOT_ALLOWED`): the request came from a browser page and carried no key at all; add `apiKey` to the URL.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                },
                                "example": {
                                    "success": false,
                                    "status": 403,
                                    "timestamp": "2026-09-23 22:54:51.406780",
                                    "errormsg": "Tiles require a publishable key (mw_pk_); create one under My Account → API.",
                                    "data": {
                                        "code": "KEY_CLASS_MISMATCH"
                                    }
                                }
                            }
                        }
                    }
                },
                "x-mapwise-rate-limit": {
                    "bucket": "account",
                    "requests_per_second": 10,
                    "burst": 600
                }
            }
        },
        "/tiles/{tileset}/tiles.json": {
            "get": {
                "tags": [
                    "Map Tiles"
                ],
                "summary": "TileJSON for one tileset",
                "description": "TileJSON 3.0.0 (`https://github.com/mapbox/tilejson-spec/tree/master/3.0.0`) for one tileset: the tile template with your key already in it, the coverage `bounds`, the `minzoom`/`maxzoom` that actually have data, and the `attribution` you must display. MapLibre and OpenLayers read this document directly; Leaflet has no TileJSON loader, so pass it the `tiles[0]` template instead. It echoes the key you authenticated with, so it is served `Cache-Control: private, no-store`.",
                "operationId": "getTileJson",
                "security": [
                    {
                        "PublishableKeyQuery": []
                    }
                ],
                "parameters": [
                    {
                        "name": "tileset",
                        "in": "path",
                        "required": true,
                        "description": "The tileset's `name`, as `GET /tiles` lists it.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "aerials-latest"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The tileset's TileJSON document.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Endpoint-Limit": {
                                "$ref": "#/components/headers/RateLimitEndpointLimit"
                            },
                            "X-RateLimit-Endpoint-Remaining": {
                                "$ref": "#/components/headers/RateLimitEndpointRemaining"
                            },
                            "X-RateLimit-Endpoint-Reset": {
                                "$ref": "#/components/headers/RateLimitEndpointReset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/TileJson"
                                },
                                "example": {
                                    "tilejson": "3.0.0",
                                    "name": "aerials-latest",
                                    "description": "Aerials — Latest (most recent available per county)",
                                    "attribution": "Imagery: <a href=\"https://www.fdot.gov/\">FDOT</a> / <a href=\"https://floridarevenue.com/\">FDOR</a> / Florida counties · Tiles © <a href=\"https://www.mapwise.com/\">MapWise</a>",
                                    "scheme": "xyz",
                                    "tiles": [
                                        "https://www.mapwise.com/api_v2/tiles/aerials-latest/{z}/{x}/{y}.jpg?apiKey=mw_pk_YOUR_PUBLISHABLE_KEY"
                                    ],
                                    "minzoom": 4,
                                    "maxzoom": 21,
                                    "bounds": [
                                        -87.6,
                                        24.5,
                                        -80.0,
                                        31.2
                                    ],
                                    "center": [
                                        -83.8,
                                        27.85,
                                        4
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                },
                                "example": {
                                    "success": false,
                                    "status": 401,
                                    "timestamp": "2026-09-24 03:41:31.489771",
                                    "errormsg": "Authentication required"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Told apart by `errormsg`: `Tiles require a publishable key` (code `KEY_CLASS_MISMATCH`): a secret key was sent; use a publishable one. `Origin not permitted for this API key`: the site is not on the key, or the request carried no `Origin` and no `Referer`; add the site to the key. `Browser origin is not permitted` (code `ORIGIN_NOT_ALLOWED`): the request came from a browser page and carried no key at all; add `apiKey` to the URL. `Tileset not available via API key`: this key cannot reach that tileset; check the catalog for what it can.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                },
                                "example": {
                                    "success": false,
                                    "status": 403,
                                    "timestamp": "2026-09-24 03:41:31.790597",
                                    "errormsg": "Origin not permitted for this API key (check key origin registration and page Referrer-Policy)"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Unknown tileset, or one that publishes no TileJSON.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                },
                                "example": {
                                    "success": false,
                                    "status": 404,
                                    "timestamp": "2026-09-24 03:41:32.378699",
                                    "errormsg": "Unknown tileset"
                                }
                            }
                        }
                    }
                },
                "x-mapwise-rate-limit": {
                    "bucket": "endpoint",
                    "requests_per_second": 60,
                    "window_seconds": 1
                }
            }
        },
        "/tiles/{tileset}/{z}/{x}/{y}.jpg": {
            "get": {
                "tags": [
                    "Map Tiles"
                ],
                "summary": "Fetch one map tile",
                "description": "One 256 px JPEG tile, in the usual XYZ scheme. Your map library requests these from the template in the TileJSON. You should not need to build the URL yourself. Billed per tile. A tile served from a cache while it is still fresh never reaches the API and is never billed, but a revalidation does reach it: send `If-None-Match` with the `ETag` (or `If-Modified-Since` with the `Last-Modified`) and an unchanged tile answers `304 Not Modified` with no body. That saves the bytes and the latency, not the charge. A blank tile outside the imagery footprint is billed like any other, so let `bounds`, `minzoom` and `maxzoom` keep your client from asking for it. The `.jpg` extension is part of the last path segment: request `{y}.jpg`, not `{y}`.",
                "operationId": "getTile",
                "security": [
                    {
                        "PublishableKeyQuery": []
                    }
                ],
                "parameters": [
                    {
                        "name": "tileset",
                        "in": "path",
                        "required": true,
                        "description": "The tileset's `name`, as `GET /tiles` lists it.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "aerials-latest"
                    },
                    {
                        "name": "z",
                        "in": "path",
                        "required": true,
                        "description": "Zoom level. The API accepts 0 to 24, but imagery exists only between the tileset's TileJSON `minzoom` and `maxzoom`; a tile outside that range is blank and still billed.",
                        "schema": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 24
                        },
                        "example": 14
                    },
                    {
                        "name": "x",
                        "in": "path",
                        "required": true,
                        "description": "Tile column.",
                        "schema": {
                            "type": "integer",
                            "minimum": 0
                        },
                        "example": 4439
                    },
                    {
                        "name": "y",
                        "in": "path",
                        "required": true,
                        "description": "Tile row. The path segment carries the extension too, as `{y}.jpg`.",
                        "schema": {
                            "type": "integer",
                            "minimum": 0
                        },
                        "example": 6866
                    }
                ],
                "responses": {
                    "200": {
                        "description": "One 256 px JPEG tile.",
                        "headers": {
                            "Cache-Control": {
                                "description": "Private on every tileset: cached in the end user's browser only. Rolling tilesets send private, max-age=86400, stale-while-revalidate=86400; dated vintages send private, max-age=2592000, immutable.",
                                "schema": {
                                    "type": "string",
                                    "example": "private, max-age=86400, stale-while-revalidate=86400"
                                }
                            },
                            "ETag": {
                                "description": "A strong validator derived from the tile's bytes, so it changes when the imagery is re-flown and not otherwise. Send it back as If-None-Match to revalidate. Named in Access-Control-Expose-Headers, so cross-origin scripts can read it.",
                                "schema": {
                                    "type": "string",
                                    "example": "\"b9864c899df69906aeea46b663d74b00\""
                                }
                            },
                            "Last-Modified": {
                                "description": "The imagery backend's own validator, forwarded when it publishes one.",
                                "schema": {
                                    "type": "string",
                                    "example": "Sun, 07 Jun 2026 00:33:24 GMT"
                                }
                            },
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Endpoint-Limit": {
                                "$ref": "#/components/headers/RateLimitEndpointLimit"
                            },
                            "X-RateLimit-Endpoint-Remaining": {
                                "$ref": "#/components/headers/RateLimitEndpointRemaining"
                            },
                            "X-RateLimit-Endpoint-Reset": {
                                "$ref": "#/components/headers/RateLimitEndpointReset"
                            }
                        },
                        "content": {
                            "image/jpeg": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            }
                        }
                    },
                    "304": {
                        "description": "Not Modified: the tile still matches the `If-None-Match` or `If-Modified-Since` you sent. No body. The validators and `Cache-Control` are repeated so you can refresh your stored copy. Billed like a 200.",
                        "headers": {
                            "Cache-Control": {
                                "description": "Private on every tileset: cached in the end user's browser only. Rolling tilesets send private, max-age=86400, stale-while-revalidate=86400; dated vintages send private, max-age=2592000, immutable.",
                                "schema": {
                                    "type": "string",
                                    "example": "private, max-age=86400, stale-while-revalidate=86400"
                                }
                            },
                            "ETag": {
                                "description": "A strong validator derived from the tile's bytes, so it changes when the imagery is re-flown and not otherwise. Send it back as If-None-Match to revalidate. Named in Access-Control-Expose-Headers, so cross-origin scripts can read it.",
                                "schema": {
                                    "type": "string",
                                    "example": "\"b9864c899df69906aeea46b663d74b00\""
                                }
                            },
                            "Last-Modified": {
                                "description": "The imagery backend's own validator, forwarded when it publishes one.",
                                "schema": {
                                    "type": "string",
                                    "example": "Sun, 07 Jun 2026 00:33:24 GMT"
                                }
                            },
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Endpoint-Limit": {
                                "$ref": "#/components/headers/RateLimitEndpointLimit"
                            },
                            "X-RateLimit-Endpoint-Remaining": {
                                "$ref": "#/components/headers/RateLimitEndpointRemaining"
                            },
                            "X-RateLimit-Endpoint-Reset": {
                                "$ref": "#/components/headers/RateLimitEndpointReset"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad tile coordinates, or an extension this tileset does not serve. Use the one in the TileJSON's tiles[] template.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                },
                                "example": {
                                    "success": false,
                                    "status": 400,
                                    "timestamp": "2026-09-24 03:41:32.622393",
                                    "errormsg": "Tileset 'aerials-latest' does not serve the '.png' extension; use '.jpg'"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid key.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                },
                                "example": {
                                    "success": false,
                                    "status": 401,
                                    "timestamp": "2026-09-24 03:41:31.489771",
                                    "errormsg": "Authentication required"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Told apart by `errormsg`: `Tiles require a publishable key` (code `KEY_CLASS_MISMATCH`): a secret key was sent; use a publishable one. `Origin not permitted for this API key`: the site is not on the key, or the request carried no `Origin` and no `Referer`; add the site to the key. `Browser origin is not permitted` (code `ORIGIN_NOT_ALLOWED`): the request came from a browser page and carried no key at all; add `apiKey` to the URL. `Tileset not available via API key`: this key cannot reach that tileset; check the catalog for what it can. None of these are billed.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                },
                                "example": {
                                    "success": false,
                                    "status": 403,
                                    "timestamp": "2026-09-24 03:41:32.073587",
                                    "errormsg": "Tileset not available via API key"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Unknown tileset. Not billed.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                },
                                "example": {
                                    "success": false,
                                    "status": 404,
                                    "timestamp": "2026-09-24 03:41:32.378699",
                                    "errormsg": "Unknown tileset"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Too many requests. Read `Retry-After` and back off; a map library firing a whole viewport of tiles at once is the usual cause. Not billed. Each key also has its own limits, answered in the standard envelope and told apart by `errormsg`: `Too many requests` means more than 600 a minute, and `Daily request limit exceeded` means the cap of 100,000 tiles a day is reached, which only the next day clears. Code `spend_cap_exceeded` means your monthly spend cap is reached. Its body is the SpendCapExceeded shape every capped route sends, with the billing state in the body and the `X-Billing-Period-*` headers. It is checked before the tile is fetched, so nothing is billed. Only the period reset at `resets_at`, or a higher cap, clears it.",
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying. On a spend cap this is the time to the period reset, which can be days.",
                                "schema": {
                                    "type": "integer",
                                    "example": 30
                                }
                            },
                            "X-Billing-Period-Reset": {
                                "description": "On a spend cap: when the current billing period resets, ISO 8601 UTC.",
                                "schema": {
                                    "type": "string",
                                    "example": "2026-11-01T00:00:00Z"
                                }
                            },
                            "X-Billing-Period-Cap-Cents": {
                                "description": "On a spend cap: the monthly spend cap the account set, in cents. Calls stop at included usage plus this cap.",
                                "schema": {
                                    "type": "integer",
                                    "example": 10000
                                }
                            },
                            "X-Billing-Period-Included-Cents": {
                                "description": "On a spend cap: the usage included in the plan this month, in cents (0 when none). Calls stop at this plus the cap.",
                                "schema": {
                                    "type": "integer",
                                    "example": 0
                                }
                            },
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            },
                            "X-RateLimit-Endpoint-Limit": {
                                "$ref": "#/components/headers/RateLimitEndpointLimit"
                            },
                            "X-RateLimit-Endpoint-Remaining": {
                                "$ref": "#/components/headers/RateLimitEndpointRemaining"
                            },
                            "X-RateLimit-Endpoint-Reset": {
                                "$ref": "#/components/headers/RateLimitEndpointReset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "$ref": "#/components/schemas/ErrorEnvelope"
                                        },
                                        {
                                            "$ref": "#/components/schemas/SpendCapExceeded"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Unexpected server failure while rendering the tile.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                },
                                "example": {
                                    "success": false,
                                    "status": 500,
                                    "timestamp": "2026-10-04 12:00:00.000000",
                                    "errormsg": "Internal server error"
                                }
                            }
                        }
                    },
                    "502": {
                        "description": "The imagery server did not answer. Nothing is billed (the meter records a tile only once one has been fetched), so a retry costs you nothing.",
                        "headers": {
                            "X-Request-Id": {
                                "$ref": "#/components/headers/RequestId"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorEnvelope"
                                }
                            }
                        }
                    }
                },
                "x-mapwise-rate-limit": {
                    "bucket": "endpoint",
                    "requests_per_second": 60,
                    "window_seconds": 1,
                    "minute_limit": 600,
                    "daily_limit": 100000
                }
            }
        }
    },
    "components": {
        "schemas": {
            "ErrorEnvelope": {
                "type": "object",
                "required": [
                    "success",
                    "errormsg"
                ],
                "description": "Every failure has this shape. success and errormsg are always present, and status almost always; timestamp is present on most bodies but not on every one (a spend-cap refusal and some rate-limit bodies carry none). The rest appear according to what failed. The list workflow routes, and the shared writers, add the RFC 9457 members type, title, detail and code (see docs/api/errors.md).",
                "properties": {
                    "success": {
                        "type": "boolean",
                        "example": false
                    },
                    "errormsg": {
                        "type": "string",
                        "description": "A human-readable explanation. Safe to log; not intended as end-user copy."
                    },
                    "status": {
                        "type": "integer"
                    },
                    "timestamp": {
                        "type": "string",
                        "example": "2026-09-20 15:56:08.839285"
                    },
                    "code": {
                        "type": "string",
                        "description": "A stable, machine-readable reason. Branch on this, never on errormsg, whose wording can change. Lowercase snake_case (invalid_parameter, quota_exhausted, plan_feature_unavailable ...) from the list in docs/api/errors.md, or, on refusals the router and exception handler send, a legacy UPPER_SNAKE value (NOT_FOUND, ACCESS_DENIED, SERVER_ERROR ...). On the list workflow routes it is top-level; the code that sat in `data.code` or `data.error_code` before (for example KEY_CLASS_MISMATCH, export_quota_exceeded, tier_required) stays there with its value. A client that does not know a code treats it by the HTTP status.",
                        "example": "quota_exhausted"
                    },
                    "type": {
                        "type": "string",
                        "format": "uri",
                        "description": "An RFC 9457 problem type: https://www.mapwise.com/api_v2/problems/<code>. It names the code and need not resolve.",
                        "example": "https://www.mapwise.com/api_v2/problems/quota_exhausted"
                    },
                    "title": {
                        "type": "string",
                        "description": "One fixed short sentence per code.",
                        "example": "Monthly allowance used up"
                    },
                    "detail": {
                        "type": "string",
                        "description": "The same text as errormsg."
                    },
                    "field_errors": {
                        "type": "array",
                        "description": "One entry per field or list row at fault. Present on a refusal about the request body.",
                        "items": {
                            "type": "object",
                            "required": [
                                "code",
                                "detail",
                                "pointer"
                            ],
                            "properties": {
                                "code": {
                                    "type": "string"
                                },
                                "detail": {
                                    "type": "string"
                                },
                                "pointer": {
                                    "type": "string",
                                    "description": "A JSON Pointer into the request body.",
                                    "example": "/sources/1/area/type"
                                },
                                "row": {
                                    "type": "integer",
                                    "description": "The row of the list at fault, when a row is."
                                }
                            }
                        }
                    },
                    "resets_at": {
                        "type": "string",
                        "format": "date-time",
                        "description": "When a quota or cap resets, ISO 8601 UTC, such as 2026-11-01T04:00:00Z. Present on a quota or spend-cap refusal, with a Retry-After header in seconds.",
                        "example": "2026-11-01T04:00:00Z"
                    },
                    "upgrade_url": {
                        "type": "string",
                        "format": "uri",
                        "description": "Where to change plan. Present on plan_feature_unavailable refusals, including the 403 plan gate the spend-cap middleware sends. The 429 spend_cap_exceeded body does not carry it."
                    },
                    "api_url": {
                        "type": "string",
                        "format": "uri",
                        "description": "Where to read about the MapWise API. Present on list_match_limit_reached, which points a signed-in seat at the API, billed per parcel."
                    },
                    "errors": {
                        "type": "array",
                        "description": "One entry per failed validation rule. Present on a 400.",
                        "items": {
                            "type": "string"
                        },
                        "example": [
                            "Missing required parameter: searchCounty"
                        ]
                    },
                    "help": {
                        "type": "object",
                        "description": "Where to read about the parameters that failed. Present on a 400."
                    },
                    "data": {
                        "type": "object",
                        "description": "Structured detail about the refusal, when there is any. This is where `code` travels for a gate refusal."
                    }
                }
            },
            "Masked": {
                "description": "A field withheld from keyless requests. Send an API key to receive it.",
                "type": "object",
                "additionalProperties": false,
                "required": [
                    "redacted",
                    "message"
                ],
                "properties": {
                    "redacted": {
                        "type": "boolean",
                        "enum": [
                            true
                        ]
                    },
                    "message": {
                        "type": "string"
                    }
                }
            },
            "MaskedParcelRecord": {
                "description": "A parcel as `/parcels/test` returns it. Keyless requests are answered at the anonymous level: the owner, the appraiser link, land use, zoning, condo, every value and every sale price come back masked. So do the building details. Identifiers, site address, acreage and sale dates do not. Built from a recorded response and kept strict, so a change in what is masked fails the contract test.",
                "type": "object",
                "additionalProperties": false,
                "required": [
                    "meta",
                    "identifiers",
                    "owner",
                    "site",
                    "land",
                    "building",
                    "valuation",
                    "sales"
                ],
                "properties": {
                    "meta": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "ogc_fid": {
                                "type": "integer"
                            },
                            "county": {
                                "type": "string"
                            },
                            "extracted_at": {
                                "type": "string",
                                "description": "When this parcel was last extracted from the source."
                            },
                            "count": {
                                "type": "integer"
                            },
                            "pa_pin_link": {
                                "$ref": "#/components/schemas/Masked"
                            }
                        }
                    },
                    "identifiers": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "pin": {
                                "type": "string"
                            },
                            "upin": {
                                "type": "string",
                                "nullable": true,
                                "description": "The universal PIN: the county's 5-digit FIPS, a hyphen, then `pin` exactly as the county writes it, for example `12083-0757-000-001`. Null when the row has no pin or its county has no Florida FIPS. The Selection routes name parcels by it."
                            },
                            "pin_clean": {
                                "type": "string"
                            },
                            "pin2": {
                                "type": "string",
                                "nullable": true
                            },
                            "pin2_clean": {
                                "type": "string",
                                "nullable": true
                            },
                            "altkey": {
                                "type": "string",
                                "nullable": true
                            },
                            "prop_details": {
                                "type": "string",
                                "nullable": true
                            }
                        }
                    },
                    "owner": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Masked"
                            },
                            {
                                "$ref": "#/components/schemas/NotPublished"
                            }
                        ]
                    },
                    "site": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "address": {
                                "type": "string",
                                "nullable": true
                            },
                            "city": {
                                "type": "string",
                                "nullable": true
                            },
                            "zipcode": {
                                "type": "string",
                                "nullable": true
                            },
                            "subdivision": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    {
                                        "$ref": "#/components/schemas/NotPublished"
                                    }
                                ]
                            },
                            "subdivision_common": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    {
                                        "$ref": "#/components/schemas/NotPublished"
                                    }
                                ]
                            },
                            "subdivision_id": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    {
                                        "$ref": "#/components/schemas/NotPublished"
                                    }
                                ]
                            },
                            "condo": {
                                "$ref": "#/components/schemas/MaskedValue"
                            }
                        }
                    },
                    "land": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "acres_deed": {
                                "type": "number",
                                "nullable": true
                            },
                            "acres_gis": {
                                "type": "number",
                                "nullable": true
                            },
                            "zoning": {
                                "$ref": "#/components/schemas/MaskedValue"
                            },
                            "land_use": {
                                "anyOf": [
                                    {
                                        "$ref": "#/components/schemas/Masked"
                                    },
                                    {
                                        "$ref": "#/components/schemas/NotPublished"
                                    }
                                ]
                            }
                        }
                    },
                    "building": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "num_buildings": {
                                "$ref": "#/components/schemas/MaskedValue"
                            },
                            "stories": {
                                "$ref": "#/components/schemas/MaskedValue"
                            },
                            "sqft": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "heated": {
                                        "$ref": "#/components/schemas/MaskedValue"
                                    },
                                    "total": {
                                        "$ref": "#/components/schemas/MaskedValue"
                                    },
                                    "adjusted": {
                                        "$ref": "#/components/schemas/MaskedValue"
                                    }
                                }
                            },
                            "total_sqft": {
                                "$ref": "#/components/schemas/MaskedValue"
                            },
                            "heated_sqft": {
                                "$ref": "#/components/schemas/MaskedValue"
                            },
                            "year_built_actual": {
                                "$ref": "#/components/schemas/MaskedValue"
                            },
                            "year_built_effective": {
                                "$ref": "#/components/schemas/MaskedValue"
                            },
                            "beds": {
                                "$ref": "#/components/schemas/MaskedValue"
                            },
                            "baths": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "full": {
                                        "$ref": "#/components/schemas/MaskedValue"
                                    },
                                    "half": {
                                        "$ref": "#/components/schemas/MaskedValue"
                                    }
                                }
                            }
                        }
                    },
                    "valuation": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "market": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "building": {
                                        "$ref": "#/components/schemas/MaskedValue"
                                    },
                                    "improvements": {
                                        "$ref": "#/components/schemas/MaskedValue"
                                    },
                                    "land": {
                                        "$ref": "#/components/schemas/MaskedValue"
                                    },
                                    "ag": {
                                        "$ref": "#/components/schemas/MaskedValue"
                                    },
                                    "total": {
                                        "$ref": "#/components/schemas/MaskedValue"
                                    }
                                }
                            },
                            "assessed_total": {
                                "$ref": "#/components/schemas/MaskedValue"
                            },
                            "exempt_total": {
                                "$ref": "#/components/schemas/MaskedValue"
                            },
                            "taxable_total": {
                                "$ref": "#/components/schemas/MaskedValue"
                            }
                        }
                    },
                    "sales": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "recent": {
                                "oneOf": [
                                    {
                                        "$ref": "#/components/schemas/MaskedSale"
                                    },
                                    {
                                        "type": "object",
                                        "nullable": true,
                                        "enum": [
                                            null
                                        ],
                                        "description": "Null: no recent sale."
                                    }
                                ]
                            },
                            "previous": {
                                "type": "array",
                                "items": {
                                    "$ref": "#/components/schemas/MaskedSale"
                                }
                            }
                        }
                    }
                }
            },
            "MaskedSale": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "date": {
                        "type": "string",
                        "nullable": true,
                        "description": "Sale dates are not masked."
                    },
                    "amount": {
                        "$ref": "#/components/schemas/MaskedValue"
                    },
                    "type": {
                        "$ref": "#/components/schemas/MaskedValue"
                    },
                    "qual": {
                        "$ref": "#/components/schemas/MaskedValue"
                    },
                    "qual_code": {
                        "$ref": "#/components/schemas/MaskedValue"
                    },
                    "vac": {
                        "$ref": "#/components/schemas/MaskedValue"
                    },
                    "book": {
                        "$ref": "#/components/schemas/MaskedValue"
                    },
                    "page": {
                        "$ref": "#/components/schemas/MaskedValue"
                    },
                    "docnum": {
                        "type": "string",
                        "nullable": true
                    },
                    "grantor": {
                        "type": "string",
                        "nullable": true
                    },
                    "qualification": {
                        "type": "object",
                        "nullable": true,
                        "additionalProperties": false,
                        "properties": {
                            "code": {
                                "$ref": "#/components/schemas/MaskedValue"
                            },
                            "status": {
                                "$ref": "#/components/schemas/MaskedValue"
                            },
                            "reason": {
                                "$ref": "#/components/schemas/MaskedValue"
                            },
                            "scheme": {
                                "$ref": "#/components/schemas/MaskedValue"
                            }
                        }
                    },
                    "vacant_improved": {
                        "$ref": "#/components/schemas/MaskedValue"
                    },
                    "type_label": {
                        "$ref": "#/components/schemas/MaskedValue"
                    },
                    "or_url": {
                        "$ref": "#/components/schemas/MaskedValue"
                    }
                }
            },
            "MaskedValue": {
                "description": "Withheld from keyless requests: always `***` (or `null` where the record has no value).",
                "type": "string",
                "nullable": true,
                "enum": [
                    "***",
                    null
                ]
            },
            "NotPublished": {
                "description": "The county never published this field: the source record has no value. Not the same as `null`, and not a withheld value. Returned for owner name, subdivision, land use and site address fields that are empty in the source, at every access level (#2939).",
                "type": "object",
                "additionalProperties": false,
                "required": [
                    "absent"
                ],
                "properties": {
                    "absent": {
                        "type": "string",
                        "enum": [
                            "not_published"
                        ]
                    }
                }
            },
            "ParcelRecord": {
                "type": "object",
                "properties": {
                    "meta": {
                        "type": "object",
                        "properties": {
                            "ogc_fid": {
                                "type": "integer"
                            },
                            "county": {
                                "type": "string"
                            },
                            "extracted_at": {
                                "type": "string",
                                "description": "When this parcel was last extracted from the source."
                            },
                            "count": {
                                "type": "integer"
                            },
                            "pa_pin_link": {
                                "type": "string",
                                "description": "Link to the county property appraiser record."
                            },
                            "legal_match_score": {
                                "type": "number",
                                "description": "How closely the legal description matched, 0 to 1. Present only on an approximate legal match (`meta.legal_match` is `approximate`).",
                                "example": 0.612
                            }
                        }
                    },
                    "geometry": {
                        "type": "object",
                        "description": "Present when `includeGeometry` is true.",
                        "properties": {
                            "geojson": {
                                "type": "string",
                                "nullable": true,
                                "description": "The parcel outline as a GeoJSON MultiPolygon, serialized as a string. Coordinates are EPSG:3857 (Web Mercator), named in its `crs` member."
                            },
                            "lat": {
                                "type": "number",
                                "nullable": true,
                                "description": "Latitude of the parcel centroid, EPSG:4326.",
                                "example": 29.642145
                            },
                            "lon": {
                                "type": "number",
                                "nullable": true,
                                "description": "Longitude of the parcel centroid, EPSG:4326.",
                                "example": -82.397344
                            }
                        }
                    },
                    "identifiers": {
                        "type": "object",
                        "properties": {
                            "pin": {
                                "type": "string"
                            },
                            "upin": {
                                "type": "string",
                                "nullable": true,
                                "description": "The universal PIN: the county's 5-digit FIPS, a hyphen, then `pin` exactly as the county writes it, for example `12083-0757-000-001`. Null when the row has no pin or its county has no Florida FIPS. The Selection routes name parcels by it."
                            },
                            "pin_clean": {
                                "type": "string"
                            },
                            "pin2": {
                                "type": "string",
                                "nullable": true
                            },
                            "pin2_clean": {
                                "type": "string",
                                "nullable": true
                            },
                            "altkey": {
                                "type": "string",
                                "nullable": true
                            },
                            "prop_details": {
                                "type": "string",
                                "nullable": true
                            }
                        }
                    },
                    "owner": {
                        "anyOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "primary_name": {
                                        "type": "string"
                                    },
                                    "secondary_name": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "tertiary_name": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "address_line1": {
                                        "type": "string"
                                    },
                                    "address_line2": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "address_line3": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "city": {
                                        "type": "string"
                                    },
                                    "state": {
                                        "type": "string"
                                    },
                                    "zipcode": {
                                        "type": "string"
                                    }
                                }
                            },
                            {
                                "$ref": "#/components/schemas/NotPublished"
                            }
                        ]
                    },
                    "site": {
                        "type": "object",
                        "properties": {
                            "address": {
                                "type": "string",
                                "nullable": true
                            },
                            "city": {
                                "type": "string",
                                "nullable": true
                            },
                            "zipcode": {
                                "type": "string",
                                "nullable": true
                            },
                            "subdivision": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    {
                                        "$ref": "#/components/schemas/NotPublished"
                                    }
                                ]
                            },
                            "subdivision_common": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    {
                                        "$ref": "#/components/schemas/NotPublished"
                                    }
                                ]
                            },
                            "subdivision_id": {
                                "anyOf": [
                                    {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    {
                                        "$ref": "#/components/schemas/NotPublished"
                                    }
                                ]
                            },
                            "condo": {
                                "type": "string",
                                "nullable": true
                            }
                        }
                    },
                    "land": {
                        "type": "object",
                        "properties": {
                            "acres_deed": {
                                "type": "number",
                                "nullable": true
                            },
                            "acres_gis": {
                                "type": "number",
                                "nullable": true
                            },
                            "zoning": {
                                "type": "string",
                                "nullable": true
                            },
                            "land_use": {
                                "anyOf": [
                                    {
                                        "type": "object",
                                        "properties": {
                                            "luse": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "luse_desc": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "lusedor": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "lusedor_desc": {
                                                "type": "string",
                                                "nullable": true
                                            }
                                        }
                                    },
                                    {
                                        "$ref": "#/components/schemas/NotPublished"
                                    }
                                ]
                            }
                        }
                    },
                    "building": {
                        "type": "object",
                        "properties": {
                            "num_buildings": {
                                "type": "integer",
                                "nullable": true
                            },
                            "stories": {
                                "type": "number",
                                "nullable": true
                            },
                            "sqft": {
                                "type": "object",
                                "properties": {
                                    "heated": {
                                        "type": "number",
                                        "nullable": true
                                    },
                                    "total": {
                                        "type": "number",
                                        "nullable": true
                                    },
                                    "adjusted": {
                                        "type": "number",
                                        "nullable": true
                                    }
                                }
                            },
                            "total_sqft": {
                                "type": "number",
                                "nullable": true
                            },
                            "heated_sqft": {
                                "type": "number",
                                "nullable": true
                            },
                            "year_built_actual": {
                                "type": "integer",
                                "nullable": true
                            },
                            "year_built_effective": {
                                "type": "integer",
                                "nullable": true
                            },
                            "beds": {
                                "type": "integer",
                                "nullable": true
                            },
                            "baths": {
                                "type": "object",
                                "properties": {
                                    "full": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "half": {
                                        "type": "integer",
                                        "nullable": true
                                    }
                                }
                            }
                        }
                    },
                    "valuation": {
                        "type": "object",
                        "properties": {
                            "market": {
                                "type": "object",
                                "properties": {
                                    "building": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "improvements": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "land": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "ag": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "total": {
                                        "type": "integer",
                                        "nullable": true
                                    }
                                }
                            },
                            "assessed_total": {
                                "type": "integer",
                                "nullable": true
                            },
                            "exempt_total": {
                                "type": "integer",
                                "nullable": true
                            },
                            "taxable_total": {
                                "type": "integer",
                                "nullable": true
                            }
                        }
                    },
                    "sales": {
                        "type": "object",
                        "properties": {
                            "recent": {
                                "$ref": "#/components/schemas/Sale"
                            },
                            "previous": {
                                "type": "array",
                                "items": {
                                    "$ref": "#/components/schemas/Sale"
                                }
                            }
                        }
                    },
                    "legal": {
                        "type": "object",
                        "description": "Present when `includeLegal` is true.",
                        "properties": {
                            "full": {
                                "type": "string",
                                "nullable": true,
                                "description": "The whole legal description."
                            },
                            "legal1": {
                                "type": "string",
                                "nullable": true,
                                "description": "The legal description as the county splits it, one part per field. Most counties fill only the first."
                            },
                            "legal2": {
                                "type": "string",
                                "nullable": true
                            },
                            "legal3": {
                                "type": "string",
                                "nullable": true
                            },
                            "legal4": {
                                "type": "string",
                                "nullable": true
                            },
                            "legal5": {
                                "type": "string",
                                "nullable": true
                            },
                            "legal6": {
                                "type": "string",
                                "nullable": true
                            }
                        }
                    }
                }
            },
            "ParcelSearchResponse": {
                "type": "object",
                "required": [
                    "success",
                    "data",
                    "meta"
                ],
                "example": {
                    "success": true,
                    "data": [
                        {
                            "meta": {
                                "ogc_fid": 1058677512,
                                "county": "ALACHUA",
                                "extracted_at": "20260814",
                                "count": 1,
                                "pa_pin_link": "https://qpublic.schneidercorp.com/Application.aspx?AppID=1081&LayerID=26490&PageTypeID=4&PageID=10770&Q=422075161&KeyValue=12057-000-000"
                            },
                            "identifiers": {
                                "pin": "12057-000-000",
                                "upin": "12001-12057-000-000",
                                "pin_clean": "12057000000",
                                "pin2": null,
                                "pin2_clean": null,
                                "altkey": null,
                                "prop_details": null
                            },
                            "owner": {
                                "primary_name": "1000 SE 7TH LLC",
                                "secondary_name": null,
                                "tertiary_name": null,
                                "address_line1": "1882 CARIBBEAN RD W",
                                "address_line2": null,
                                "address_line3": null,
                                "city": "WEST PALM BEACH",
                                "state": "FL",
                                "zipcode": "33406"
                            },
                            "site": {
                                "address": null,
                                "city": null,
                                "zipcode": null,
                                "subdivision": "WAITES, W.H. BLKS 4&5 R 2 (ROPERS ADDN)",
                                "subdivision_common": null,
                                "subdivision_id": "209300",
                                "condo": "NO"
                            },
                            "land": {
                                "acres_deed": null,
                                "acres_gis": 0.10391214201781951,
                                "zoning": "SF",
                                "land_use": {
                                    "luse": "0000",
                                    "luse_desc": "VACANT RESIDENTIAL",
                                    "lusedor": "00",
                                    "lusedor_desc": "Vacant Residential"
                                }
                            },
                            "building": {
                                "num_buildings": null,
                                "stories": null,
                                "sqft": {
                                    "heated": null,
                                    "total": null,
                                    "adjusted": null
                                },
                                "total_sqft": null,
                                "heated_sqft": null,
                                "year_built_actual": null,
                                "year_built_effective": null,
                                "beds": null,
                                "baths": {
                                    "full": null,
                                    "half": null
                                }
                            },
                            "valuation": {
                                "market": {
                                    "building": 0,
                                    "improvements": null,
                                    "land": 58000,
                                    "ag": 0,
                                    "total": 58000
                                },
                                "assessed_total": 5500,
                                "exempt_total": 0,
                                "taxable_total": 5500
                            },
                            "sales": {
                                "recent": {
                                    "date": "2025-12-10",
                                    "amount": 50000,
                                    "type": "WD        ",
                                    "qual": "Q",
                                    "vac": "Vac",
                                    "book": "5247                ",
                                    "page": "1849                ",
                                    "docnum": null,
                                    "grantor": null
                                },
                                "previous": [
                                    {
                                        "date": "2016-08-18",
                                        "amount": 3800,
                                        "type": "TD        ",
                                        "qual": "U",
                                        "vac": "Vac",
                                        "book": "4455                ",
                                        "page": "0104                ",
                                        "docnum": null,
                                        "grantor": null
                                    }
                                ]
                            }
                        }
                    ],
                    "meta": {
                        "record_count": 1,
                        "total_count": 108938
                    }
                },
                "properties": {
                    "success": {
                        "type": "boolean",
                        "example": true
                    },
                    "status": {
                        "type": "integer",
                        "example": 200
                    },
                    "timestamp": {
                        "type": "string",
                        "description": "When the response was generated, server time.",
                        "example": "2026-08-14 15:56:08.839285"
                    },
                    "data": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ParcelRecord"
                        }
                    },
                    "meta": {
                        "$ref": "#/components/schemas/SearchMeta"
                    }
                }
            },
            "ParcelTestResponse": {
                "type": "object",
                "required": [
                    "success",
                    "data",
                    "meta"
                ],
                "properties": {
                    "success": {
                        "type": "boolean",
                        "example": true
                    },
                    "status": {
                        "type": "integer",
                        "example": 200
                    },
                    "timestamp": {
                        "type": "string",
                        "description": "When the response was generated, server time.",
                        "example": "2026-08-14 15:56:08.839285"
                    },
                    "data": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/MaskedParcelRecord"
                        }
                    },
                    "meta": {
                        "$ref": "#/components/schemas/TestMeta"
                    }
                }
            },
            "ReportAllowanceResponse": {
                "type": "object",
                "required": [
                    "success",
                    "data"
                ],
                "properties": {
                    "success": {
                        "type": "boolean",
                        "example": true
                    },
                    "status": {
                        "type": "integer",
                        "example": 200
                    },
                    "timestamp": {
                        "type": "string",
                        "example": "2026-10-19 14:00:00.000000"
                    },
                    "data": {
                        "type": "object",
                        "required": [
                            "billing",
                            "quota",
                            "types"
                        ],
                        "properties": {
                            "billing": {
                                "type": "string",
                                "enum": [
                                    "metered",
                                    "subscription"
                                ],
                                "description": "`metered` for an API key: billed per report, with no monthly count."
                            },
                            "quota": {
                                "type": "object",
                                "nullable": true,
                                "description": "Null for an API key. A signed-in user's monthly report count.",
                                "properties": {
                                    "used": {
                                        "type": "integer"
                                    },
                                    "limit": {
                                        "type": "integer"
                                    },
                                    "remaining": {
                                        "type": "integer"
                                    },
                                    "resets_at": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "reason": {
                                        "type": "string",
                                        "nullable": true
                                    }
                                }
                            },
                            "types": {
                                "type": "object",
                                "description": "Every report type, keyed by its `type`.",
                                "additionalProperties": {
                                    "$ref": "#/components/schemas/ReportTypeAllowance"
                                }
                            }
                        }
                    }
                }
            },
            "ReportReference": {
                "type": "object",
                "description": "Which report this is and where to get it. The report's content is in the PDF.",
                "required": [
                    "id",
                    "type",
                    "title",
                    "status",
                    "redacted",
                    "subject",
                    "created_at",
                    "generated_at",
                    "preview_url",
                    "pdf_url"
                ],
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "`rpt_` and a UUID.",
                        "example": "rpt_3f2b8c1e-9d4a-4b7e-8f60-2a1c5d9e7b43"
                    },
                    "type": {
                        "type": "string",
                        "example": "property"
                    },
                    "title": {
                        "type": "string",
                        "example": "13600 Icot Blvd, Property Report"
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "active",
                            "archived"
                        ]
                    },
                    "redacted": {
                        "type": "boolean",
                        "description": "`true` for a report made without a paid plan. It has no PDF or preview for its owner."
                    },
                    "subject": {
                        "type": "object",
                        "required": [
                            "kind"
                        ],
                        "properties": {
                            "kind": {
                                "type": "string",
                                "enum": [
                                    "parcel",
                                    "point",
                                    "polygon"
                                ]
                            },
                            "pin": {
                                "type": "string"
                            },
                            "county": {
                                "type": "string",
                                "description": "From the report's parcel record, else the `metadata.county` you sent."
                            },
                            "site_address": {
                                "type": "string",
                                "description": "From the report's parcel record, else the `metadata.address` you sent."
                            }
                        }
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "generated_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "download_url": {
                        "type": "string",
                        "description": "Downloads the PDF without a key, for a person to open. A new link on every response; left out when one could not be made.",
                        "example": "https://www.mapwise.com/api_v2/reports/download/eyJhbGciOi"
                    },
                    "expires_at": {
                        "type": "string",
                        "format": "date-time",
                        "description": "When `download_url` stops working, 15 minutes after this response."
                    },
                    "preview_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Page 1 as a thumbnail, `GET /reports/{id}/preview?size=thumb`, once it is stored; null until then.",
                        "example": "/api_v2/reports/rpt_3f2b8c1e-9d4a-4b7e-8f60-2a1c5d9e7b43/preview?size=thumb&v=0f3a9c2e7b1d4a56"
                    },
                    "pdf_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "`GET /reports/{id}/pdf`, with your key. It does not expire. Null for a redacted report.",
                        "example": "/api_v2/reports/rpt_3f2b8c1e-9d4a-4b7e-8f60-2a1c5d9e7b43/pdf"
                    }
                }
            },
            "ReportRequest": {
                "type": "object",
                "required": [
                    "type",
                    "subject"
                ],
                "properties": {
                    "type": {
                        "type": "string",
                        "description": "The report to make. The types listed here are the ones this host offers; `GET /reports/allowance` says which your key can create.",
                        "enum": [
                            "property",
                            "flood"
                        ],
                        "example": "property"
                    },
                    "subject": {
                        "$ref": "#/components/schemas/ReportSubject"
                    },
                    "title": {
                        "type": "string",
                        "description": "The report's name. Left out, it is the parcel's address and the type. Each of your reports has its own title: a title you already use is a 409.",
                        "example": "13600 Icot Blvd, Property Report"
                    }
                }
            },
            "ReportResponse": {
                "type": "object",
                "required": [
                    "success",
                    "data"
                ],
                "properties": {
                    "success": {
                        "type": "boolean",
                        "example": true
                    },
                    "status": {
                        "type": "integer",
                        "example": 201
                    },
                    "timestamp": {
                        "type": "string",
                        "example": "2026-10-19 14:00:00.000000"
                    },
                    "meta": {
                        "type": "object",
                        "description": "On a create only, and absent on an idempotent replay.",
                        "properties": {
                            "record_count": {
                                "type": "integer",
                                "description": "1: the report this create billed.",
                                "example": 1
                            }
                        }
                    },
                    "data": {
                        "$ref": "#/components/schemas/ReportReference"
                    }
                }
            },
            "ReportSubject": {
                "type": "object",
                "description": "What the report is about. A property report takes a parcel; a flood report also takes a point or a polygon.",
                "required": [
                    "kind"
                ],
                "properties": {
                    "kind": {
                        "type": "string",
                        "enum": [
                            "parcel",
                            "point",
                            "polygon"
                        ],
                        "example": "parcel"
                    },
                    "pin": {
                        "type": "string",
                        "description": "The parcel id, as `/parcels` returns it. Required for a parcel.",
                        "example": "163004775150002200"
                    },
                    "lat": {
                        "type": "number",
                        "minimum": -90,
                        "maximum": 90,
                        "description": "Required for a point."
                    },
                    "lng": {
                        "type": "number",
                        "minimum": -180,
                        "maximum": 180,
                        "description": "Required for a point."
                    },
                    "geometry": {
                        "type": "object",
                        "description": "A GeoJSON Polygon in longitude and latitude. Required for a polygon.",
                        "required": [
                            "type",
                            "coordinates"
                        ],
                        "properties": {
                            "type": {
                                "type": "string",
                                "enum": [
                                    "Polygon"
                                ]
                            },
                            "coordinates": {
                                "type": "array",
                                "items": {
                                    "type": "array",
                                    "items": {
                                        "type": "array",
                                        "items": {
                                            "type": "number"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "metadata": {
                        "type": "object",
                        "description": "Send the parcel's `county`: parcel ids repeat across counties, and a pin found in two is a 422.",
                        "properties": {
                            "county": {
                                "type": "string",
                                "example": "PINELLAS"
                            },
                            "address": {
                                "type": "string",
                                "description": "Used for the report's subject when the parcel record has no site address."
                            }
                        }
                    }
                }
            },
            "ReportTypeAllowance": {
                "type": "object",
                "required": [
                    "available",
                    "reason",
                    "sections",
                    "sample_url"
                ],
                "properties": {
                    "available": {
                        "type": "boolean",
                        "description": "Whether your key can create this type here."
                    },
                    "reason": {
                        "type": "string",
                        "nullable": true,
                        "enum": [
                            "plan",
                            null
                        ],
                        "description": "Why not: `plan` (your plan does not include it). Null when available. A type not released on this host is not listed."
                    },
                    "sections": {
                        "type": "array",
                        "description": "The sections the report prints, in order.",
                        "items": {
                            "type": "object",
                            "required": [
                                "section",
                                "title",
                                "included"
                            ],
                            "properties": {
                                "section": {
                                    "type": "string",
                                    "example": "soils"
                                },
                                "title": {
                                    "type": "string",
                                    "example": "Soils"
                                },
                                "included": {
                                    "type": "boolean"
                                },
                                "reason": {
                                    "type": "string",
                                    "description": "When left out: `plan`. A section not released on this host is not listed."
                                }
                            }
                        }
                    },
                    "sample_url": {
                        "type": "string",
                        "description": "A sample PDF of this type, free and without a key.",
                        "example": "https://www.mapwise.com/api_v2/reports/sample/property"
                    },
                    "coverage": {
                        "type": "object",
                        "description": "With `pin` and `county`, for a one-dataset type you can create: whether a create for that parcel would be refused.",
                        "required": [
                            "covered"
                        ],
                        "properties": {
                            "covered": {
                                "type": "boolean",
                                "nullable": true,
                                "description": "Null when it cannot be told now (`reason` subject_unresolved or unavailable)."
                            },
                            "reason": {
                                "type": "string"
                            },
                            "authority": {
                                "type": "string"
                            },
                            "summary": {
                                "type": "string"
                            },
                            "message": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "Sale": {
                "type": "object",
                "nullable": true,
                "properties": {
                    "date": {
                        "type": "string",
                        "nullable": true
                    },
                    "amount": {
                        "type": "integer",
                        "nullable": true
                    },
                    "type": {
                        "type": "string",
                        "nullable": true
                    },
                    "qual": {
                        "type": "string",
                        "nullable": true,
                        "description": "The county's sale qualification as the MapWise pipeline standardizes it. In a county the current standardizer has processed, the verdict: Q (qualified), U (unqualified) or N (the appraiser gave no verdict). In a county not yet reprocessed, the Florida DOR two-digit code."
                    },
                    "qual_code": {
                        "type": "string",
                        "nullable": true,
                        "description": "The Florida DOR two-digit sale-qualification code beside a Q/U/N verdict in `qual`, where the county's value reaches one. Null for a verdict-only county, a pre-2009 sale, or a county whose `qual` still holds the DOR code."
                    },
                    "vac": {
                        "type": "string",
                        "nullable": true
                    },
                    "book": {
                        "type": "string",
                        "nullable": true
                    },
                    "page": {
                        "type": "string",
                        "nullable": true
                    },
                    "docnum": {
                        "type": "string",
                        "nullable": true
                    },
                    "grantor": {
                        "type": "string",
                        "nullable": true
                    },
                    "qualification": {
                        "type": "object",
                        "nullable": true,
                        "description": "MapWise's reading of `qual` and `qual_code` against the Florida DOR sale-qualification codes. A Q/U/N verdict sets `status`; a DOR code beside it, on a sale dated 2009-01-01 or later, supplies `code` and `reason`. Null when `qual` is empty or unrecognised, or when it is a numeric code on a sale dated before 2009-01-01 or undated (before the statewide codes, counties used their own lists).",
                        "required": [
                            "code",
                            "status",
                            "reason",
                            "scheme"
                        ],
                        "properties": {
                            "code": {
                                "type": "string",
                                "description": "A DOR two-digit code, or Q/U/N where there is only a verdict."
                            },
                            "scheme": {
                                "type": "string",
                                "description": "The code system `code` belongs to: fl_dor (Florida DOR sale-qualification codes) or county (a Q/U/N verdict with no DOR code). Extensible: treat an unknown value as unknown."
                            },
                            "status": {
                                "type": "string",
                                "description": "One of: qualified (DOR 01–06, Q), disqualified (11–21, 30–43, U), pending (98, 99, N). Where `qual` is a verdict it sets the status, even when the DOR code beside it reads otherwise. Extensible: treat an unknown value as unknown."
                            },
                            "reason": {
                                "type": "string",
                                "nullable": true,
                                "description": "Short plain-language meaning of the DOR code; null for a verdict with no DOR code."
                            }
                        }
                    },
                    "vacant_improved": {
                        "type": "string",
                        "nullable": true,
                        "description": "vacant or improved, from `vac` where the county's word is unambiguous; null otherwise."
                    },
                    "type_label": {
                        "type": "string",
                        "nullable": true,
                        "description": "Plain-language deed instrument for `type`; null when unknown or a numeric county code. To display an instrument, show `type_label`, else `type` unless it is all digits: some counties store a transaction or qualification code there, which is not an instrument."
                    },
                    "or_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Link to the county Clerk's Official Records document for this sale, where the county is supported and the sale has a book/page or document number. A third-party site, provided as-is; it may change."
                    }
                }
            },
            "SearchMeta": {
                "type": "object",
                "required": [
                    "record_count",
                    "total_count"
                ],
                "properties": {
                    "record_count": {
                        "type": "integer",
                        "description": "Records returned in this page."
                    },
                    "total_count": {
                        "type": "integer",
                        "description": "Total matching records."
                    },
                    "legal_match": {
                        "type": "string",
                        "enum": [
                            "exact",
                            "approximate"
                        ],
                        "description": "Present when `searchLegal` was sent. `approximate` means no legal description contained the text, so the closest matches were returned instead, ranked by `legal_match_score`."
                    },
                    "legal_match_capped": {
                        "type": "boolean",
                        "description": "Present with an approximate match: the results are one capped page, so paging does not apply."
                    },
                    "sort_overridden": {
                        "type": "boolean",
                        "description": "Present with an approximate match: results are ordered by match score, not by `sortBy`."
                    },
                    "legal_fallback_skipped": {
                        "type": "string",
                        "description": "Present when no exact legal match was found and the approximate search did not run. `term_too_short` means the `searchLegal` text is shorter than `legal_fallback_min_length`.",
                        "example": "term_too_short"
                    },
                    "legal_fallback_min_length": {
                        "type": "integer",
                        "description": "The shortest `searchLegal` text the approximate search accepts, in characters.",
                        "example": 12
                    },
                    "coverage": {
                        "type": "object",
                        "description": "Unstable, and sent only where non-Florida parcels are enabled. Present on a non-aggregated search with at least one overlay include: for `parcels` and each requested overlay (keyed like `meta.datasets`), whether the states on this page are covered by that dataset.",
                        "additionalProperties": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                                "status",
                                "states"
                            ],
                            "properties": {
                                "status": {
                                    "type": "string",
                                    "enum": [
                                        "full",
                                        "partial",
                                        "none"
                                    ],
                                    "description": "`full`: every state on the page is covered. `partial`: some are, or a state is covered only in part. `none`: none are."
                                },
                                "states": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    },
                                    "description": "The states on the page that the dataset covers."
                                },
                                "note": {
                                    "type": "string",
                                    "description": "Present unless `status` is `full`."
                                }
                            }
                        },
                        "example": {
                            "parcels": {
                                "status": "full",
                                "states": [
                                    "FL",
                                    "DE"
                                ]
                            },
                            "land_cover": {
                                "status": "partial",
                                "states": [
                                    "FL"
                                ],
                                "note": "land-cover has no data in DE"
                            }
                        }
                    }
                }
            },
            "SpendCapExceeded": {
                "type": "object",
                "description": "The monthly spend cap refusal. It carries the standard error envelope (success, status, errormsg, and the problem members type, title, detail, code) beside the billing state a client needs to decide what to do, so a client that reads only the envelope still gets a reason. Branch on the top-level `error` (spend_cap_exceeded) or on `code`. Retrying before resets_at cannot succeed. Raise the cap in My Account or wait.",
                "required": [
                    "error",
                    "current_spend_cents",
                    "cap_cents",
                    "reset_at"
                ],
                "properties": {
                    "error": {
                        "type": "string",
                        "example": "spend_cap_exceeded"
                    },
                    "endpoint": {
                        "type": "string",
                        "example": "parcels"
                    },
                    "current_spend_cents": {
                        "type": "integer",
                        "example": 10000
                    },
                    "included_cents": {
                        "type": "integer",
                        "description": "The usage included in the plan this month, in cents (0 when none). Calls stop at included_cents plus cap_cents.",
                        "example": 0
                    },
                    "cap_cents": {
                        "type": "integer",
                        "description": "The monthly spend cap the account set, not the cutoff: calls stop at included_cents plus cap_cents.",
                        "example": 10000
                    },
                    "reset_at": {
                        "type": "string",
                        "example": "2026-10-01T00:00:00Z"
                    },
                    "estimated_call_cost_cents": {
                        "type": "integer",
                        "example": 6
                    },
                    "request_id": {
                        "type": "string",
                        "example": "01a0ba0a-e8f4-7fff-853c-bbce832d6c46"
                    },
                    "success": {
                        "type": "boolean",
                        "example": false
                    },
                    "status": {
                        "type": "integer",
                        "example": 429
                    },
                    "errormsg": {
                        "type": "string",
                        "example": "Your spend cap for this billing period is reached. It resets at 2026-10-01T00:00:00Z. Ask an account billing admin to raise it, or wait until it resets."
                    },
                    "type": {
                        "type": "string",
                        "example": "https://www.mapwise.com/api_v2/problems/spend_cap_exceeded"
                    },
                    "title": {
                        "type": "string",
                        "example": "Spend cap reached"
                    },
                    "detail": {
                        "type": "string",
                        "description": "Equal to errormsg."
                    },
                    "code": {
                        "type": "string",
                        "example": "spend_cap_exceeded"
                    },
                    "resets_at": {
                        "type": "string",
                        "description": "Equal to reset_at.",
                        "example": "2026-10-01T00:00:00Z"
                    }
                }
            },
            "TestMeta": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/SearchMeta"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "test_mode": {
                                "type": "boolean"
                            },
                            "data_scope": {
                                "type": "object",
                                "properties": {
                                    "county": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                ]
            },
            "TileCatalogResponse": {
                "type": "object",
                "required": [
                    "success",
                    "data"
                ],
                "description": "The tilesets the credential you sent can fetch.",
                "properties": {
                    "success": {
                        "type": "boolean",
                        "example": true
                    },
                    "status": {
                        "type": "integer",
                        "example": 200
                    },
                    "timestamp": {
                        "type": "string",
                        "example": "2026-09-24 21:25:51.289959"
                    },
                    "data": {
                        "type": "object",
                        "required": [
                            "tilesets"
                        ],
                        "properties": {
                            "tilesets": {
                                "type": "array",
                                "items": {
                                    "$ref": "#/components/schemas/TilesetSummary"
                                }
                            }
                        }
                    }
                }
            },
            "TileJson": {
                "type": "object",
                "required": [
                    "tilejson",
                    "name",
                    "tiles",
                    "minzoom",
                    "maxzoom",
                    "bounds"
                ],
                "description": "A TileJSON 3.0.0 document. Hand it to your map library rather than building tile URLs yourself. It carries the template, the footprint, the usable zoom range and the attribution together.",
                "properties": {
                    "tilejson": {
                        "type": "string",
                        "example": "3.0.0"
                    },
                    "name": {
                        "type": "string",
                        "example": "aerials-latest"
                    },
                    "description": {
                        "type": "string",
                        "example": "Aerials — Latest (most recent available per county)"
                    },
                    "attribution": {
                        "type": "string",
                        "description": "Display this, and do not let your interface cover it. It credits the imagery source and the tile service in one string. MapLibre, Leaflet and OpenLayers render it as HTML in their attribution control; the TileJSON spec lets a client treat the field as plain text instead, so handle the markup if you render it yourself.",
                        "example": "Imagery: <a href=\"https://www.fdot.gov/\">FDOT</a> / <a href=\"https://floridarevenue.com/\">FDOR</a> / Florida counties · Tiles © <a href=\"https://www.mapwise.com/\">MapWise</a>"
                    },
                    "scheme": {
                        "type": "string",
                        "example": "xyz"
                    },
                    "tiles": {
                        "type": "array",
                        "description": "The absolute tile templates. For an API key the key is already embedded, which is what lets a plain raster source work with no request interception.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "minzoom": {
                        "type": "integer",
                        "example": 4
                    },
                    "maxzoom": {
                        "type": "integer",
                        "example": 21
                    },
                    "bounds": {
                        "type": "array",
                        "description": "Coverage as [west, south, east, north] in EPSG:4326.",
                        "items": {
                            "type": "number"
                        }
                    },
                    "center": {
                        "type": "array",
                        "description": "A suggested [longitude, latitude, zoom].",
                        "items": {
                            "type": "number"
                        }
                    },
                    "vector_layers": {
                        "type": "array",
                        "description": "Vector tilesets only (TileJSON 3.0.0 requires it for them; raster tilesets omit it). One entry per source layer inside each tile: `id` is the source-layer name to style against, `fields` maps each attribute to a description that names its value type as encoded in the tile. No tileset an API key can reach is a vector tileset yet, so an API key never sees this field today.",
                        "items": {
                            "type": "object",
                            "required": [
                                "id",
                                "fields"
                            ],
                            "properties": {
                                "id": {
                                    "type": "string",
                                    "example": "parcels-all-outline-mvt"
                                },
                                "description": {
                                    "type": "string",
                                    "example": "Parcel outlines: one polygon per parcel, simplified below the pixel size at each zoom"
                                },
                                "minzoom": {
                                    "type": "integer",
                                    "example": 14
                                },
                                "maxzoom": {
                                    "type": "integer",
                                    "example": 22
                                },
                                "fields": {
                                    "type": "object",
                                    "additionalProperties": {
                                        "type": "string"
                                    },
                                    "example": {
                                        "ogc_fid": "Parcel feature id (String of digits; the same value is the feature id)"
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "TilesetSummary": {
                "type": "object",
                "required": [
                    "name",
                    "display_name",
                    "vintage",
                    "tier",
                    "url_template",
                    "tilejson"
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The identifier used in every tile URL.",
                        "example": "aerials-latest"
                    },
                    "display_name": {
                        "type": "string",
                        "example": "Aerials — Latest"
                    },
                    "vintage": {
                        "type": "string",
                        "description": "Which imagery this is, in words.",
                        "example": "most recent available per county"
                    },
                    "tier": {
                        "type": "string",
                        "description": "The access tier this tileset sits in.",
                        "example": "authenticated"
                    },
                    "url_template": {
                        "type": "string",
                        "description": "The XYZ tile path. It already carries the `/api_v2` prefix, so join it to the host alone and add your key as `apiKey`, or take the ready-made absolute template from the TileJSON instead.",
                        "example": "/api_v2/tiles/aerials-latest/{z}/{x}/{y}.jpg"
                    },
                    "tilejson": {
                        "type": "string",
                        "nullable": true,
                        "description": "Path to this tileset's TileJSON, or null when it publishes none.",
                        "example": "/api_v2/tiles/aerials-latest/tiles.json"
                    }
                }
            }
        },
        "headers": {
            "RateLimitBucketCapacity": {
                "description": "Your burst allowance: the most requests your bucket holds.",
                "schema": {
                    "type": "integer"
                }
            },
            "RateLimitBucketRefillRate": {
                "description": "Requests per second added back to your bucket.",
                "schema": {
                    "type": "integer"
                }
            },
            "RateLimitBucketRemaining": {
                "description": "Requests left in your bucket now.",
                "schema": {
                    "type": "integer"
                }
            },
            "RateLimitEndpointLimit": {
                "description": "Requests this endpoint allows per window, counted per account (or per IP address without a key).",
                "schema": {
                    "type": "integer"
                }
            },
            "RateLimitEndpointRemaining": {
                "description": "Requests left in the current window.",
                "schema": {
                    "type": "integer"
                }
            },
            "RateLimitEndpointReset": {
                "description": "When the current window ends, as a Unix timestamp in seconds.",
                "schema": {
                    "type": "integer"
                }
            },
            "RateLimitGlobalLimit": {
                "description": "Requests per minute the service accepts across all callers. A shared safeguard, not your own allowance.",
                "schema": {
                    "type": "integer"
                }
            },
            "RateLimitGlobalRemaining": {
                "description": "Requests left in the shared minute.",
                "schema": {
                    "type": "integer"
                }
            },
            "RateLimitGlobalReset": {
                "description": "When the shared minute ends, as a Unix timestamp in seconds.",
                "schema": {
                    "type": "integer"
                }
            },
            "RequestId": {
                "description": "Identifies this request in our logs. Present on every response, including failures. Include it when you contact support. If you send your own X-Request-Id (up to 64 characters of letters, digits and hyphens) it is used instead of ours, so send something unique.",
                "schema": {
                    "type": "string",
                    "example": "01a0ba0a-e8f4-7fff-853c-bbce832d6c46"
                }
            }
        },
        "securitySchemes": {
            "ApiKeyHeader": {
                "type": "apiKey",
                "in": "header",
                "name": "X-API-Key"
            },
            "BearerAuth": {
                "type": "http",
                "scheme": "bearer"
            },
            "PublishableKeyQuery": {
                "type": "apiKey",
                "in": "query",
                "name": "apiKey",
                "description": "A publishable key (mw_pk_...) in the query string. This is how every map library sends one, and the only way an <img> tag can. The tile routes take this and nothing else: a secret key is refused with KEY_CLASS_MISMATCH, and a publishable key is refused everywhere else for the same reason. The key is origin-locked, so it is safe in a page a visitor can read."
            }
        }
    }
}
