ATTOM Property API

Comprehensive property intelligence for 160M+ U.S. properties. Resources cover /property, /assessment, /assessmenthistory, /sale, /saleshistory, /salescomparables, /attomavm, /avm, /avmhistory, /rentalavm, /homeequity, /allevents, /school, /transportationnoise, /preforeclosure, and /property/buildingpermits, each available in `snapshot` and `detail` packages. Returns property characteristics, ownership and mortgage records, assessed values and tax history, sales history, AVM valuations (current and historical), rental AVM, home equity, school assignments, transportation noise, foreclosure status, and building permits. Inputs include AttomID, address, address1/address2, and geographic radius/bounding box.

ATTOM Property API is one of 5 APIs that ATTOM publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 7 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 4 JSON Schema definitions.

Tagged areas include Property, Real Estate, Assessment, AVM, and Sales. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, a JSON-LD context, sample payloads, 7 Naftiko capability specs, and 4 JSON Schemas.

Documentation

Specifications

Examples

Schemas & Data

Other Resources

OpenAPI Specification

attom-property-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: ATTOM Property API
  description: |
    ATTOM Property API delivers comprehensive property intelligence for more than
    160 million U.S. properties. Resources include property characteristics, ownership
    and mortgage records, assessed value and tax history, sales history, AVM valuations
    (current and historical), rental AVM, home equity, school assignments, transportation
    noise scoring, pre-foreclosure status, and building permits. Most resources are
    offered in both `snapshot` and `detail` packages and accept any of: AttomID,
    address (single string), address1 + address2, or geographic radius / bounding-box
    parameters.
  version: v1.0.0
  contact:
    name: ATTOM Data Customer Care
    email: [email protected]
    url: https://api.developer.attomdata.com/
  license:
    name: ATTOM Data Terms of Use
    url: https://www.attomdata.com/terms-of-use/
servers:
  - url: https://api.gateway.attomdata.com/propertyapi/v1.0.0
    description: ATTOM Property API Production Gateway
security:
  - ApiKeyAuth: []
tags:
  - name: Property
    description: Property characteristics, ownership, mortgage, and address resolution.
  - name: Assessment
    description: Assessed value, tax liability, and assessment history.
  - name: AVM
    description: Automated Valuation Model — current AVM, AVM history, and rental AVM.
  - name: Sale
    description: Sales transactions, sales history, and comparable sales.
  - name: All Events
    description: Combined assessment, AVM, and sales-transaction events.
  - name: Building Permits
    description: Building permit records associated with a property.
  - name: School
    description: School assignments and attendance-zone associations.
  - name: Home Equity
    description: Estimated home equity calculations.
  - name: Pre-Foreclosure
    description: Pre-foreclosure status and notice records.
  - name: Sales Trends
    description: Aggregated sales trends for a geography.
paths:
  /property/address:
    get:
      summary: Search Properties By Address
      description: Search properties matching a postal address.
      operationId: searchPropertyAddress
      tags: [Property]
      parameters:
        - $ref: '#/components/parameters/AddressQuery'
        - $ref: '#/components/parameters/Address1Query'
        - $ref: '#/components/parameters/Address2Query'
        - $ref: '#/components/parameters/PageQuery'
        - $ref: '#/components/parameters/PageSizeQuery'
      responses:
        '200': { $ref: '#/components/responses/PropertyListResponse' }
        '400': { $ref: '#/components/responses/ErrorResponse' }
        '401': { $ref: '#/components/responses/ErrorResponse' }
        '429': { $ref: '#/components/responses/ErrorResponse' }
  /property/snapshot:
    get:
      summary: Get Property Snapshot
      description: Return a summary snapshot of property attributes for the matched property.
      operationId: getPropertySnapshot
      tags: [Property]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
        - $ref: '#/components/parameters/Address1Query'
        - $ref: '#/components/parameters/Address2Query'
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
        '400': { $ref: '#/components/responses/ErrorResponse' }
  /property/detail:
    get:
      summary: Get Property Detail
      description: Return a detailed property record including building, lot, area, and identifier blocks.
      operationId: getPropertyDetail
      tags: [Property]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
        - $ref: '#/components/parameters/Address1Query'
        - $ref: '#/components/parameters/Address2Query'
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
  /property/detailwithschools:
    get:
      summary: Get Property Detail With Schools
      description: Property detail plus assigned schools and school district attributes.
      operationId: getPropertyDetailWithSchools
      tags: [Property, School]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
  /property/detailmortgage:
    get:
      summary: Get Property Detail With Mortgage
      description: Property detail enriched with current and historical mortgage records.
      operationId: getPropertyDetailMortgage
      tags: [Property]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
  /property/detailowner:
    get:
      summary: Get Property Detail With Owner
      description: Property detail enriched with owner identity, mailing address, and ownership classification.
      operationId: getPropertyDetailOwner
      tags: [Property]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
  /property/detailmortgageowner:
    get:
      summary: Get Property Detail With Mortgage And Owner
      description: Property detail enriched with both mortgage and owner records.
      operationId: getPropertyDetailMortgageOwner
      tags: [Property]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
  /property/basicprofile:
    get:
      summary: Get Property Basic Profile
      description: Compact property profile (characteristics, last sale, assessed value).
      operationId: getPropertyBasicProfile
      tags: [Property]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
  /property/basichistory:
    get:
      summary: Get Property Basic History
      description: Compact history of sales and assessment events for a property.
      operationId: getPropertyBasicHistory
      tags: [Property]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
  /property/expandedprofile:
    get:
      summary: Get Property Expanded Profile
      description: Full expanded property record including characteristics, owner, mortgage, and last sale.
      operationId: getPropertyExpandedProfile
      tags: [Property]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
  /property/expandedhistory:
    get:
      summary: Get Property Expanded History
      description: Full historical events for a property (sales, assessments, AVMs).
      operationId: getPropertyExpandedHistory
      tags: [Property]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
  /property/buildingpermits:
    get:
      summary: Get Property Building Permits
      description: Building permit records associated with a property.
      operationId: getPropertyBuildingPermits
      tags: [Building Permits]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
  /property/id:
    get:
      summary: Search By Property ID
      description: Look up properties by AttomID or other ATTOM-issued identifiers with optional search/sort filters.
      operationId: searchPropertyId
      tags: [Property]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/PageQuery'
        - $ref: '#/components/parameters/PageSizeQuery'
      responses:
        '200': { $ref: '#/components/responses/PropertyListResponse' }
  /transportationnoise:
    get:
      summary: Get Transportation Noise Score
      description: Return road, air, and rail transportation-noise scores for a property.
      operationId: getTransportationNoise
      tags: [Property]
      parameters:
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
  /enumerations/detail:
    get:
      summary: Get Enumeration Detail
      description: Return ATTOM enumeration metadata (property-use codes, tax-status codes, etc.).
      operationId: getEnumerationsDetail
      tags: [Property]
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
  /assessment/snapshot:
    get:
      summary: Get Assessment Snapshot
      description: Compact assessed-value record for a property.
      operationId: getAssessmentSnapshot
      tags: [Assessment]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/AssessmentResponse' }
  /assessment/detail:
    get:
      summary: Get Assessment Detail
      description: Full assessed-value record including tax amount, tax year, market value, and exemption flags.
      operationId: getAssessmentDetail
      tags: [Assessment]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/AssessmentResponse' }
  /assessmenthistory/detail:
    get:
      summary: Get Assessment History Detail
      description: Multi-year history of assessed values and tax amounts for a property.
      operationId: getAssessmentHistoryDetail
      tags: [Assessment]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/AssessmentResponse' }
  /attomavm/detail:
    get:
      summary: Get ATTOM AVM Detail
      description: Return ATTOM Automated Valuation Model (AVM) value, confidence score, and value range.
      operationId: getAttomAvmDetail
      tags: [AVM]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/AvmResponse' }
  /avm/snapshot:
    get:
      summary: Get AVM Snapshot
      description: Compact AVM record for a property.
      operationId: getAvmSnapshot
      tags: [AVM]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/AvmResponse' }
  /avm/detail:
    get:
      summary: Get AVM Detail
      description: Detailed AVM record with confidence band and as-of date.
      operationId: getAvmDetail
      tags: [AVM]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/AvmResponse' }
  /avmhistory/detail:
    get:
      summary: Get AVM History
      description: Historical AVM valuations for a property across multiple as-of dates.
      operationId: getAvmHistoryDetail
      tags: [AVM]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/AvmResponse' }
  /valuation/rentalavm:
    get:
      summary: Get Rental AVM
      description: Estimated monthly rent for a property using ATTOM's rental AVM model.
      operationId: getRentalAvm
      tags: [AVM]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/AvmResponse' }
  /valuation/homeequity:
    get:
      summary: Get Home Equity Estimate
      description: Estimated home equity (AVM minus open loan balances).
      operationId: getHomeEquity
      tags: [Home Equity]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/AvmResponse' }
  /sale/snapshot:
    get:
      summary: Get Sale Snapshot
      description: Most-recent sale event for a property (compact).
      operationId: getSaleSnapshot
      tags: [Sale]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/SaleResponse' }
  /sale/detail:
    get:
      summary: Get Sale Detail
      description: Most-recent sale event with full transaction, deed, and recording attributes.
      operationId: getSaleDetail
      tags: [Sale]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/SaleResponse' }
  /saleshistory/snapshot:
    get:
      summary: Get Sales History Snapshot
      description: Compact list of historical sale events for a property.
      operationId: getSalesHistorySnapshot
      tags: [Sale]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/SaleResponse' }
  /saleshistory/detail:
    get:
      summary: Get Sales History Detail
      description: Detailed list of historical sale events for a property.
      operationId: getSalesHistoryDetail
      tags: [Sale]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/SaleResponse' }
  /salescomparables/address/{street}/{citystatezip}:
    get:
      summary: Get Sales Comparables
      description: Return comparable sales (comps) for a subject property by street and city/state/ZIP.
      operationId: getSalesComparables
      tags: [Sale]
      parameters:
        - name: street
          in: path
          required: true
          description: Street component of the subject address.
          schema:
            type: string
        - name: citystatezip
          in: path
          required: true
          description: City, state, and ZIP component of the subject address.
          schema:
            type: string
      responses:
        '200': { $ref: '#/components/responses/SaleResponse' }
  /transaction/salestrend:
    get:
      summary: Get Sales Trend
      description: Average and median sales prices for the past two years for the requested geography.
      operationId: getSalesTrend
      tags: [Sales Trends]
      parameters:
        - name: geoIdV4
          in: query
          required: true
          description: ATTOM v4 geography identifier (state, county, CBSA, ZIP, neighborhood).
          schema:
            type: string
        - name: interval
          in: query
          required: false
          description: Time interval ("Yearly", "Monthly").
          schema:
            type: string
            enum: [Yearly, Monthly]
            default: Yearly
      responses:
        '200': { $ref: '#/components/responses/SaleResponse' }
  /allevents/snapshot:
    get:
      summary: Get All Events Snapshot
      description: Combined snapshot of assessment, AVM, and sales events for a property.
      operationId: getAllEventsSnapshot
      tags: [All Events]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
        - $ref: '#/components/parameters/Address1Query'
        - $ref: '#/components/parameters/Address2Query'
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
  /allevents/detail:
    get:
      summary: Get All Events Detail
      description: Combined detail of assessment, AVM, and sales events for a property.
      operationId: getAllEventsDetail
      tags: [All Events]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
        - $ref: '#/components/parameters/Address1Query'
        - $ref: '#/components/parameters/Address2Query'
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
  /preforeclosure/details:
    get:
      summary: Get Pre-Foreclosure Details
      description: Pre-foreclosure status, notice date, and lender for a property.
      operationId: getPreforeclosureDetails
      tags: [Pre-Foreclosure]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
  /school/snapshot:
    get:
      summary: Get School Snapshot
      description: Schools and school-district attributes associated with a property.
      operationId: getSchoolSnapshot
      tags: [School]
      parameters:
        - $ref: '#/components/parameters/AttomIDQuery'
        - $ref: '#/components/parameters/AddressQuery'
      responses:
        '200': { $ref: '#/components/responses/PropertyResponse' }
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: apikey
      description: |
        ATTOM-issued API key. Obtain a free 30-day trial key at
        https://api.developer.attomdata.com/signup. Pass the key in the `apikey`
        request header on every call.
  parameters:
    AttomIDQuery:
      name: AttomID
      in: query
      required: false
      description: ATTOM property identifier.
      schema:
        type: string
      example: '145423726'
    AddressQuery:
      name: address
      in: query
      required: false
      description: Full street address as a single string.
      schema:
        type: string
      example: 4529 Winona Court, Denver, CO 80212
    Address1Query:
      name: address1
      in: query
      required: false
      description: Street component of the property address.
      schema:
        type: string
      example: 4529 Winona Court
    Address2Query:
      name: address2
      in: query
      required: false
      description: City, state, and ZIP component of the property address.
      schema:
        type: string
      example: Denver, CO 80212
    PageQuery:
      name: page
      in: query
      required: false
      description: Page number for paginated result sets.
      schema:
        type: integer
        minimum: 1
        default: 1
    PageSizeQuery:
      name: pagesize
      in: query
      required: false
      description: Records per page.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 10
  schemas:
    Status:
      type: object
      description: ATTOM standard response status block.
      properties:
        version:
          type: string
        code:
          type: integer
        msg:
          type: string
        total:
          type: integer
        page:
          type: integer
        pagesize:
          type: integer
    Address:
      type: object
      properties:
        country:
          type: string
        countrySubd:
          type: string
        line1:
          type: string
        line2:
          type: string
        locality:
          type: string
        matchCode:
          type: string
        oneLine:
          type: string
        postal1:
          type: string
        postal2:
          type: string
        postal3:
          type: string
    Location:
      type: object
      properties:
        accuracy:
          type: string
        latitude:
          type: string
        longitude:
          type: string
        distance:
          type: number
        geoid:
          type: string
        geoIdV4:
          type: object
    Identifier:
      type: object
      properties:
        Id:
          type: integer
        fips:
          type: string
        apn:
          type: string
        attomId:
          type: integer
    Lot:
      type: object
      properties:
        lotnum:
          type: string
        lotsize1:
          type: number
        lotsize2:
          type: number
        zoningType:
          type: string
    Building:
      type: object
      properties:
        size:
          type: object
          properties:
            bldgsize:
              type: integer
            grosssize:
              type: integer
            livingsize:
              type: integer
            universalsize:
              type: integer
        rooms:
          type: object
          properties:
            bathstotal:
              type: number
            beds:
              type: integer
            roomsTotal:
              type: integer
        construction:
          type: object
          properties:
            condition:
              type: string
            constructionType:
              type: string
            wallType:
              type: string
            roofCover:
              type: string
        summary:
          type: object
          properties:
            yearbuilteffective:
              type: integer
            yearbuilt:
              type: integer
    Summary:
      type: object
      properties:
        absenteeInd:
          type: string
        propclass:
          type: string
        propsubtype:
          type: string
        proptype:
          type: string
        yearbuilt:
          type: integer
        propLandUse:
          type: string
    Owner:
      type: object
      properties:
        corporateindicator:
          type: string
        owner1:
          type: object
          properties:
            firstnameandmi:
              type: string
            lastname:
              type: string
        owner2:
          type: object
          properties:
            firstnameandmi:
              type: string
            lastname:
              type: string
        mailingaddressoneline:
          type: string
    Mortgage:
      type: object
      properties:
        FirstConcurrent:
          type: object
          properties:
            amount:
              type: integer
            date:
              type: string
            lender:
              type: object
              properties:
                fullName:
                  type: string
            interestRate:
              type: number
            term:
              type: string
            trustDeedDocumentNumber:
              type: string
    Vintage:
      type: object
      properties:
        lastModified:
          type: string
        pubDate:
          type: string
    Property:
      type: object
      properties:
        identifier:
          $ref: '#/components/schemas/Identifier'
        lot:
          $ref: '#/components/schemas/Lot'
        area:
          type: object
        address:
          $ref: '#/components/schemas/Address'
        location:
          $ref: '#/components/schemas/Location'
        summary:
          $ref: '#/components/schemas/Summary'
        building:
          $ref: '#/components/schemas/Building'
        owner:
          $ref: '#/components/schemas/Owner'
        mortgage:
          $ref: '#/components/schemas/Mortgage'
        vintage:
          $ref: '#/components/schemas/Vintage'
    Assessment:
      type: object
      properties:
        appraised:
          type: object
          properties:
            apprimprvalue:
              type: integer
            apprlandvalue:
              type: integer
            apprttlvalue:
              type: integer
        assessed:
          type: object
          properties:
            assdimprvalue:
              type: integer
            assdlandvalue:
              type: integer
            assdttlvalue:
              type: integer
        market:
          type: object
          properties:
            mktimprvalue:
              type: integer
            mktlandvalue:
              type: integer
            mktttlvalue:
              type: integer
        tax:
          type: object
          properties:
            taxamt:
              type: number
            taxpereszidx:
              type: number
            taxyear:
              type: integer
        owner:
          $ref: '#/components/schemas/Owner'
    AVM:
      type: object
      properties:
        amount:
          type: object
          properties:
            scr:
              type: integer
            value:
              type: integer
            high:
              type: integer
            low:
              type: integer
            valueRange:
              type: integer
            confidence:
              type: string
        eventDate:
          type: string
        AVMModel:
          type: object
          properties:
            FSDscore:
              type: integer
    Sale:
      type: object
      properties:
        amount:
          type: object
          properties:
            saleamt:
              type: integer
            salecode:
              type: string
            saledisclosuretype:
              type: integer
            saledocnum:
              type: string
            saledocType:
              type: string
            saletranstype:
              type: string
        calculation:
          type: object
          properties:
            pricepersizeunit:
              type: number
        salesearchdate:
          type: string
        saleTransDate:
          type: string
    PropertyEnvelope:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/Status'
        property:
          type: array
          items:
            $ref: '#/components/schemas/Property'
    PropertyListEnvelope:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/Status'
        property:
          type: array
          items:
            $ref: '#/components/schemas/Property'
    AssessmentEnvelope:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/Status'
        property:
          type: array
          items:
            type: object
            properties:
              identifier:
                $ref: '#/components/schemas/Identifier'
              address:
                $ref: '#/components/schemas/Address'
              assessment:
                $ref: '#/components/schemas/Assessment'
    AvmEnvelope:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/Status'
        property:
          type: array
          items:
            type: object
            properties:
              identifier:
                $ref: '#/components/schemas/Identifier'
              address:
                $ref: '#/components/schemas/Address'
              avm:
                $ref: '#/components/schemas/AVM'
    SaleEnvelope:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/Status'
        property:
          type: array
          items:
            type: object
            properties:
              identifier:
                $ref: '#/components/schemas/Identifier'
              address:
                $ref: '#/components/schemas/Address'
              sale:
                $ref: '#/components/schemas/Sale'
    Error:
      type: object
      properties:
        Response:
          type: object
          properties:
            status:
              $ref: '#/components/schemas/Status'
  responses:
    PropertyResponse:
      description: Property record envelope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PropertyEnvelope'
    PropertyListResponse:
      description: Paginated list of property records.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PropertyListEnvelope'
    AssessmentResponse:
      description: Assessment envelope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AssessmentEnvelope'
    AvmResponse:
      description: AVM envelope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AvmEnvelope'
    SaleResponse:
      description: Sale envelope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SaleEnvelope'
    ErrorResponse:
      description: ATTOM error envelope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'