{
  "opencollection": "1.0.0",
  "info": {
    "name": "Landcor Property API",
    "version": "0.1.0"
  },
  "items": [
    {
      "info": {
        "name": "Health",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "Service health check",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/health"
          },
          "docs": "Simple liveness endpoint for load balancers and uptime checks."
        }
      ]
    },
    {
      "info": {
        "name": "Property",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "Search for properties using the stored procedure address filters.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/property/search",
            "params": [
              {
                "name": "unit_number",
                "value": "",
                "type": "query"
              },
              {
                "name": "street_direction",
                "value": "",
                "type": "query"
              },
              {
                "name": "street_number",
                "value": "",
                "type": "query"
              },
              {
                "name": "street_name",
                "value": "",
                "type": "query"
              },
              {
                "name": "postal_code",
                "value": "",
                "type": "query"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Args:\n        filters: Collection of optional address filters such as\n            ``StreetName`` or ``PostalCode`` that are forwarded to\n            :data:`~services.stored_procedures.USP_SEARCH_SERVICE_PROPERTY`.\n\n    Returns:\n        A list of :class:`PropertySearchResult` objects containing normalized\n        PID, jurisdiction, address, and actual use type information.\n\n    Business Rules:\n        * A ``404`` response is returned when the underlying search yields no\n          rows."
        },
        {
          "info": {
            "name": "Retrieve detailed information for a property.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/property/:pid",
            "params": [
              {
                "name": "pid",
                "value": "xxx-xxx-xxx",
                "type": "path",
                "description": "Property identifier in format xxx-xxx-xxx"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Args:\n        pid: Landcor property identifier in ``xxx-xxx-xxx`` format.\n\n    Returns:\n        PropertyResponse: Envelope containing the PID, formatted address\n        metadata, and nested assessment, usage, exterior, interior, and\n        jurisdiction sections. The assessment section includes derived values\n        such as price-per-square-foot, while the exterior section summarizes\n        parking counts and amenity flags.\n\n    Business Rules:\n        * A 404 error is returned if the property"
        },
        {
          "info": {
            "name": "Return the encrypted PDF report for a property.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/property/:pid/report/pdf",
            "params": [
              {
                "name": "pid",
                "value": "xxx-xxx-xxx",
                "type": "path",
                "description": "Property identifier in format xxx-xxx-xxx"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "The PID is first resolved into assessment area (AA) code, jurisdiction code\n    and roll number. These identifiers are required by the legacy Landcor SOAP\n    webservice, which returns a base64-encoded, password protected PDF. A 404\n    error is returned when the PID cannot be resolved, while a 502 error\n    indicates that the legacy webservice either rejected the request or\n    responded without a valid PDF payload.\n\n    ``use_test_credentials`` is set when the caller presented a TEST token so\n"
        },
        {
          "info": {
            "name": "Autocomplete address lookup",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/address/autocomplete",
            "params": [
              {
                "name": "q",
                "value": "",
                "type": "query",
                "description": "Partial address string to search for."
              },
              {
                "name": "limit",
                "value": "",
                "type": "query",
                "description": "Maximum number of suggestions to return."
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Returns matching address suggestions based on partial address input. Each word in the query must match a word boundary in the address. Requires at least 3 characters."
        }
      ]
    },
    {
      "info": {
        "name": "Valuation",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "Retrieve valuation range information for a property.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/valuationRange/:pid",
            "params": [
              {
                "name": "pid",
                "value": "xxx-xxx-xxx",
                "type": "path",
                "description": "Property identifier in format xxx-xxx-xxx"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Args:\n        pid: Landcor property identifier in ``xxx-xxx-xxx`` format.\n\n    Returns:\n        ValuationRangeResponse with low and high valuation range values.\n\n    Business Rules:\n        * A 404 error is raised if no valuation record exists for the PID."
        },
        {
          "info": {
            "name": "Return the valuation range for compatibility with the updates endpoint.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/valuationRange/:pid/updates",
            "params": [
              {
                "name": "pid",
                "value": "xxx-xxx-xxx",
                "type": "path",
                "description": "Property identifier in format xxx-xxx-xxx"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Historically this endpoint exposed multiple update strategies. The\n    functionality now mirrors :func:`get_property_valuation_range` so that\n    clients receive the same data as the valuation range endpoint.\n\n    Args:\n        pid: Landcor property identifier in ``xxx-xxx-xxx`` format.\n\n    Returns:\n        ValuationRangeResponse with low and high valuation range values.\n\n    Business Rules:\n        * A 404 error is raised if no valuation record exists for the PID."
        },
        {
          "info": {
            "name": "Retrieve the complete valuation history for a property.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/valuationRange/:pid/history",
            "params": [
              {
                "name": "pid",
                "value": "xxx-xxx-xxx",
                "type": "path",
                "description": "Property identifier in format xxx-xxx-xxx"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Args:\n        pid: Landcor property identifier in ``xxx-xxx-xxx`` format.\n\n    Returns:\n        ValuationHistoryResponse containing chronological valuation data points.\n\n    Business Rules:\n        * A 404 error is raised if no valuation history exists for the PID."
        },
        {
          "info": {
            "name": "Compare a property's AVM value against a provided LTV amount.",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "{{baseUrl}}/valuation/ltv-check",
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Compare a property's AVM value against a provided LTV amount."
        },
        {
          "info": {
            "name": "Retrieve aggregated neighbourhood sales data.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/valuation/neighbourhood/:neighbourhood_code/:unit_type_code/sales",
            "params": [
              {
                "name": "neighbourhood_code",
                "value": "",
                "type": "path",
                "description": "Assessment neighbourhood identifier."
              },
              {
                "name": "unit_type_code",
                "value": "",
                "type": "path",
                "description": "Unit type code used to group comparable properties."
              },
              {
                "name": "interval",
                "value": "",
                "type": "query",
                "description": "Aggregation interval for the sales series. Use 'monthly' for discrete months or 'rolling3m' for rolling averages."
              },
              {
                "name": "months",
                "value": "",
                "type": "query",
                "description": "Number of months of history to include in the response."
              },
              {
                "name": "snapshot_day",
                "value": "",
                "type": "query",
                "description": "Preferred day of the month for the aggregation snapshot."
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Args:\n        neighbourhood_code: Assessment neighbourhood identifier.\n        unit_type_code: Unit type grouping for comparable sales.\n        interval: Aggregation interval flag (``\"monthly\"`` or ``\"rolling3m\"``).\n        months: Number of months of data to request.\n        snapshot_day: Preferred day of the month for aggregation snapshots.\n\n    Returns:\n        NeighbourhoodSalesSeriesResponse containing sales metrics over time.\n\n    Business Rules:\n        * A 400 error is raised if ``interv"
        }
      ]
    },
    {
      "info": {
        "name": "Comparables",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "Retrieve properties comparable to the given PID.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/comparables/:pid",
            "params": [
              {
                "name": "pid",
                "value": "xxx-xxx-xxx",
                "type": "path",
                "description": "Property identifier in format xxx-xxx-xxx"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Retrieve properties comparable to the given PID."
        }
      ]
    },
    {
      "info": {
        "name": "AVM Summary",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "Generate Avm Summary",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "{{baseUrl}}/generate-avm-summary",
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Generate a narrative summary from uploaded Landcor AVM data."
        }
      ]
    }
  ],
  "bundled": true
}