{
  "title": "Building Permit Address Lookup",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "city": {
      "title": "City portal",
      "type": "string",
      "description": "Which municipal permit portal to query. One city per run - addresses from another city will not match. The label states what each portal supports: only some publish the expiration and final-inspection data needed to flag an expired-but-open permit.",
      "editor": "select",
      "default": "austin",
      "prefill": "austin",
      "enum": [
        "austin",
        "seattle",
        "cincinnati",
        "new_york",
        "chicago",
        "san_francisco",
        "los_angeles",
        "mesa",
        "baton_rouge",
        "marin_county"
      ],
      "enumTitles": [
        "Austin, TX - open + expired verdict",
        "Seattle, WA - open + expired verdict",
        "Cincinnati, OH - open + expired verdict",
        "New York, NY - open + expired verdict",
        "Chicago, IL - open verdict only (no expiry published)",
        "San Francisco, CA - open verdict only (no expiry published)",
        "Los Angeles, CA - open verdict only (no expiry published)",
        "Mesa, AZ - open verdict only (no expiry published)",
        "Baton Rouge, LA - permit history only (no status published)",
        "Marin County, CA - permit history only (no status published)"
      ],
      "sectionCaption": "1 · Choose one city and its addresses",
      "sectionDescription": "Only Austin has a built-in empty-input address sample. Other cities require your own addresses."
    },
    "addresses": {
      "title": "Addresses to check",
      "type": "array",
      "description": "One street address per line, in the city selected below. A house number is required; unit, city, state and ZIP are optional and are ignored when matching (e.g. \"4414 Banister Ln\", \"4414 Banister Ln, Austin, TX 78745\"). Each address produces exactly one result row. Leave empty with Austin selected to run a built-in 3-address sample. Other cities require your own addresses.",
      "editor": "stringList",
      "prefill": [
        "2603 Ware Rd",
        "4414 Banister Ln",
        "1306 Payne Ave"
      ]
    },
    "lookbackYears": {
      "title": "Permit history lookback (years)",
      "type": "integer",
      "description": "How far back to search permit history from today. 10 years covers most disclosure and underwriting needs; raise it for a full property history, lower it to speed up a large address list.",
      "editor": "number",
      "default": 10,
      "minimum": 1,
      "maximum": 60,
      "unit": "years",
      "sectionCaption": "2 · Bound the permit history",
      "sectionDescription": "Caps and lookback settings affect the evidence behind each address finding."
    },
    "maxPermitsPerAddress": {
      "title": "Maximum permits fetched per address",
      "type": "integer",
      "description": "Upper bound on permits fetched per address before matching, newest first. The default of 100 covers any normal parcel; large commercial sites can hold several hundred permits, so raise it if you are checking one. When an address hits this cap its row says so (permitCapReached: true, and the summary reads \"at least N\"), because older permits were not fetched.",
      "editor": "number",
      "default": 100,
      "minimum": 1,
      "maximum": 1000
    },
    "maxRunSeconds": {
      "title": "Run time budget (seconds)",
      "type": "integer",
      "description": "Stop cleanly after this many seconds and keep whatever has already been written, rather than being killed mid-run. Raise it for long address lists - roughly 1-2 seconds per address.",
      "editor": "number",
      "default": 240,
      "minimum": 30,
      "unit": "seconds"
    },
    "socrataAppToken": {
      "title": "Socrata app token (optional)",
      "type": "string",
      "description": "Optional Socrata app token to raise the open-data rate limit on long address lists. Free to obtain from any Socrata portal. Not required for normal use.",
      "editor": "textfield",
      "isSecret": true,
      "sectionCaption": "3 · Optional portal credential",
      "sectionDescription": "A Socrata app token is optional and remains a secret field."
    }
  },
  "required": [],
  "description": "Supply addresses within the supported jurisdictions to collect permit history and the Actor’s stated checks. Read the underlying permit records; a lookup is not a property or compliance certification."
}
