{
  "ok": true,
  "endpoint": "changelog",
  "api": "PropData v1",
  "latest_version": "2026.06.22-parcel-geometry-beta",
  "count": 8,
  "updates": [
    {
      "version": "2026.06.22-parcel-geometry-beta",
      "title": "Parcel geometry beta endpoint",
      "type": "endpoint_add",
      "status": "beta",
      "date": "2026-06-22",
      "summary": "Added nationwide /v1/parcel-geometry endpoint with county-sourced ArcGIS coverage when configured.",
      "details": [
        "New GET /v1/parcel-geometry?county_fips=&parcel= returns GeoJSON parcel boundaries.",
        "Supports parcel, parcel_id, apn, county_fips, and fips aliases.",
        "Returns HTTP 200 with geometry_available:false when county source is not configured.",
        "Caches successful lookups in parcel_geometry_cache via Supabase.",
        "Optional /v1/property?include_geometry=1 attaches geometry to parcel lookup responses only."
      ],
      "affected_endpoints": [
        "/v1/parcel-geometry",
        "/v1/property"
      ]
    },
    {
      "version": "2026.06.21-rent-miami",
      "title": "Rent endpoint national ZIP hardening",
      "type": "endpoint_fix",
      "status": "live",
      "date": "2026-06-21",
      "summary": "Fixed /v1/rent national ZIP handling for Miami 33139 so it returns clean HTTP 200 JSON instead of Cloudflare Worker 1101/500 errors.",
      "details": [
        "Added buildRentProfile response builder for /v1/rent.",
        "Added safe /v1/rent route guard so rent endpoint exceptions return JSON instead of Cloudflare Worker errors.",
        "Verified /v1/rent?state=Florida&zip=33139 returns HTTP 200 with live Census ACS-backed rent data.",
        "Response now includes endpoint, location, estimated rent, rent source, confidence, coverage_status, and generated timestamp.",
        "Added Miami 33139 rent coverage to the post-deploy regression suite."
      ],
      "affected_endpoints": [
        "/v1/rent"
      ]
    },
    {
      "version": "2026.06.20-market-austin",
      "title": "Market endpoint national ZIP hardening",
      "type": "endpoint_fix",
      "status": "live",
      "date": "2026-06-20",
      "summary": "Fixed /v1/market national ZIP handling for Austin 78701 so it returns clean HTTP 200 JSON instead of Cloudflare Worker 1101/500 errors.",
      "details": [
        "Added safe /v1/market route guard so missing helper errors return JSON instead of Cloudflare HTML.",
        "Restored the missing market helper chain used by handleMarket: fetchFMR, fetchZORI, fetchRealtor, fetchRedfin, fetchCensus, fetchFHFA, and fetchFREDMacro.",
        "Added buildMarketProfile response builder so /v1/market can return a structured market payload.",
        "Added a no-op scheduled() handler so configured cron triggers no longer create Worker exceptions.",
        "Verified /v1/market?zip=78701 returns HTTP 200 with rent, demographics, macro, market, and source transparency fields.",
        "Added Austin 78701 market coverage to the post-deploy regression suite."
      ],
      "affected_endpoints": [
        "/v1/market",
        "/v1/rent",
        "/v1/listing"
      ]
    },
    {
      "version": "2026.06.20-neighborhood",
      "title": "Neighborhood endpoint city/state fix",
      "type": "endpoint_fix",
      "status": "live",
      "date": "2026-06-20",
      "summary": "Fixed /v1/neighborhood city/state requests so they return live JSON instead of Cloudflare Worker 1101/500 errors.",
      "details": [
        "Added missing production handleNeighborhood handler.",
        "Patched city/state lookup for Albany NY and Birmingham AL ZIP group support.",
        "Added ZIP-column fallback so Census ACS lookups check both zip_code and zip schema variants.",
        "Verified /v1/neighborhood?limit=20&state=NY&city=Albany returns HTTP 200 with 7 live Census ACS ZIP neighborhood records."
      ],
      "affected_endpoints": [
        "/v1/neighborhood"
      ]
    },
    {
      "version": "2026.06.19",
      "title": "Alabama property/comps stabilization",
      "type": "infrastructure",
      "status": "live",
      "date": "2026-06-19",
      "summary": "Stabilized Alabama property and comps responses so endpoints return HTTP 200 JSON instead of runtime errors.",
      "details": [
        "Resolved /v1/comps tier gate behavior for Pro customers.",
        "Restored /v1/property response stability for Alabama/Birmingham test set.",
        "Added regression coverage across health, usage, property, comps, preforeclosure, listing, market, and rent endpoints."
      ],
      "affected_endpoints": [
        "/v1/property",
        "/v1/comps",
        "/v1/preforeclosure",
        "/v1/listing",
        "/v1/market",
        "/v1/rent"
      ]
    },
    {
      "version": "2026.06.19-al-crosswalk",
      "title": "ZIP to county FIPS crosswalk support",
      "type": "data_pipeline",
      "status": "live",
      "date": "2026-06-19",
      "summary": "Added SQL-backed ZIP/county crosswalk support for Alabama fallback matching.",
      "details": [
        "Birmingham ZIPs 35203, 35205, and 35233 mapped to Jefferson County FIPS 01073.",
        "Crosswalk allows safer county-level fallback when exact situs ZIP fields are missing in source assessor slices.",
        "Fallback responses are labeled transparently with match_level and fallback_reason."
      ],
      "affected_endpoints": [
        "/v1/property",
        "/v1/comps"
      ]
    },
    {
      "version": "2026.06.19-jefferson-al-enrichment",
      "title": "Jefferson County AL owner/address enrichment lane",
      "type": "data_enrichment",
      "status": "in_progress",
      "date": "2026-06-19",
      "summary": "Opened official Jefferson County AL enrichment pipeline for owner name, situs address, mailing address, ZIP, and parcel identifiers.",
      "details": [
        "Official county ArcGIS source identified and tested.",
        "property_contact_enrichment table receiving source-backed owner/address/mailing records.",
        "Phone enrichment is available separately when source-backed or via paid phone intelligence/skip-trace enrichment."
      ],
      "affected_endpoints": [
        "/v1/property",
        "/v1/comps"
      ]
    },
    {
      "version": "2026.06.19-regression",
      "title": "Post-deploy regression test suite",
      "type": "quality",
      "status": "live",
      "date": "2026-06-19",
      "summary": "Added repeatable regression tests to reduce risk when shipping endpoint fixes.",
      "details": [
        "Regression set currently checks 19 critical PropData paths.",
        "Designed to catch HTTP 500, Cloudflare 1101, HTML error bodies, and missing JSON behavior before customer handoff.",
        "Golden backup files created after successful deploy/test cycle."
      ],
      "affected_endpoints": [
        "/v1/health",
        "/v1/usage",
        "/v1/property",
        "/v1/comps",
        "/v1/preforeclosure",
        "/v1/listing",
        "/v1/market",
        "/v1/rent"
      ]
    }
  ],
  "generated_at": "2026-06-27T15:50:50.078Z",
  "powered_by": "PropData / PropTechUSA.ai"
}