{
  "openapi": "3.1.0",
  "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
  "info": {
    "title": "Base Verified Rentals API",
    "version": "0.1.0+2acf413ad5ec",
    "summary": "Dated, field-level rental records for the apartment communities Base manages and leases in Texas.",
    "description": "Every value carries a status (published, observed, estimated, held, not_stated, withheld, stale), sources and an as-of date. Never quote a value marked held or not_stated. Request endpoints create a pending request that a person must confirm at the returned confirm_url; nothing is sent until then. Same records and tools over MCP at /mcp.",
    "contact": {
      "name": "Base leasing (text)",
      "url": "https://listings.base.homes/official-contacts"
    }
  },
  "servers": [
    {
      "url": "https://listings.base.homes"
    }
  ],
  "externalDocs": {
    "description": "For AI agents",
    "url": "https://listings.base.homes/about/agents"
  },
  "tags": [
    {
      "name": "records"
    },
    {
      "name": "requests"
    }
  ],
  "paths": {
    "/api/listings": {
      "get": {
        "operationId": "list_listings",
        "summary": "Every community with listed homes, rent and total monthly cost",
        "responses": {
          "200": {
            "description": "Listings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListingsResponse"
                }
              }
            },
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "The snapshot id (\"{snapshot_id}\")."
              }
            }
          }
        }
      }
    },
    "/api/properties/{id}": {
      "get": {
        "operationId": "get_property",
        "summary": "Full Rental Record for one community",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ashton-park",
                "highlander",
                "the-midway",
                "jupiter-place"
              ]
            },
            "example": "ashton-park",
            "description": "Community id."
          }
        ],
        "responses": {
          "200": {
            "description": "Property record",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PropertyRecord"
                }
              }
            },
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "The snapshot id (\"{snapshot_id}\")."
              }
            }
          },
          "404": {
            "description": "Unknown community id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/units/{unit_id}": {
      "get": {
        "operationId": "get_unit",
        "summary": "One listed home with its floor plan and community contacts",
        "parameters": [
          {
            "name": "unit_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "the-midway-u44"
          }
        ],
        "responses": {
          "200": {
            "description": "Home record",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnitResponse"
                }
              }
            },
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "The snapshot id (\"{snapshot_id}\")."
              }
            }
          },
          "404": {
            "description": "Unknown or unlisted home (one identical not_found)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/snapshot.json": {
      "get": {
        "operationId": "get_snapshot",
        "summary": "The whole snapshot (every record, sources, vocabulary)",
        "responses": {
          "200": {
            "description": "Snapshot",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Snapshot"
                }
              }
            },
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "The snapshot id (\"{snapshot_id}\")."
              }
            }
          }
        }
      }
    },
    "/api/sources": {
      "get": {
        "operationId": "get_sources",
        "summary": "Source dictionary and status vocabulary",
        "responses": {
          "200": {
            "description": "Sources",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SourcesResponse"
                }
              }
            },
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "The snapshot id (\"{snapshot_id}\")."
              }
            }
          }
        }
      }
    },
    "/api/units": {
      "get": {
        "operationId": "search_units",
        "summary": "Search available homes by listing facts only",
        "description": "Whitelisted filters only. Any other parameter returns 400 unsupported_filter (\"We only filter on listing facts.\") with details.allowed; the value is never echoed. Tracking parameters (utm_*, fbclid, gclid, msclkid, ref) are ignored.",
        "parameters": [
          {
            "name": "city",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "killeen-tx",
                "waco-tx",
                "garland-tx"
              ]
            },
            "description": "Market id."
          },
          {
            "name": "property",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ashton-park",
                "highlander",
                "the-midway",
                "jupiter-place"
              ]
            },
            "description": "Community id."
          },
          {
            "name": "beds_min",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 5
            },
            "description": "beds min"
          },
          {
            "name": "beds_max",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 5
            },
            "description": "beds max"
          },
          {
            "name": "baths_min",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": 0,
              "maximum": 5
            },
            "description": "baths min"
          },
          {
            "name": "max_total_monthly",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "description": "Maximum total monthly leasing price (rent plus required fixed monthly fees), USD. Homes without a quotable total are excluded unless include_unpriced=true."
          },
          {
            "name": "max_base_rent",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "description": "max base rent"
          },
          {
            "name": "pets",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "example": "cat,dog"
            },
            "description": "Comma-separated: cat, dog. Homes where every listed pet type is allowed."
          },
          {
            "name": "accepts_vouchers",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "const": true
            },
            "description": "Only communities that publish Housing Choice Voucher acceptance. Communities where the policy is not stated are reported in `excluded`, never as declining vouchers."
          },
          {
            "name": "available_by",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            "description": "available by"
          },
          {
            "name": "near",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Anchor id or alias (case-insensitive), e.g. Fort Cavazos, main gate, Baylor, DART, Forest/Jupiter, downtown Dallas, downtown Waco. Only communities with a measured route are included."
          },
          {
            "name": "max_minutes",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 240
            },
            "description": "max minutes"
          },
          {
            "name": "utilities_included",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "example": "water,sewer"
            },
            "description": "Comma-separated: water, sewer, trash."
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "total_monthly",
                "base_rent",
                "sqft",
                "anchor_minutes"
              ],
              "default": "total_monthly"
            },
            "description": "Null values sort last; ties break by fixed community order, then natural home number."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 20
            },
            "description": "Page size."
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            },
            "description": "offset"
          },
          {
            "name": "include_unpriced",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "include unpriced"
          }
        ],
        "responses": {
          "200": {
            "description": "Search results",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            },
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "The snapshot id (\"{snapshot_id}\")."
              }
            }
          },
          "400": {
            "description": "unsupported_filter or invalid_input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/quote": {
      "get": {
        "operationId": "quote_move_in_cost_query",
        "summary": "Quote total monthly and move-in cost (query form)",
        "parameters": [
          {
            "name": "unit_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "A listed home, e.g. the-midway-u44.",
            "example": "the-midway-u44"
          },
          {
            "name": "floorplan_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "A floor plan id (used when unit_id is absent), e.g. midway-a1-1x1."
          },
          {
            "name": "property_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional consistency check."
          },
          {
            "name": "lease_term_months",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 24,
              "default": 12
            },
            "description": "Only published terms are priced; other terms return base_rent not_stated."
          },
          {
            "name": "move_in_date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Default: the snapshot as_of date."
          },
          {
            "name": "applicants",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 6,
              "default": 1
            },
            "description": "Adults applying."
          },
          {
            "name": "cats",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 5,
              "default": 0
            },
            "description": "Number of cats."
          },
          {
            "name": "dogs",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 5,
              "default": 0
            },
            "description": "Number of dogs."
          },
          {
            "name": "parking",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "none",
                "covered"
              ],
              "default": "none"
            },
            "description": "Covered parking adds its monthly charge."
          },
          {
            "name": "apply_specials",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": true
            },
            "description": "Apply a special only where it is published and the home is known to be eligible."
          },
          {
            "name": "include_estimates",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": true
            },
            "description": "Add estimated variable charges and electric."
          }
        ],
        "responses": {
          "200": {
            "description": "Quote",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteResult"
                }
              }
            },
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "The snapshot id (\"{snapshot_id}\")."
              }
            }
          },
          "400": {
            "description": "invalid_input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Unknown or unlisted home or floor plan",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "quote_move_in_cost",
        "summary": "Quote total monthly and move-in cost",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Quote",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteResult"
                }
              }
            }
          },
          "400": {
            "description": "invalid_input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Unknown or unlisted home or floor plan",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/eligibility": {
      "post": {
        "operationId": "check_eligibility",
        "summary": "Pre-check stated requirements (income multiple, vouchers, pets)",
        "description": "POST only, so income never appears in a URL. The body is never logged or stored. Pre-check against stated requirements only; not an application decision.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EligibilityInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Eligibility pre-check",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EligibilityResult"
                }
              }
            }
          },
          "400": {
            "description": "invalid_input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Unknown community or home",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/tours/slots": {
      "get": {
        "operationId": "get_tour_availability",
        "summary": "Demo tour times in stated tour hours (America/Chicago)",
        "parameters": [
          {
            "name": "property",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ashton-park",
                "highlander",
                "the-midway",
                "jupiter-place"
              ]
            },
            "example": "ashton-park",
            "description": "Community id."
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "First day; default and minimum: the later of today (America/Chicago) and as_of + 1 day."
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 14,
              "default": 7
            },
            "description": "Number of days."
          }
        ],
        "responses": {
          "200": {
            "description": "Slots (empty with how_to_book where tour hours are not stated)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TourSlotsResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Unknown community",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/verify": {
      "get": {
        "operationId": "verify_listing",
        "summary": "Check a listing's phone, web address, rent or special against Base's record",
        "parameters": [
          {
            "name": "property_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Community id (needed for rent and special checks).",
            "example": "the-midway"
          },
          {
            "name": "claimed_rent",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "e.g. 1150 or $1,150."
          },
          {
            "name": "claimed_phone",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Any US format."
          },
          {
            "name": "claimed_url",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Web address shown on the listing."
          },
          {
            "name": "claimed_special",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Special or move-in offer text."
          }
        ],
        "responses": {
          "200": {
            "description": "Verification",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifyResult"
                }
              }
            },
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "The snapshot id (\"{snapshot_id}\")."
              }
            }
          },
          "400": {
            "description": "invalid_input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Unknown community",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/actions/tour-requests": {
      "post": {
        "operationId": "request_tour",
        "summary": "Request a tour (needs your confirmation)",
        "description": "Creates a pending request only. A person must open confirm_url and confirm; nothing is sent until then, and this prototype never sends anything. 10 creations per client per hour, 30 per community per hour.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TourRequestInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Pending request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PendingAction"
                }
              }
            }
          },
          "400": {
            "description": "invalid_input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "not_found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/actions/questions": {
      "post": {
        "operationId": "ask_question",
        "summary": "Send a question to leasing (needs your confirmation)",
        "description": "Creates a pending request only. A person must open confirm_url and confirm; nothing is sent until then, and this prototype never sends anything. 10 creations per client per hour, 30 per community per hour.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuestionInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Pending request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PendingAction"
                }
              }
            }
          },
          "400": {
            "description": "invalid_input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "not_found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/actions/application-starts": {
      "post": {
        "operationId": "start_application",
        "summary": "Start an application (criteria first; needs your confirmation)",
        "description": "Creates a pending request only. A person must open confirm_url and confirm; nothing is sent until then, and this prototype never sends anything. 10 creations per client per hour, 30 per community per hour. The confirm page shows the selection criteria first; the application link is shown only after confirmation, where published.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplicationStartInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Pending request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PendingAction"
                }
              }
            }
          },
          "400": {
            "description": "invalid_input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "not_found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/actions/{request_id}": {
      "get": {
        "operationId": "get_action_status",
        "summary": "Status of a pending request (no contact data)",
        "parameters": [
          {
            "name": "request_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^req_[0-9a-f]{24}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionStatus"
                }
              }
            }
          },
          "404": {
            "description": "Unknown request id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/ask": {
      "get": {
        "operationId": "ask",
        "summary": "NLWeb-style query (deterministic parser over listing facts)",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 500
            },
            "example": "2 bedroom Waco under 1400"
          },
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "list"
              ],
              "default": "list"
            },
            "description": "Only list mode is supported."
          }
        ],
        "responses": {
          "200": {
            "description": "Results",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AskResponse"
                }
              }
            },
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "The snapshot id (\"{snapshot_id}\")."
              }
            }
          },
          "400": {
            "description": "invalid_input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ActionStatus": {
        "type": "object",
        "properties": {
          "request_id": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "tour_request",
              "question",
              "application_start"
            ]
          },
          "status": {
            "enum": [
              "pending_confirmation",
              "confirmed",
              "cancelled",
              "expired"
            ]
          },
          "expires_at": {
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "kind",
          "status",
          "expires_at"
        ]
      },
      "Amenities": {
        "type": "object",
        "properties": {
          "community": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FactString"
            }
          },
          "in_unit": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FactString"
            }
          }
        },
        "required": [
          "community",
          "in_unit"
        ]
      },
      "Anchor": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$"
          },
          "name": {
            "type": "string"
          },
          "display_name": {
            "type": "string"
          },
          "aliases": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "type": {
            "type": "string"
          },
          "mode": {
            "enum": [
              "drive",
              "walk",
              "rail_scheduled",
              "walk_plus_rail"
            ]
          },
          "distance_mi": {
            "$ref": "#/components/schemas/FactNumber"
          },
          "minutes": {
            "$ref": "#/components/schemas/FactNumber"
          },
          "minutes_range": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 2,
            "maxItems": 2
          },
          "method": {
            "type": "string"
          },
          "hours": {
            "$ref": "#/components/schemas/FactString"
          },
          "frequency": {
            "type": "string"
          },
          "caveat": {
            "type": "string"
          },
          "source": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SourceId"
            }
          },
          "as_of": {
            "$ref": "#/components/schemas/IsoDate"
          }
        },
        "required": [
          "id",
          "name",
          "display_name",
          "aliases",
          "type",
          "mode",
          "distance_mi",
          "minutes",
          "method",
          "source",
          "as_of"
        ]
      },
      "Answer": {
        "type": "object",
        "properties": {
          "id": {
            "enum": [
              "availability",
              "monthly",
              "all_in",
              "move_in",
              "special",
              "eligibility",
              "location",
              "contact",
              "performance",
              "data"
            ]
          },
          "text": {
            "type": "string",
            "maxLength": 150,
            "pattern": "^[^\\u2014]*$"
          },
          "status": {
            "$ref": "#/components/schemas/Status"
          },
          "facts": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "text",
          "status",
          "facts"
        ]
      },
      "ApiError": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "not_found",
                  "unsupported_filter",
                  "invalid_input",
                  "rate_limited",
                  "gone",
                  "conflict"
                ]
              },
              "message": {
                "type": "string"
              },
              "details": {
                "type": "object"
              }
            },
            "required": [
              "code",
              "message"
            ]
          }
        },
        "required": [
          "error"
        ],
        "additionalProperties": false
      },
      "ApplicationStartInput": {
        "type": "object",
        "properties": {
          "property_id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
            "description": "Community id, e.g. ashton-park, highlander, the-midway, jupiter-place."
          },
          "unit_id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{0,63}-u[A-Za-z0-9-]{1,32}$",
            "description": "Home id {property_id}-u{unit_ref}, e.g. the-midway-u44."
          },
          "move_in_date": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "applicants": {
            "type": "integer",
            "minimum": 1,
            "maximum": 6
          },
          "idempotency_key": {
            "type": "string",
            "maxLength": 100
          }
        },
        "required": [
          "property_id"
        ],
        "additionalProperties": false
      },
      "AreaContext": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string"
          },
          "hud_fmr": {
            "$ref": "#/components/schemas/FactObject"
          },
          "hud_safmr": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FactObject"
              },
              {
                "type": "null"
              }
            ]
          },
          "pha_payment_standards": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FactObject"
            }
          },
          "pha_utility_allowance": {
            "$ref": "#/components/schemas/FactObject"
          },
          "bah_2026": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FactObject"
              },
              {
                "type": "null"
              }
            ]
          },
          "acs_median_gross_rent": {
            "$ref": "#/components/schemas/FactObject"
          }
        },
        "required": [
          "hud_fmr",
          "hud_safmr",
          "pha_payment_standards",
          "pha_utility_allowance",
          "bah_2026",
          "acs_median_gross_rent"
        ]
      },
      "AskResponse": {
        "type": "object",
        "description": "NLWeb-style list response (PRODUCT_SPEC §3.8). The parser is deterministic and only extracts listing-fact filters; all other words are ignored.",
        "properties": {
          "query_id": {
            "type": "string"
          },
          "query": {
            "type": "string",
            "description": "Normalized summary of the parsed filters. The caller's text is never echoed."
          },
          "parsed": {
            "type": "object",
            "properties": {
              "filters": {
                "type": "object"
              },
              "ignored_word_count": {
                "type": "integer"
              }
            }
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "site": {
                  "type": "string"
                },
                "score": {
                  "type": "number"
                },
                "description": {
                  "type": "string"
                },
                "schema_object": {
                  "type": "object"
                }
              },
              "required": [
                "url",
                "name",
                "site",
                "score",
                "description",
                "schema_object"
              ]
            }
          }
        },
        "required": [
          "query_id",
          "query",
          "parsed",
          "results"
        ]
      },
      "AvailabilitySummary": {
        "type": "object",
        "properties": {
          "available_now": {
            "$ref": "#/components/schemas/FactInt"
          },
          "verified_at": {
            "$ref": "#/components/schemas/IsoDate"
          },
          "on_notice": {
            "$ref": "#/components/schemas/FactInt"
          },
          "withheld": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "minimum": 0
              },
              "reasons": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "reason": {
                      "enum": [
                        "No asking rent on file",
                        "Price being confirmed",
                        "Not yet confirmed ready to show",
                        "Status being confirmed"
                      ]
                    },
                    "count": {
                      "type": "integer",
                      "minimum": 1
                    }
                  },
                  "required": [
                    "reason",
                    "count"
                  ]
                }
              }
            },
            "required": [
              "count",
              "reasons"
            ]
          },
          "caveat": {
            "$ref": "#/components/schemas/FactString"
          }
        },
        "required": [
          "available_now",
          "verified_at",
          "on_notice",
          "withheld"
        ]
      },
      "Candidate": {
        "type": "object",
        "properties": {
          "value": {},
          "source": {
            "$ref": "#/components/schemas/SourceRef"
          },
          "evidence": {
            "type": "string",
            "maxLength": 300
          }
        },
        "required": [
          "value",
          "source"
        ],
        "additionalProperties": false
      },
      "Charge": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9-]+\\.[a-z0-9.-]+$"
          },
          "class": {
            "$ref": "#/components/schemas/ChargeClass"
          },
          "name": {
            "type": "string"
          },
          "short_label": {
            "type": "string"
          },
          "amount": {
            "$ref": "#/components/schemas/FactMoney"
          },
          "amount_basis": {
            "enum": [
              "explicit",
              "range",
              "variable",
              "percentage"
            ]
          },
          "frequency": {
            "enum": [
              "one_time",
              "monthly",
              "per_occurrence"
            ]
          },
          "requirement": {
            "enum": [
              "mandatory",
              "situational",
              "optional",
              "included",
              "conditional"
            ]
          },
          "refundability": {
            "enum": [
              "non_refundable",
              "deposit",
              "refundable"
            ]
          },
          "lifecycle": {
            "enum": [
              "at_application",
              "move_in",
              "during_term",
              "renewal",
              "move_out",
              "transfer"
            ]
          },
          "per": {
            "enum": [
              "item",
              "leaseholder",
              "person",
              "period",
              null
            ]
          },
          "payee": {
            "enum": [
              "property",
              "third_party"
            ]
          },
          "estimate": {
            "type": "boolean"
          },
          "estimation_basis": {
            "type": [
              "string",
              "null"
            ]
          },
          "applies_to": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "all": {
                    "const": true
                  }
                },
                "required": [
                  "all"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "floorplan_ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "floorplan_ids"
                ]
              }
            ]
          },
          "situation": {
            "enum": [
              "pets",
              "covered_parking",
              "month_to_month",
              null
            ]
          }
        },
        "required": [
          "id",
          "class",
          "name",
          "amount",
          "amount_basis",
          "frequency",
          "requirement",
          "refundability",
          "lifecycle",
          "per",
          "payee",
          "estimate",
          "applies_to",
          "situation"
        ]
      },
      "ChargeClass": {
        "type": "string",
        "enum": [
          "APPLICATION",
          "ADMIN",
          "LEASE",
          "TECH",
          "SERVICE",
          "UTILITY",
          "PET",
          "PARKING",
          "STORAGE",
          "TERM",
          "TRANSFER",
          "INSURANCE",
          "ACCOUNTING"
        ]
      },
      "Completeness": {
        "type": "object",
        "properties": {
          "published": {
            "type": "integer",
            "minimum": 0
          },
          "observed": {
            "type": "integer",
            "minimum": 0
          },
          "estimated": {
            "type": "integer",
            "minimum": 0
          },
          "held": {
            "type": "integer",
            "minimum": 0
          },
          "not_stated": {
            "type": "integer",
            "minimum": 0
          },
          "withheld": {
            "type": "integer",
            "minimum": 0
          },
          "stale": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "published",
          "observed",
          "estimated",
          "held",
          "not_stated"
        ]
      },
      "Concession": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "enum": [
              "recurring_discount",
              "upfront_free_period",
              "fee_waiver",
              "move_in_special"
            ]
          },
          "description": {
            "$ref": "#/components/schemas/FactString"
          },
          "value": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "amount": {
                    "type": "number"
                  },
                  "unit": {
                    "enum": [
                      "usd_per_month",
                      "usd_once",
                      "months_free"
                    ]
                  },
                  "months": {
                    "type": "integer"
                  }
                },
                "required": [
                  "amount",
                  "unit"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "applies_to": {
            "type": "object",
            "properties": {
              "floorplan_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "unit_refs": {
                "$ref": "#/components/schemas/FactStringArray"
              },
              "all_homes_of_plans": {
                "type": "boolean"
              }
            },
            "required": [
              "floorplan_ids",
              "unit_refs"
            ]
          },
          "conditions": {
            "type": "object",
            "properties": {
              "min_term_months": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "new_leases_only": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "eligibility_rule": {
                "$ref": "#/components/schemas/FactString"
              }
            },
            "required": [
              "eligibility_rule"
            ]
          },
          "starts_at": {
            "$ref": "#/components/schemas/FactDate"
          },
          "expires_at": {
            "$ref": "#/components/schemas/FactDate"
          },
          "stackable": {
            "$ref": "#/components/schemas/FactBool"
          },
          "renewal_priced_from": {
            "$ref": "#/components/schemas/FactString"
          }
        },
        "required": [
          "id",
          "type",
          "description",
          "value",
          "applies_to",
          "conditions",
          "starts_at",
          "expires_at",
          "stackable",
          "renewal_priced_from"
        ]
      },
      "Contact": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "phone": {
            "type": "string",
            "maxLength": 32,
            "description": "US phone number."
          },
          "email": {
            "type": "string",
            "maxLength": 254
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false,
        "anyOf": [
          {
            "required": [
              "phone"
            ]
          },
          {
            "required": [
              "email"
            ]
          }
        ],
        "description": "Name plus a US phone or an email (at least one)."
      },
      "Contacts": {
        "type": "object",
        "properties": {
          "leasing_text_line": {
            "$ref": "#/components/schemas/FactE164"
          },
          "phone": {
            "$ref": "#/components/schemas/FactE164"
          },
          "website": {
            "$ref": "#/components/schemas/FactUrl"
          },
          "office_hours": {
            "$ref": "#/components/schemas/FactString"
          },
          "tour_hours": {
            "$ref": "#/components/schemas/FactTourHours"
          }
        },
        "required": [
          "leasing_text_line",
          "phone",
          "website",
          "office_hours",
          "tour_hours"
        ]
      },
      "EligibilityInput": {
        "type": "object",
        "properties": {
          "property_id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
            "description": "Community id, e.g. ashton-park, highlander, the-midway, jupiter-place."
          },
          "unit_id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{0,63}-u[A-Za-z0-9-]{1,32}$",
            "description": "Home id {property_id}-u{unit_ref}, e.g. the-midway-u44."
          },
          "floorplan_id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
            "description": "Floor plan id, e.g. midway-a1-1x1."
          },
          "monthly_gross_income_usd": {
            "type": "number",
            "minimum": 0,
            "maximum": 10000000,
            "description": "Never logged or stored."
          },
          "uses_housing_choice_voucher": {
            "type": "boolean"
          },
          "pets": {
            "$ref": "#/components/schemas/PetsInput"
          }
        },
        "required": [
          "property_id"
        ],
        "additionalProperties": false
      },
      "EligibilityResult": {
        "type": "object",
        "properties": {
          "property_id": {
            "type": "string"
          },
          "unit_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "floorplan_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "canonical_path": {
            "type": "string"
          },
          "canonical_url": {
            "type": "string"
          },
          "requirements": {
            "type": "object",
            "properties": {
              "income_multiple": {
                "$ref": "#/components/schemas/FactNumber"
              },
              "income_basis": {
                "$ref": "#/components/schemas/FactString"
              },
              "accepts_housing_choice_vouchers": {
                "$ref": "#/components/schemas/FactTrue"
              },
              "pets": {
                "type": "object"
              },
              "assistance_animal_statement": {
                "type": "string"
              },
              "application_fee": {
                "type": [
                  "object",
                  "null"
                ]
              },
              "background_checks": {
                "$ref": "#/components/schemas/FactString"
              },
              "credit_policy": {
                "$ref": "#/components/schemas/FactString"
              },
              "eviction_policy": {
                "$ref": "#/components/schemas/FactString"
              },
              "selection_criteria_url": {
                "$ref": "#/components/schemas/FactUrl"
              },
              "application_refund_rule": {
                "type": "string"
              }
            },
            "required": [
              "income_multiple",
              "accepts_housing_choice_vouchers",
              "pets",
              "assistance_animal_statement",
              "selection_criteria_url",
              "application_refund_rule"
            ]
          },
          "precheck": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "properties": {
                  "income": {
                    "anyOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "object",
                        "properties": {
                          "result": {
                            "enum": [
                              "meets",
                              "does_not_meet",
                              "cannot_compute"
                            ]
                          },
                          "threshold_usd": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "base_rent_usd": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "multiple": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "reason": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "result",
                          "threshold_usd",
                          "reason"
                        ]
                      }
                    ]
                  },
                  "pets": {
                    "anyOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "object",
                        "properties": {
                          "result": {
                            "enum": [
                              "allowed",
                              "not_allowed",
                              "over_limit",
                              "not_stated"
                            ]
                          },
                          "reason": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "result"
                        ]
                      }
                    ]
                  },
                  "voucher": {
                    "anyOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "object",
                        "properties": {
                          "result": {
                            "enum": [
                              "accepted",
                              "not_stated"
                            ]
                          },
                          "reason": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "result"
                        ]
                      }
                    ]
                  },
                  "voucher_fit": {
                    "anyOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "object",
                        "properties": {
                          "result": {
                            "enum": [
                              "within",
                              "above"
                            ]
                          },
                          "gross_rent_est_usd": {
                            "type": "number"
                          },
                          "tmlp_usd": {
                            "type": "number"
                          },
                          "utility_allowance_usd": {
                            "type": "number"
                          },
                          "payment_standard_usd": {
                            "type": "number"
                          },
                          "bedrooms": {
                            "type": "integer"
                          },
                          "pha": {
                            "type": "string"
                          },
                          "label": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "result",
                          "gross_rent_est_usd",
                          "payment_standard_usd",
                          "label"
                        ]
                      }
                    ]
                  }
                },
                "required": [
                  "income",
                  "pets",
                  "voucher",
                  "voucher_fit"
                ]
              }
            ]
          },
          "disclaimer": {
            "const": "Pre-check against stated requirements only. Not an application decision."
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "property_id",
          "requirements",
          "precheck",
          "disclaimer"
        ]
      },
      "Fact": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "value",
          "status",
          "source",
          "as_of"
        ],
        "properties": {
          "value": {},
          "status": {
            "$ref": "#/components/schemas/Status"
          },
          "source": {
            "$ref": "#/components/schemas/SourceRef"
          },
          "as_of": {
            "$ref": "#/components/schemas/IsoDate"
          },
          "basis": {
            "type": "string",
            "maxLength": 300
          },
          "n": {
            "type": "integer",
            "minimum": 0
          },
          "share": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "note": {
            "type": "string",
            "maxLength": 300
          },
          "candidates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Candidate"
            },
            "description": "Review profile only."
          }
        },
        "allOf": [
          {
            "if": {
              "required": [
                "status"
              ],
              "properties": {
                "status": {
                  "enum": [
                    "held",
                    "not_stated",
                    "withheld"
                  ]
                }
              }
            },
            "then": {
              "properties": {
                "value": {
                  "type": "null"
                }
              }
            }
          },
          {
            "if": {
              "required": [
                "status"
              ],
              "properties": {
                "status": {
                  "enum": [
                    "observed",
                    "estimated"
                  ]
                }
              }
            },
            "then": {
              "required": [
                "basis"
              ]
            }
          },
          {
            "if": {
              "required": [
                "status"
              ],
              "properties": {
                "status": {
                  "enum": [
                    "published",
                    "observed",
                    "estimated"
                  ]
                }
              }
            },
            "then": {
              "properties": {
                "value": {
                  "not": {
                    "type": "null"
                  }
                }
              }
            }
          }
        ]
      },
      "FactAddress": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "street": {
                    "type": "string"
                  },
                  "city": {
                    "type": "string"
                  },
                  "state": {
                    "type": "string"
                  },
                  "zip": {
                    "type": "string"
                  },
                  "county": {
                    "type": "string"
                  }
                },
                "required": [
                  "street",
                  "city",
                  "state",
                  "zip"
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "FactArray": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "type": [
              "array",
              "null"
            ]
          }
        }
      },
      "FactBool": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "type": [
              "boolean",
              "null"
            ]
          }
        }
      },
      "FactDate": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "FactE164": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\+[1-9]\\d{6,14}$"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "FactGeo": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "lat": {
                    "type": "number",
                    "minimum": -90,
                    "maximum": 90
                  },
                  "lng": {
                    "type": "number",
                    "minimum": -180,
                    "maximum": 180
                  }
                },
                "required": [
                  "lat",
                  "lng"
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "FactInt": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "type": [
              "integer",
              "null"
            ]
          }
        }
      },
      "FactIntArray": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer"
            }
          }
        }
      },
      "FactMoney": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "$ref": "#/components/schemas/Range"
              },
              {
                "type": "null"
              }
            ],
            "description": "USD number or {min,max}; max null means \"from\"."
          }
        }
      },
      "FactNumber": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "type": [
              "number",
              "null"
            ]
          }
        }
      },
      "FactObject": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "type": [
              "object",
              "null"
            ]
          }
        }
      },
      "FactRange": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Range"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "FactString": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "FactStringArray": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "FactTourHours": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "days": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "Mon",
                        "Tue",
                        "Wed",
                        "Thu",
                        "Fri",
                        "Sat",
                        "Sun"
                      ]
                    }
                  },
                  "start": {
                    "type": "string",
                    "pattern": "^\\d{2}:\\d{2}$"
                  },
                  "end": {
                    "type": "string",
                    "pattern": "^\\d{2}:\\d{2}$"
                  },
                  "tz": {
                    "type": "string"
                  }
                },
                "required": [
                  "days",
                  "start",
                  "end",
                  "tz"
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "FactTrue": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "enum": [
              true,
              null
            ],
            "description": "true or null: \"no vouchers\" is never published."
          }
        }
      },
      "FactUrl": {
        "$ref": "#/components/schemas/Fact",
        "properties": {
          "value": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^https?://"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "FloorPlanRecord": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
            "description": "Floor plan id, e.g. midway-a1-1x1."
          },
          "path_slug": {
            "type": "string"
          },
          "canonical_path": {
            "type": "string",
            "pattern": "^/apartments/"
          },
          "name": {
            "type": "string"
          },
          "beds": {
            "type": "integer",
            "minimum": 0
          },
          "baths": {
            "type": "number",
            "minimum": 0
          },
          "sqft": {
            "$ref": "#/components/schemas/FactInt"
          },
          "unit_count_total": {
            "$ref": "#/components/schemas/FactInt"
          },
          "layout_note": {
            "$ref": "#/components/schemas/FactString"
          },
          "asking_rent": {
            "$ref": "#/components/schemas/FactRange"
          },
          "available_now": {
            "type": "integer",
            "minimum": 0
          },
          "on_notice": {
            "type": "integer",
            "minimum": 0
          },
          "held_units": {
            "type": "integer",
            "minimum": 0
          },
          "quote_12mo": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/QuoteSummary"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "path_slug",
          "canonical_path",
          "name",
          "beds",
          "baths",
          "sqft",
          "unit_count_total",
          "asking_rent",
          "available_now",
          "on_notice",
          "held_units",
          "quote_12mo"
        ]
      },
      "IsoDate": {
        "type": "string",
        "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
      },
      "IsoDateTime": {
        "type": "string",
        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2})$"
      },
      "LeaseTerms": {
        "type": "object",
        "properties": {
          "terms_offered": {
            "$ref": "#/components/schemas/FactIntArray"
          },
          "price_matrix": {
            "$ref": "#/components/schemas/FactArray"
          },
          "mtm_premium": {
            "$ref": "#/components/schemas/FactNumber"
          },
          "short_term_premium": {
            "$ref": "#/components/schemas/FactNumber"
          },
          "early_termination": {
            "$ref": "#/components/schemas/FactObject"
          },
          "military_termination": {
            "type": "object",
            "properties": {
              "statutory_basis": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "extra_terms": {
                "$ref": "#/components/schemas/FactString"
              }
            },
            "required": [
              "statutory_basis",
              "extra_terms"
            ]
          },
          "renewal": {
            "type": "object",
            "properties": {
              "notice_days": {
                "$ref": "#/components/schemas/FactInt"
              },
              "priced_from": {
                "$ref": "#/components/schemas/FactString"
              },
              "typical_increase_pct_t12m": {
                "$ref": "#/components/schemas/FactObject"
              }
            },
            "required": [
              "notice_days",
              "priced_from",
              "typical_increase_pct_t12m"
            ]
          }
        },
        "required": [
          "terms_offered",
          "price_matrix",
          "mtm_premium",
          "short_term_premium",
          "early_termination",
          "military_termination",
          "renewal"
        ]
      },
      "ListingSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "market": {
            "type": "string"
          },
          "canonical_url": {
            "type": "string"
          },
          "address": {
            "$ref": "#/components/schemas/FactAddress"
          },
          "availability": {
            "$ref": "#/components/schemas/AvailabilitySummary"
          },
          "rent_range": {
            "type": [
              "object",
              "null"
            ]
          },
          "tmlp_from": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Total"
              },
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "est_all_in_from": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Total"
              },
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "answers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Answer"
            }
          },
          "floor_plans": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "units": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UnitSummary"
            }
          }
        },
        "required": [
          "id",
          "name",
          "market",
          "canonical_url",
          "availability",
          "answers",
          "floor_plans",
          "units"
        ]
      },
      "ListingsResponse": {
        "type": "object",
        "properties": {
          "properties": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListingSummary"
            }
          },
          "snapshot_id": {
            "type": "string"
          },
          "as_of": {
            "type": "string"
          },
          "publisher": {
            "$ref": "#/components/schemas/PublisherCompact"
          },
          "sources": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              {
                "type": "object"
              }
            ]
          },
          "answers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Answer"
            }
          }
        },
        "required": [
          "properties",
          "snapshot_id",
          "as_of"
        ]
      },
      "PendingAction": {
        "type": "object",
        "properties": {
          "request_id": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "tour_request",
              "question",
              "application_start"
            ]
          },
          "status": {
            "const": "pending_confirmation"
          },
          "confirm_url": {
            "type": "string"
          },
          "expires_at": {
            "type": "string"
          },
          "summary": {
            "type": "object",
            "properties": {
              "property": {
                "type": "string"
              },
              "unit": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "slot": {
                "type": [
                  "object",
                  "string",
                  "null"
                ]
              },
              "contact_masked": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "question_excerpt": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": []
          },
          "what_happens_next": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "delivery": {
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "kind",
          "status",
          "confirm_url",
          "expires_at",
          "summary",
          "what_happens_next",
          "delivery"
        ]
      },
      "PerformanceCell": {
        "type": "object",
        "properties": {
          "property_id": {
            "type": "string"
          },
          "metric": {
            "enum": [
              "leasing_first_reply",
              "maintenance_closed_within_7d",
              "emergency_within_24h",
              "application_decision_time"
            ]
          },
          "metric_label": {
            "type": "string"
          },
          "slice": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "enum": [
              "published",
              "insufficient_n",
              "not_measured",
              "pending_audit"
            ]
          },
          "value": {
            "type": [
              "number",
              "null"
            ]
          },
          "unit": {
            "type": [
              "string",
              "null"
            ]
          },
          "n": {
            "type": [
              "integer",
              "null"
            ]
          },
          "window_start": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/IsoDate"
              },
              {
                "type": "null"
              }
            ]
          },
          "window_end": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/IsoDate"
              },
              {
                "type": "null"
              }
            ]
          },
          "as_of": {
            "$ref": "#/components/schemas/IsoDate"
          },
          "source": {
            "$ref": "#/components/schemas/SourceId"
          },
          "exclusions": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            }
          },
          "method_version": {
            "type": "string"
          },
          "method_text": {
            "type": "string"
          },
          "reason": {
            "type": [
              "string",
              "null"
            ]
          },
          "display": {
            "type": "string"
          }
        },
        "required": [
          "property_id",
          "metric",
          "slice",
          "status",
          "value",
          "unit",
          "n",
          "window_start",
          "window_end",
          "as_of",
          "source",
          "method_version",
          "method_text",
          "reason"
        ]
      },
      "PetsInput": {
        "type": "object",
        "properties": {
          "cats": {
            "type": "integer",
            "minimum": 0,
            "maximum": 5
          },
          "dogs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 5
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "Policies": {
        "type": "object",
        "properties": {
          "pets": {
            "type": "object",
            "properties": {
              "allowed": {
                "$ref": "#/components/schemas/FactBool"
              },
              "types": {
                "$ref": "#/components/schemas/FactStringArray"
              },
              "max_count": {
                "$ref": "#/components/schemas/FactString"
              },
              "max_by_type": {
                "$ref": "#/components/schemas/FactObject"
              },
              "restrictions": {
                "$ref": "#/components/schemas/FactString"
              }
            },
            "required": [
              "allowed",
              "types",
              "max_count",
              "restrictions"
            ]
          },
          "assistance_animal_statement": {
            "type": "string"
          },
          "parking": {
            "$ref": "#/components/schemas/FactArray"
          },
          "laundry": {
            "$ref": "#/components/schemas/FactString"
          },
          "smoking": {
            "$ref": "#/components/schemas/FactString"
          },
          "renters_insurance": {
            "$ref": "#/components/schemas/FactObject"
          },
          "late_fee": {
            "$ref": "#/components/schemas/FactObject"
          },
          "late_fee_note": {
            "type": "string"
          },
          "flood_disclosure": {
            "$ref": "#/components/schemas/FactObject"
          },
          "accessibility": {
            "$ref": "#/components/schemas/FactObject"
          }
        },
        "required": [
          "pets",
          "assistance_animal_statement",
          "parking",
          "laundry",
          "smoking",
          "renters_insurance",
          "late_fee",
          "flood_disclosure",
          "accessibility"
        ]
      },
      "PropertyRecord": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
            "description": "Community id, e.g. ashton-park, highlander, the-midway, jupiter-place."
          },
          "name": {
            "type": "string"
          },
          "market": {
            "enum": [
              "killeen-tx",
              "waco-tx",
              "garland-tx"
            ]
          },
          "canonical_path": {
            "type": "string",
            "pattern": "^/apartments/"
          },
          "address": {
            "$ref": "#/components/schemas/FactAddress"
          },
          "geo": {
            "$ref": "#/components/schemas/FactGeo"
          },
          "contacts": {
            "$ref": "#/components/schemas/Contacts"
          },
          "description": {
            "$ref": "#/components/schemas/FactString"
          },
          "unit_count_total": {
            "$ref": "#/components/schemas/FactInt"
          },
          "unit_count_rentable": {
            "$ref": "#/components/schemas/FactInt"
          },
          "year_built": {
            "$ref": "#/components/schemas/FactInt"
          },
          "amenities": {
            "$ref": "#/components/schemas/Amenities"
          },
          "staff_languages": {
            "$ref": "#/components/schemas/FactStringArray"
          },
          "floor_plans": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FloorPlanRecord"
            }
          },
          "units": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UnitRecord"
            }
          },
          "availability": {
            "$ref": "#/components/schemas/AvailabilitySummary"
          },
          "charges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Charge"
            }
          },
          "fee_schedule_complete": {
            "$ref": "#/components/schemas/FactBool"
          },
          "utilities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Utility"
            }
          },
          "concessions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Concession"
            }
          },
          "policies": {
            "$ref": "#/components/schemas/Policies"
          },
          "screening": {
            "$ref": "#/components/schemas/Screening"
          },
          "lease_terms": {
            "$ref": "#/components/schemas/LeaseTerms"
          },
          "anchors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Anchor"
            }
          },
          "performance": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PerformanceCell"
            },
            "minItems": 4
          },
          "actions": {
            "type": "object",
            "properties": {
              "tour_url": {
                "type": "string"
              },
              "apply_url": {
                "type": "string"
              },
              "question_url": {
                "type": "string"
              },
              "external_application_url": {
                "$ref": "#/components/schemas/FactUrl"
              }
            },
            "required": [
              "tour_url",
              "apply_url",
              "question_url",
              "external_application_url"
            ]
          },
          "answers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Answer"
            }
          },
          "answer_style": {
            "type": "object"
          },
          "completeness": {
            "$ref": "#/components/schemas/Completeness"
          },
          "record_hash": {
            "type": "string",
            "pattern": "^[0-9a-f]{12}$"
          }
        },
        "required": [
          "id",
          "name",
          "market",
          "canonical_path",
          "address",
          "geo",
          "contacts",
          "description",
          "unit_count_total",
          "year_built",
          "amenities",
          "staff_languages",
          "floor_plans",
          "units",
          "availability",
          "charges",
          "fee_schedule_complete",
          "utilities",
          "concessions",
          "policies",
          "screening",
          "lease_terms",
          "anchors",
          "performance",
          "actions",
          "answers",
          "completeness",
          "record_hash"
        ]
      },
      "Publisher": {
        "type": "object",
        "properties": {
          "display_line": {
            "const": "Managed and leased by Base"
          },
          "role": {
            "type": "string"
          },
          "legal_name": {
            "$ref": "#/components/schemas/FactString"
          },
          "trec": {
            "$ref": "#/components/schemas/FactObject"
          },
          "owner_entities": {
            "$ref": "#/components/schemas/FactArray"
          },
          "canonical_origin": {
            "type": "string"
          },
          "official_contacts": {
            "type": "object",
            "properties": {
              "leasing_text_line": {
                "type": "string",
                "pattern": "^\\+[1-9]\\d{6,14}$"
              },
              "phones": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/components/schemas/FactE164"
                }
              }
            },
            "required": [
              "leasing_text_line",
              "phones"
            ]
          },
          "never_asks": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "eho_statement": {
            "type": "string"
          },
          "accessibility_statement": {
            "type": "string"
          },
          "data_freshness_line": {
            "type": "string"
          }
        },
        "required": [
          "display_line",
          "role",
          "legal_name",
          "trec",
          "owner_entities",
          "canonical_origin",
          "official_contacts",
          "never_asks",
          "eho_statement",
          "accessibility_statement",
          "data_freshness_line"
        ]
      },
      "PublisherCompact": {
        "type": "object",
        "properties": {
          "display_line": {
            "type": "string"
          },
          "canonical_origin": {
            "type": "string"
          }
        },
        "required": [],
        "description": "Compact or full publisher block (envelope)."
      },
      "QuestionInput": {
        "type": "object",
        "properties": {
          "property_id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
            "description": "Community id, e.g. ashton-park, highlander, the-midway, jupiter-place."
          },
          "question": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1000
          },
          "contact": {
            "$ref": "#/components/schemas/Contact"
          },
          "sms_consent": {
            "type": "boolean"
          },
          "idempotency_key": {
            "type": "string",
            "maxLength": 100
          }
        },
        "required": [
          "property_id",
          "question",
          "contact",
          "sms_consent"
        ],
        "additionalProperties": false
      },
      "QuoteInput": {
        "type": "object",
        "properties": {
          "property_id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
            "description": "Community id, e.g. ashton-park, highlander, the-midway, jupiter-place."
          },
          "unit_id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{0,63}-u[A-Za-z0-9-]{1,32}$",
            "description": "Home id {property_id}-u{unit_ref}, e.g. the-midway-u44."
          },
          "floorplan_id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
            "description": "Floor plan id, e.g. midway-a1-1x1."
          },
          "lease_term_months": {
            "type": "integer",
            "minimum": 1,
            "maximum": 24,
            "default": 12
          },
          "move_in_date": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "applicants": {
            "type": "integer",
            "minimum": 1,
            "maximum": 6,
            "default": 1
          },
          "pets": {
            "$ref": "#/components/schemas/PetsInput"
          },
          "parking": {
            "enum": [
              "none",
              "covered"
            ],
            "default": "none"
          },
          "apply_specials": {
            "type": "boolean",
            "default": true
          },
          "include_estimates": {
            "type": "boolean",
            "default": true
          }
        },
        "required": [],
        "additionalProperties": false,
        "description": "Give unit_id (a listed home) or floorplan_id."
      },
      "QuoteLine": {
        "type": "object",
        "properties": {
          "charge_id": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "class": {
            "$ref": "#/components/schemas/ChargeClass"
          },
          "lifecycle": {
            "type": "string"
          },
          "frequency": {
            "type": "string"
          },
          "requirement": {
            "type": "string"
          },
          "amount": {
            "type": [
              "number",
              "null"
            ]
          },
          "quantity": {
            "type": "integer",
            "minimum": 0
          },
          "status": {
            "type": "string",
            "enum": [
              "published",
              "observed",
              "estimated",
              "held",
              "not_stated",
              "withheld",
              "stale",
              "not_applicable",
              "if_eligible",
              "applied"
            ]
          },
          "estimate": {
            "type": "boolean"
          },
          "basis": {
            "type": [
              "string",
              "null"
            ]
          },
          "group": {
            "enum": [
              "monthly_required",
              "monthly_estimated",
              "monthly_selected",
              "due_at_application",
              "due_at_move_in",
              "if_eligible"
            ]
          }
        },
        "required": [
          "charge_id",
          "label",
          "amount",
          "quantity",
          "status",
          "group"
        ]
      },
      "QuoteResult": {
        "type": "object",
        "properties": {
          "quote_id": {
            "type": "string",
            "pattern": "^q_[0-9a-f]{16}$"
          },
          "quote_version": {
            "type": "string"
          },
          "snapshot_id": {
            "type": "string"
          },
          "as_of": {
            "$ref": "#/components/schemas/IsoDate"
          },
          "property_id": {
            "type": "string"
          },
          "floorplan_id": {
            "type": "string"
          },
          "unit_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "inputs": {
            "type": "object",
            "properties": {
              "lease_term_months": {
                "type": "integer"
              },
              "move_in_date": {
                "type": "string"
              },
              "applicants": {
                "type": "integer"
              },
              "pets": {
                "$ref": "#/components/schemas/PetsInput"
              },
              "parking": {
                "type": "string"
              },
              "apply_specials": {
                "type": "boolean"
              },
              "include_estimates": {
                "type": "boolean"
              }
            },
            "required": [
              "lease_term_months",
              "move_in_date",
              "applicants",
              "pets",
              "parking",
              "apply_specials",
              "include_estimates"
            ]
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuoteLine"
            }
          },
          "totals": {
            "type": "object",
            "properties": {
              "base_rent": {
                "$ref": "#/components/schemas/QuoteTotal"
              },
              "tmlp": {
                "$ref": "#/components/schemas/QuoteTotal"
              },
              "est_monthly_total": {
                "$ref": "#/components/schemas/QuoteTotal"
              },
              "net_effective_tmlp": {
                "$ref": "#/components/schemas/QuoteTotal"
              },
              "due_at_application": {
                "$ref": "#/components/schemas/QuoteTotal"
              },
              "due_at_move_in": {
                "$ref": "#/components/schemas/QuoteTotal"
              },
              "first_year_total_est": {
                "$ref": "#/components/schemas/QuoteTotal"
              }
            },
            "required": [
              "base_rent",
              "tmlp",
              "est_monthly_total",
              "net_effective_tmlp",
              "due_at_application",
              "due_at_move_in",
              "first_year_total_est"
            ]
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "valid_until": {
            "$ref": "#/components/schemas/IsoDate"
          },
          "canonical_url": {
            "type": "string"
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "disclaimer": {
            "type": "string"
          },
          "publisher": {
            "$ref": "#/components/schemas/PublisherCompact"
          }
        },
        "required": [
          "quote_id",
          "snapshot_id",
          "property_id",
          "floorplan_id",
          "unit_id",
          "inputs",
          "lines",
          "totals",
          "assumptions",
          "valid_until",
          "canonical_url",
          "sources",
          "disclaimer"
        ]
      },
      "QuoteSummary": {
        "type": "object",
        "properties": {
          "base_rent": {
            "$ref": "#/components/schemas/Total"
          },
          "tmlp": {
            "$ref": "#/components/schemas/Total"
          },
          "est_monthly_total": {
            "$ref": "#/components/schemas/Total"
          },
          "net_effective_tmlp_if_eligible": {
            "$ref": "#/components/schemas/Total"
          },
          "due_at_application": {
            "$ref": "#/components/schemas/Total"
          },
          "due_at_move_in": {
            "$ref": "#/components/schemas/Total"
          },
          "status": {
            "type": "string",
            "enum": [
              "published",
              "observed",
              "estimated",
              "held",
              "not_stated",
              "withheld",
              "stale",
              "not_applicable",
              "if_eligible",
              "applied"
            ]
          },
          "blocked_by": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "base_rent",
          "tmlp",
          "est_monthly_total",
          "net_effective_tmlp_if_eligible",
          "due_at_application",
          "due_at_move_in",
          "status",
          "blocked_by"
        ]
      },
      "QuoteTotal": {
        "type": "object",
        "properties": {
          "value": {
            "type": [
              "number",
              "null"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "published",
              "observed",
              "estimated",
              "held",
              "not_stated",
              "withheld",
              "stale",
              "not_applicable",
              "if_eligible",
              "applied"
            ]
          },
          "blocked_by": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "known_items_sum": {
            "type": "number"
          },
          "if_eligible_value": {
            "type": "number"
          }
        },
        "required": [
          "value",
          "status"
        ]
      },
      "Range": {
        "type": "object",
        "properties": {
          "min": {
            "type": "number"
          },
          "max": {
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "min",
          "max"
        ]
      },
      "Screening": {
        "type": "object",
        "properties": {
          "income_multiple": {
            "$ref": "#/components/schemas/FactNumber"
          },
          "income_basis": {
            "$ref": "#/components/schemas/FactString"
          },
          "accepts_housing_choice_vouchers": {
            "$ref": "#/components/schemas/FactTrue"
          },
          "vash_accepted": {
            "$ref": "#/components/schemas/FactBool"
          },
          "background_checks": {
            "$ref": "#/components/schemas/FactString"
          },
          "credit_policy": {
            "$ref": "#/components/schemas/FactString"
          },
          "eviction_policy": {
            "$ref": "#/components/schemas/FactString"
          },
          "guarantor_policy": {
            "$ref": "#/components/schemas/FactString"
          },
          "selection_criteria_url": {
            "$ref": "#/components/schemas/FactUrl"
          },
          "selection_criteria_note": {
            "type": "string"
          },
          "application_refund_rule": {
            "type": "string"
          }
        },
        "required": [
          "income_multiple",
          "income_basis",
          "accepts_housing_choice_vouchers",
          "background_checks",
          "credit_policy",
          "eviction_policy",
          "selection_criteria_url",
          "application_refund_rule"
        ]
      },
      "SearchInput": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "maxLength": 40,
            "description": "Market id: killeen-tx, waco-tx or garland-tx."
          },
          "property": {
            "type": "string",
            "maxLength": 64,
            "description": "Community id."
          },
          "beds_min": {
            "type": "integer",
            "minimum": 0,
            "maximum": 5
          },
          "beds_max": {
            "type": "integer",
            "minimum": 0,
            "maximum": 5
          },
          "baths_min": {
            "type": "number",
            "minimum": 0,
            "maximum": 5
          },
          "max_total_monthly": {
            "type": "number",
            "minimum": 0,
            "description": "Maximum total monthly cost (rent plus required fees), USD."
          },
          "max_base_rent": {
            "type": "number",
            "minimum": 0
          },
          "pets": {
            "type": "array",
            "items": {
              "enum": [
                "cat",
                "dog"
              ]
            },
            "uniqueItems": true
          },
          "accepts_vouchers": {
            "const": true
          },
          "available_by": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "near": {
            "type": "string",
            "maxLength": 80,
            "description": "Anchor id or alias, e.g. \"Fort Cavazos\", \"Baylor\", \"DART\"."
          },
          "max_minutes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 240
          },
          "utilities_included": {
            "type": "array",
            "items": {
              "enum": [
                "water",
                "sewer",
                "trash"
              ]
            },
            "uniqueItems": true
          },
          "sort": {
            "enum": [
              "total_monthly",
              "base_rent",
              "sqft",
              "anchor_minutes"
            ],
            "default": "total_monthly"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 20
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "include_unpriced": {
            "type": "boolean"
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "SearchResponse": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UnitSummary"
            }
          },
          "total": {
            "type": "integer",
            "minimum": 0
          },
          "excluded": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "property_id": {
                  "type": "string"
                },
                "count": {
                  "type": "integer",
                  "minimum": 0
                },
                "reason": {
                  "type": "string"
                }
              },
              "required": [
                "property_id",
                "count",
                "reason"
              ]
            }
          },
          "filters_applied": {
            "type": "object"
          },
          "notice": {
            "type": [
              "string",
              "null"
            ]
          },
          "snapshot_id": {
            "type": "string"
          },
          "as_of": {
            "type": "string"
          },
          "publisher": {
            "$ref": "#/components/schemas/PublisherCompact"
          },
          "sources": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              {
                "type": "object"
              }
            ]
          }
        },
        "required": [
          "results",
          "total",
          "excluded",
          "filters_applied"
        ]
      },
      "Snapshot": {
        "type": "object",
        "properties": {
          "spec": {
            "const": "base-rental-record/0.1"
          },
          "snapshot_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{12}$"
          },
          "profile": {
            "enum": [
              "preview",
              "public",
              "review"
            ]
          },
          "as_of": {
            "$ref": "#/components/schemas/IsoDate"
          },
          "evaluated_at": {
            "$ref": "#/components/schemas/IsoDate"
          },
          "origin": {
            "type": "string"
          },
          "seeds": {
            "type": "object",
            "properties": {
              "portfolio": {
                "$ref": "#/components/schemas/IsoDate"
              },
              "costs": {
                "$ref": "#/components/schemas/IsoDate"
              },
              "anchors": {
                "$ref": "#/components/schemas/IsoDate"
              },
              "performance": {
                "$ref": "#/components/schemas/IsoDate"
              }
            },
            "required": [
              "portfolio",
              "costs",
              "anchors",
              "performance"
            ]
          },
          "publisher": {
            "$ref": "#/components/schemas/Publisher"
          },
          "sources": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Source"
            }
          },
          "vocab": {
            "type": "object",
            "properties": {
              "statuses": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "charge_classes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "requirements": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "lifecycles": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "statuses",
              "charge_classes",
              "requirements",
              "lifecycles"
            ]
          },
          "properties": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyRecord"
            },
            "minItems": 1
          },
          "area_context": {
            "type": "object",
            "properties": {
              "killeen-tx": {
                "$ref": "#/components/schemas/AreaContext"
              },
              "waco-tx": {
                "$ref": "#/components/schemas/AreaContext"
              },
              "garland-tx": {
                "$ref": "#/components/schemas/AreaContext"
              }
            },
            "required": [
              "killeen-tx",
              "waco-tx",
              "garland-tx"
            ]
          },
          "electric_model": {
            "type": "object",
            "properties": {
              "kwh_per_sqft_month": {
                "type": "number"
              },
              "price_usd_per_kwh": {
                "type": "object",
                "properties": {
                  "oncor_area": {
                    "type": "number"
                  },
                  "gpl": {
                    "type": "number"
                  }
                },
                "required": [
                  "oncor_area",
                  "gpl"
                ]
              },
              "source": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "basis": {
                "type": "string"
              }
            },
            "required": [
              "kwh_per_sqft_month",
              "price_usd_per_kwh",
              "source",
              "basis"
            ]
          },
          "portfolio_answers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Answer"
            }
          },
          "verification": {
            "$ref": "#/components/schemas/Verification"
          },
          "anchor_index": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "display_name": {
                  "type": "string"
                },
                "aliases": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "property_ids": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "id",
                "aliases",
                "property_ids"
              ]
            }
          },
          "statements": {
            "type": "object"
          },
          "external_links": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                }
              },
              "required": [
                "url",
                "label"
              ]
            }
          },
          "decisions_applied": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string"
                },
                "decided_at": {
                  "type": "string"
                },
                "example": {
                  "type": "boolean"
                }
              },
              "required": [
                "key",
                "decided_at",
                "example"
              ]
            }
          },
          "open_decisions": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Review profile only."
          }
        },
        "required": [
          "spec",
          "snapshot_id",
          "profile",
          "as_of",
          "evaluated_at",
          "seeds",
          "publisher",
          "sources",
          "vocab",
          "properties",
          "area_context",
          "electric_model"
        ]
      },
      "Source": {
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/SourceId"
          },
          "label": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "licence": {
            "type": "string"
          },
          "as_of": {
            "$ref": "#/components/schemas/IsoDate"
          }
        },
        "required": [
          "id",
          "label",
          "kind",
          "as_of"
        ]
      },
      "SourceId": {
        "type": "string",
        "enum": [
          "src.pms",
          "src.operator_policy",
          "src.operator_listing",
          "src.ledger",
          "src.operator_decision",
          "src.census_geocoder",
          "src.osrm_osm",
          "src.dart_gtfs",
          "src.army",
          "src.hud_fmr",
          "src.pha_ctcog",
          "src.pha_waco",
          "src.pha_garland",
          "src.census_acs",
          "src.dod_bah",
          "src.eia",
          "src.gpl",
          "src.messaging_log",
          "src.rm_work_orders",
          "src.base_quote",
          "src.tx_statute",
          "src.public_record_unverified"
        ]
      },
      "SourceRef": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/SourceId"
          },
          {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SourceId"
            },
            "minItems": 1
          }
        ]
      },
      "SourcesResponse": {
        "type": "object",
        "properties": {
          "sources": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Source"
            }
          },
          "vocab": {
            "type": "object"
          },
          "data_dictionary_url": {
            "type": "string"
          },
          "snapshot_id": {
            "type": "string"
          },
          "as_of": {
            "type": "string"
          },
          "publisher": {
            "$ref": "#/components/schemas/PublisherCompact"
          }
        },
        "required": [
          "sources",
          "vocab",
          "data_dictionary_url"
        ]
      },
      "Status": {
        "type": "string",
        "enum": [
          "published",
          "observed",
          "estimated",
          "held",
          "not_stated",
          "withheld",
          "stale"
        ],
        "description": "published | observed | estimated | held | not_stated | withheld | stale"
      },
      "Total": {
        "type": "object",
        "properties": {
          "value": {
            "type": [
              "number",
              "null"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "published",
              "observed",
              "estimated",
              "held",
              "not_stated",
              "withheld",
              "stale",
              "not_applicable",
              "if_eligible",
              "applied"
            ]
          }
        },
        "required": [
          "value",
          "status"
        ]
      },
      "TourRequestInput": {
        "type": "object",
        "properties": {
          "slot_token": {
            "type": "string",
            "minLength": 8,
            "maxLength": 512
          },
          "unit_id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{0,63}-u[A-Za-z0-9-]{1,32}$",
            "description": "Home id {property_id}-u{unit_ref}, e.g. the-midway-u44."
          },
          "contact": {
            "$ref": "#/components/schemas/Contact"
          },
          "sms_consent": {
            "type": "boolean"
          },
          "notes": {
            "type": "string",
            "maxLength": 500
          },
          "idempotency_key": {
            "type": "string",
            "maxLength": 100
          }
        },
        "required": [
          "slot_token",
          "contact",
          "sms_consent"
        ],
        "additionalProperties": false
      },
      "TourSlotsResponse": {
        "title": "TourSlotsResponse",
        "type": "object",
        "properties": {
          "property_id": {
            "type": "string"
          },
          "slots": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "start": {
                  "type": "string"
                },
                "end": {
                  "type": "string"
                },
                "type": {
                  "const": "in_person"
                },
                "slot_token": {
                  "type": "string"
                }
              },
              "required": [
                "start",
                "end",
                "type",
                "slot_token"
              ]
            }
          },
          "demo": {
            "type": "boolean"
          },
          "tour_hours": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FactTourHours"
              },
              {
                "type": "null"
              }
            ]
          },
          "how_to_book": {
            "type": "string"
          },
          "snapshot_id": {
            "type": "string"
          },
          "as_of": {
            "type": "string"
          },
          "publisher": {
            "$ref": "#/components/schemas/PublisherCompact"
          },
          "sources": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              {
                "type": "object"
              }
            ]
          }
        },
        "required": [
          "slots",
          "demo",
          "how_to_book"
        ]
      },
      "UnitRecord": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{0,63}-u[A-Za-z0-9-]{1,32}$",
            "description": "Home id {property_id}-u{unit_ref}, e.g. the-midway-u44."
          },
          "unit_ref": {
            "type": "string"
          },
          "floorplan_id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
            "description": "Floor plan id, e.g. midway-a1-1x1."
          },
          "canonical_path": {
            "type": "string",
            "pattern": "^/apartments/"
          },
          "beds": {
            "type": "integer",
            "minimum": 0
          },
          "baths": {
            "type": "number",
            "minimum": 0
          },
          "sqft": {
            "$ref": "#/components/schemas/FactInt"
          },
          "status": {
            "$ref": "#/components/schemas/FactString"
          },
          "available_date": {
            "const": "now"
          },
          "asking_rent": {
            "$ref": "#/components/schemas/FactNumber"
          },
          "quote_valid_until": {
            "$ref": "#/components/schemas/IsoDate"
          },
          "quote_12mo": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/QuoteSummary"
              },
              {
                "type": "null"
              }
            ]
          },
          "caveats": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "unit_ref",
          "floorplan_id",
          "canonical_path",
          "beds",
          "baths",
          "sqft",
          "status",
          "available_date",
          "asking_rent",
          "quote_valid_until",
          "quote_12mo",
          "caveats"
        ]
      },
      "UnitResponse": {
        "title": "UnitResponse",
        "type": "object",
        "properties": {
          "unit": {
            "$ref": "#/components/schemas/UnitRecord"
          },
          "floor_plan": {
            "$ref": "#/components/schemas/FloorPlanRecord"
          },
          "property": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "canonical_url": {
                "type": "string"
              },
              "contacts": {
                "$ref": "#/components/schemas/Contacts"
              }
            },
            "required": [
              "id",
              "name",
              "canonical_url",
              "contacts"
            ]
          },
          "snapshot_id": {
            "type": "string"
          },
          "as_of": {
            "type": "string"
          },
          "publisher": {
            "$ref": "#/components/schemas/PublisherCompact"
          },
          "sources": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              {
                "type": "object"
              }
            ]
          }
        },
        "required": [
          "unit",
          "floor_plan",
          "property"
        ]
      },
      "UnitSummary": {
        "type": "object",
        "properties": {
          "unit_id": {
            "type": "string"
          },
          "property_id": {
            "type": "string"
          },
          "property_name": {
            "type": "string"
          },
          "market": {
            "type": "string"
          },
          "unit_ref": {
            "type": "string"
          },
          "floorplan_id": {
            "type": "string"
          },
          "beds": {
            "type": "integer"
          },
          "baths": {
            "type": "number"
          },
          "sqft": {
            "type": [
              "number",
              "null"
            ]
          },
          "base_rent": {
            "$ref": "#/components/schemas/Total"
          },
          "tmlp": {
            "$ref": "#/components/schemas/Total"
          },
          "est_monthly_total": {
            "$ref": "#/components/schemas/Total"
          },
          "available_date": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "canonical_url": {
            "type": "string"
          }
        },
        "required": [
          "unit_id",
          "property_id",
          "canonical_url"
        ]
      },
      "Utility": {
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "water",
              "sewer",
              "storm_drainage",
              "trash",
              "electric",
              "gas",
              "internet"
            ]
          },
          "label": {
            "type": "string"
          },
          "billing": {
            "$ref": "#/components/schemas/FactString"
          },
          "est_monthly": {
            "$ref": "#/components/schemas/FactMoney"
          },
          "est_range": {
            "$ref": "#/components/schemas/FactObject"
          },
          "territory": {
            "$ref": "#/components/schemas/FactString"
          },
          "territory_key": {
            "enum": [
              "oncor_area",
              "gpl"
            ]
          },
          "providers": {
            "$ref": "#/components/schemas/FactStringArray"
          },
          "statutory_disclosure": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "rule": {
                    "type": "string"
                  },
                  "applies": {
                    "type": "boolean"
                  },
                  "figure_status": {
                    "type": "string"
                  }
                },
                "required": [
                  "rule",
                  "applies",
                  "figure_status"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "est_by_floorplan": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "floorplan_id": {
                  "type": "string"
                },
                "sqft": {
                  "type": "integer"
                },
                "kwh_month": {
                  "type": "integer"
                },
                "usd_month": {
                  "type": "integer"
                }
              },
              "required": [
                "floorplan_id",
                "sqft",
                "kwh_month",
                "usd_month"
              ]
            }
          }
        },
        "required": [
          "type",
          "billing",
          "statutory_disclosure"
        ]
      },
      "Verification": {
        "type": "object",
        "properties": {
          "official_origins": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "official_phones": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "e164": {
                  "type": "string",
                  "pattern": "^\\+[1-9]\\d{6,14}$"
                },
                "label": {
                  "type": "string"
                },
                "property_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "e164",
                "label",
                "property_id"
              ]
            }
          },
          "unconfirmed": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "kind": {
                  "enum": [
                    "host",
                    "phone"
                  ]
                },
                "value": {
                  "type": "string"
                },
                "property_id": {
                  "type": "string"
                },
                "reason": {
                  "type": "string"
                }
              },
              "required": [
                "kind",
                "value",
                "property_id",
                "reason"
              ]
            }
          }
        },
        "required": [
          "official_origins",
          "official_phones",
          "unconfirmed"
        ]
      },
      "VerifyCheck": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "claimed": {},
          "canonical": {},
          "result": {
            "enum": [
              "consistent",
              "mismatch",
              "cannot_verify",
              "unconfirmed",
              "not_published"
            ]
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "field",
          "result"
        ]
      },
      "VerifyInput": {
        "type": "object",
        "properties": {
          "property_id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
            "description": "Community id, e.g. ashton-park, highlander, the-midway, jupiter-place."
          },
          "claimed_rent": {
            "type": [
              "number",
              "string"
            ],
            "description": "Rent quoted by the listing you want to check, e.g. 1150 or \"$1,150\"."
          },
          "claimed_phone": {
            "type": "string",
            "maxLength": 40
          },
          "claimed_url": {
            "type": "string",
            "maxLength": 500
          },
          "claimed_special": {
            "type": "string",
            "maxLength": 300
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "VerifyResult": {
        "type": "object",
        "properties": {
          "verdict": {
            "enum": [
              "consistent",
              "mismatch",
              "cannot_verify"
            ]
          },
          "checks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VerifyCheck"
            }
          },
          "official_contacts": {
            "type": "object"
          },
          "canonical_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "advice": {
            "type": "string"
          },
          "snapshot_id": {
            "type": "string"
          },
          "as_of": {
            "type": "string"
          }
        },
        "required": [
          "verdict",
          "checks",
          "official_contacts",
          "advice"
        ]
      }
    }
  }
}
