> ## Documentation Index
> Fetch the complete documentation index at: https://docs.immoteur.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List classifieds associated with a property

> Returns every classified currently attached to the given property with the same level of detail as `/classifieds/{id}` (publisher, media, transaction history, energy data, etc.).



## OpenAPI

````yaml /immoteur-api-public-v1.spec.yaml get /properties/{id}/classifieds
openapi: 3.1.0
info:
  title: Immoteur Public API
  version: 1.1.0
  description: >-
    Public API for the Immoteur service.


    ## Authentication

    Use a **Personal Access Token** from your Immoteur dashboard and send it in
    the `Authorization` header:


    ```

    Authorization: Bearer YOUR_TOKEN_HERE

    ```


    ### cURL example

    ```bash

    curl -sS https://api.immoteur.com/public/v1/auth \
      -H "Authorization: Bearer $IMMOTEUR_TOKEN"
    ```


    ## Environments

    - **Production:** `https://api.immoteur.com/public/v1`


    ## Errors & Rate Limiting

    - `400 Bad Request`: malformed request or invalid syntax.

    - `401 Unauthorized`: missing or invalid token.

    - `403 Forbidden`: token valid but not permitted for this resource.

    - `429 Too Many Requests`: back off and retry with exponential delay.

    - `422 Validation Error`: payload is syntactically correct but fails
    validation.


    ## Pagination

    - Requests specify `page` (1..500). Responses include `page`, `nextPage`,
    `perPage`, `total`, `totalPages`.


    ## Data Access Limits

    The `meta.dataAccessLimit` block shows **implicit filters** tied to your
    plan (e.g., whitelisted departments/SIREN/SIRET). Your effective result set
    equals **your filters ∩ requested filters**.


    ## Using AI/LLMs

    - Always include the `Authorization` header.

    - Prefer explicit filters (departments, INSEE, postcodes) with **existing**
    French codes/names.

    - Follow the examples below as canonical payload shapes.


    ## Contact & Docs

    - Website: https://immoteur.com

    - Support: Use your customer portal or contact listed on the website.
  contact:
    url: https://immoteur.com
    name: Immoteur
    email: support@immoteur.com
servers:
  - url: https://api.immoteur.com/public/v1
    description: Production server
security:
  - BearerAuth: []
tags:
  - name: Info
    description: Token/account info
  - name: Property
    description: Property operations
  - name: Classified
    description: Classified operations
  - name: Issue
    description: User-submitted issue reports
externalDocs:
  description: Full product documentation
  url: https://docs.immoteur.com
paths:
  /properties/{id}/classifieds:
    get:
      tags:
        - Property
      summary: List classifieds associated with a property
      description: >-
        Returns every classified currently attached to the given property with
        the same level of detail as `/classifieds/{id}` (publisher, media,
        transaction history, energy data, etc.).
      operationId: propertiesClassifiedsIndex
      parameters:
        - name: id
          in: path
          description: Property identifier (UUID).
          required: true
          schema:
            type: string
            format: uuid
            example: 3a8f1d72-3d0b-4ee6-9a83-a7a9a73ae6c2
      responses:
        '200':
          description: Classifieds linked to the requested property.
          content:
            application/json:
              schema:
                type: object
                required:
                  - classifieds
                  - meta
                properties:
                  classifieds:
                    type: array
                    description: Detailed classifieds linked to the property.
                    items:
                      $ref: '#/components/schemas/Classified'
                  meta:
                    type: object
                    required:
                      - subscriptionPlan
                      - dataAccessLimit
                    properties:
                      dataAccessLimit:
                        $ref: '#/components/schemas/DataAccessLimit'
                      subscriptionPlan:
                        $ref: '#/components/schemas/SubscriptionPlan'
              example:
                classifieds:
                  - id: 7f6e3b4d-9c22-46a0-8f20-0d1a2b3c4d5e
                    propertyId: 01920347-45c7-7b81-a2e4-d28c43f0d123
                    status:
                      current: available
                    currency: euro
                    squareUnit: squareMeter
                    title: Appartement lumineux proche du Louvre
                    description: Appartement lumineux avec terrasse et vue dégagée.
                    source:
                      domain: seloger.com
                      url: >-
                        https://www.seloger.com/annonces/achat/appartement/paris-1er-75/5-pieces/0.htm
                    publisher:
                      isProfessional: true
                      siren: '123456789'
                      siret: '12345678900011'
                    contact:
                      name: Jean Dupont
                      email: proprietaire@example.org
                      phoneExists: true
                      isRefusingSolicitation: false
                    location:
                      city:
                        name: Paris
                        inseeCode: '75056'
                      postcode: '75001'
                      department: '75'
                      country: france
                    property:
                      type: apartment
                      area: 52
                      bedroomCount: 2
                      roomCount: 3
                      balconyExists: true
                    transaction:
                      type: sale
                      isExclusiveMandate: true
                      price:
                        current: 650000
                        initial: 680000
                        perSquareUnit: 12500
                        history:
                          - id: 0aa4bc4b-7db0-4bf2-9a4a-f2e6f8d4f99a
                            value: 680000
                            timestamp: '2025-06-20T10:23:00Z'
                          - id: 4d4744d6-d7f1-4f8b-8c3c-fb8a1e3c0f8a
                            value: 650000
                            timestamp: '2025-06-25T07:45:00Z'
                    media:
                      images:
                        - id: 75caa436-207a-4f06-b0d1-3c1a3508dbbb
                          position: 1
                          url: https://cdn.seloger.com/photo-1.jpg
                    meta:
                      firstSeenAt: '2025-06-20T10:23:00Z'
                      lastModifiedAt: '2025-06-22T12:00:00Z'
                      lastSeenAt: '2025-06-25T07:45:00Z'
                meta:
                  subscriptionPlan: growth100
                  dataAccessLimit:
                    departments:
                      - '75'
                    sirens:
                      - '123456789'
                    sirets:
                      - '12345678900011'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '409':
          $ref: '#/components/responses/MissConfigurationError'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/RateLimitError'
        default:
          $ref: '#/components/responses/DefaultError'
components:
  schemas:
    Classified:
      type: object
      required:
        - id
        - propertyId
        - currency
        - status
        - meta
        - property
        - source
        - squareUnit
        - publisher
        - transaction
        - location
      properties:
        contact:
          $ref: '#/components/schemas/ClassifiedContact'
          description: Contact information for the classified.
        currency:
          $ref: '#/components/schemas/ClassifiedCurrency'
          description: Currency of the price.
        description:
          description: Description of the classified.
          type: string
          example: Bel appartement lumineux au cœur de Paris.
        energy:
          $ref: '#/components/schemas/Energy'
          description: Energy information for the classified.
        id:
          description: Unique identifier for the classified.
          type: string
          format: uuid
          example: 7f6e3b4d-9c22-46a0-8f20-0d1a2b3c4d5e
        location:
          $ref: '#/components/schemas/Location'
          description: Location information for the classified.
        media:
          $ref: '#/components/schemas/Media'
          description: Media information for the classified.
        meta:
          $ref: '#/components/schemas/ClassifiedMeta'
          description: Meta information for the classified.
        property:
          $ref: '#/components/schemas/PropertyAttributes'
          description: Property information for the classified.
        propertyId:
          description: Identifier of the property linked to this classified.
          type: string
          format: uuid
          example: 01920347-45c7-7b81-a2e4-d28c43f0d123
        publishedAt:
          description: Timestamp when the classified was published on its original source.
          type: string
          format: date-time
          nullable: true
          example: '2025-05-15T08:10:00Z'
        publisher:
          $ref: '#/components/schemas/ClassifiedPublisher'
          description: Publisher information for the classified.
        source:
          $ref: '#/components/schemas/ClassifiedSource'
          description: Source information for the classified.
        squareUnit:
          $ref: '#/components/schemas/ClassifiedSquareUnit'
          description: Square unit of the price.
        status:
          $ref: '#/components/schemas/ClassifiedStatus'
          description: Current lifecycle status of the classified.
        title:
          description: Title of the classified.
          type: string
          example: Appartement 3 pièces Paris 1er
        transaction:
          $ref: '#/components/schemas/Transaction'
          description: Transaction information for the classified.
    DataAccessLimit:
      description: >-
        Inner filters applied to your search, see
        `https://immoteur.com/en/dashboard/billing`
      type: object
      required:
        - departments
        - sirens
        - sirets
      properties:
        departments:
          type: array
          description: Departments implicitly whitelisted for this account.
          items:
            type: string
          example:
            - '75'
            - '92'
        sirens:
          type: array
          description: SIREN identifiers implicitly whitelisted for this account.
          items:
            type: string
          example:
            - '123456789'
        sirets:
          type: array
          description: SIRET identifiers implicitly whitelisted for this account.
          items:
            type: string
          example:
            - '12345678900011'
    SubscriptionPlan:
      type: string
      description: Active plan that governs rate limits and pagination caps for this token.
      enum:
        - enterprise500
        - free
        - growth100
        - pro200
        - starter30
      example: pro200
    ClassifiedContact:
      type: object
      properties:
        email:
          description: Email address of the contact.
          type: string
          format: email
          example: proprietaire@example.org
        isRefusingSolicitation:
          description: >-
            Indicates whether the contact explicitly refuses professional
            solicitation.
          type: boolean
          example: false
        name:
          description: Name of the contact.
          type: string
          example: Jean Dupont
        phone:
          description: Phone number of the contact (E.164 recommended).
          type: string
          format: phone
          pattern: ^\+?[1-9]\d{1,14}$
          example: '+33612345678'
        phoneExists:
          description: >-
            Indicates whether the source listing exposes a contact phone, even
            if the number itself is not returned.
          type: boolean
          example: true
    ClassifiedCurrency:
      type: string
      enum:
        - euro
    Energy:
      type: object
      properties:
        dpe:
          $ref: '#/components/schemas/EnergyDpe'
          description: DPE energy information.
        ges:
          $ref: '#/components/schemas/EnergyGes'
          description: GES energy information.
        heating:
          $ref: '#/components/schemas/EnergyHeating'
          description: Heating energy information.
    Location:
      type: object
      required:
        - city
        - country
        - department
        - postcode
      properties:
        city:
          $ref: '#/components/schemas/LocationCity'
          description: City of the location.
        country:
          description: Country of the location.
          type: string
          enum:
            - france
          example: france
        department:
          type: string
          description: French department code (e.g., "75").
          example: '75'
        district:
          description: >-
            District, neighborhood, or arrondissement within the city when
            available.
          type: string
          example: Canclaux
        irisCode:
          description: IRIS code of the location when available.
          type: string
          example: '441090308'
        latitude:
          description: Latitude of the location.
          type: number
          format: double
          minimum: -90
          maximum: 90
          example: 48.8606
        longitude:
          description: Longitude of the location.
          type: number
          format: double
          minimum: -180
          maximum: 180
          example: 2.3376
        postcode:
          description: Postcode of the location.
          type: string
          example: '75001'
    Media:
      type: object
      required:
        - images
      properties:
        images:
          description: Images of the classified.
          type: array
          items:
            $ref: '#/components/schemas/MediaImage'
          example:
            - id: cb6cbd86-5d14-48bd-a566-613e9dfc91d0
              position: 1
              url: https://images.immoteur.com/sample/apt-paris-1.jpg
    ClassifiedMeta:
      type: object
      required:
        - firstSeenAt
        - lastModifiedAt
        - lastSeenAt
      properties:
        firstSeenAt:
          description: Timestamp when the classified was first seen.
          type: string
          format: date-time
          example: '2025-09-15T08:10:00Z'
        lastModifiedAt:
          description: Timestamp when the classified was last modified.
          type: string
          format: date-time
          example: '2025-09-15T09:00:00Z'
        lastSeenAt:
          description: Timestamp when the classified was last seen.
          type: string
          format: date-time
          example: '2025-09-15T09:00:00Z'
        removedAt:
          description: Timestamp when the classified was removed.
          type: string
          format: date-time
          nullable: true
          example: '2025-09-20T12:00:00Z'
    PropertyAttributes:
      type: object
      required:
        - type
      properties:
        airConditioningExists:
          description: Indicates if the property has air conditioning.
          type: boolean
          example: false
        alarmExists:
          description: Indicates if the property has an alarm system.
          type: boolean
          example: false
        area:
          description: Area of the property.
          type: number
          format: float
          minimum: 0
          example: 50
        atticExists:
          description: Indicates if the property has an attic.
          type: boolean
          example: false
        balconyArea:
          description: Area of the balcony.
          type: number
          format: float
          minimum: 0
          example: 6
        balconyCount:
          description: Number of balconies.
          type: integer
          minimum: 0
          example: 1
        balconyExists:
          description: Indicates if the property has a balcony.
          type: boolean
          example: false
        bathroomCount:
          description: Number of bathrooms.
          type: integer
          minimum: 0
          example: 1
        bedroomCount:
          description: Number of bedrooms in the property.
          type: integer
          minimum: 0
          example: 2
        caretakerExists:
          description: Indicates if the property has a caretaker.
          type: boolean
          example: false
        ceilingHeight:
          description: Ceiling height of the property in meters.
          type: number
          format: float
          minimum: 0
          example: 3.2
        cellarExists:
          description: Indicates if the property has a cellar.
          type: boolean
          example: false
        constructionYear:
          description: Year of construction for the property.
          type: integer
          minimum: 0
          example: 1975
        doorCodeExists:
          description: Indicates if the property has a door code.
          type: boolean
          example: true
        elevatorExists:
          description: Indicates if the property has an elevator.
          type: boolean
          example: true
        fireplaceExists:
          description: Indicates if the property has a fireplace.
          type: boolean
          example: false
        floor:
          description: Floor of the property (Apartment only).
          type: integer
          minimum: 0
          example: 3
        floorCount:
          description: Total number of floors in the property (Apartment only).
          type: integer
          minimum: 0
          example: 6
        garageExists:
          description: Indicates if the property has a garage.
          type: boolean
          example: false
        gardenExists:
          description: Indicates if the property has a garden.
          type: boolean
          example: false
        intercomExists:
          description: Indicates if the property has an intercom.
          type: boolean
          example: true
        isCondominium:
          description: Indicates if the property is part of a condominium.
          type: boolean
          example: true
        isDisabledFriendly:
          description: Indicates if the property is disabled friendly.
          type: boolean
          example: false
        isDualAspect:
          description: Indicates if the property has dual aspect.
          type: boolean
          example: false
        isNew:
          description: Indicates if the property is new.
          type: boolean
          example: false
        isOccupied:
          description: Indicates if the property is occupied.
          type: boolean
          example: false
        landArea:
          description: >-
            Land area of the property (including house, garden, terrace,
            entrance, etc.).
          type: number
          format: float
          minimum: 0
          example: 0
        livingRoomArea:
          description: Area of the living room.
          type: number
          format: float
          minimum: 0
          example: 20
        orientation:
          description: Orientation of the property.
          type: string
          enum:
            - east
            - north
            - northEast
            - northWest
            - south
            - southEast
            - southWest
            - west
          example: south
        parkingExists:
          description: Indicates if the property has parking.
          type: boolean
          example: true
        renovationIsNeeded:
          description: Indicates if renovation is needed.
          type: boolean
          example: false
        renovationYear:
          description: Year of renovation for the property.
          type: integer
          minimum: 0
          example: 2018
        roomCount:
          description: Number of rooms in the property.
          type: integer
          minimum: 0
          example: 3
        showerRoomCount:
          description: Number of shower rooms in the property.
          type: integer
          minimum: 0
          example: 1
        swimmingPoolExists:
          description: Indicates if the property has a swimming pool.
          type: boolean
          example: false
        terraceArea:
          description: Area of the terrace.
          type: number
          format: float
          minimum: 0
          example: 8
        terraceCount:
          description: Number of terraces.
          type: integer
          minimum: 0
          example: 1
        terraceExists:
          description: Indicates if the property has a terrace.
          type: boolean
          example: true
        toiletCount:
          description: Number of toilets.
          type: integer
          minimum: 0
          example: 1
        toiletSeparateExists:
          description: Indicates if the property has a separate toilet.
          type: boolean
          example: true
        type:
          $ref: '#/components/schemas/PropertyType'
          description: Type of property.
    ClassifiedPublisher:
      type: object
      required:
        - isProfessional
      properties:
        commercialName:
          description: >-
            Commercial name of the publisher resolved from SIREN/SIRET (if
            professional).
          type: string
          example: SAS HD IMMOBILIER
        email:
          description: Email address of the publisher (if professional).
          type: string
          format: email
          example: contact@agence-paris.fr
        feesUrl:
          description: URL to the fee information of the publisher (if professional).
          type: string
          format: uri
          example: https://www.agence-paris.fr/honoraires
        isProfessional:
          description: Indicates if the publisher is a professional.
          type: boolean
          example: true
        phone:
          description: Phone number of the publisher (if professional).
          type: string
          format: phone
          pattern: ^\+?[1-9]\d{1,14}$
          example: '+33123456789'
        siren:
          description: SIREN number of the publisher (if professional).
          type: string
          example: '123456789'
        siret:
          description: SIRET number of the publisher (if professional).
          type: string
          example: '12345678900011'
        type:
          description: Type of publisher (if professional).
          type: string
          enum:
            - agency
            - mandatary
          example: agency
    ClassifiedSource:
      type: object
      required:
        - domain
        - url
      properties:
        domain:
          description: Domain of the source.
          type: string
          example: seloger.com
        url:
          description: URL of the source.
          type: string
          format: uri
          example: >-
            https://www.seloger.com/annonces/achat/appartement/paris-1er-75/5-pieces/0.htm
    ClassifiedSquareUnit:
      type: string
      enum:
        - squareMeter
    ClassifiedStatus:
      description: Lifecycle status details of the classified.
      type: object
      required:
        - current
      properties:
        current:
          $ref: '#/components/schemas/ClassifiedStatusValue'
          description: Current lifecycle status of the classified.
    Transaction:
      type: object
      required:
        - price
        - type
      properties:
        fees:
          $ref: '#/components/schemas/TransactionFees'
          description: Optional listing fee information advertised on the source listing.
        isExclusiveMandate:
          description: Indicates whether the listing is advertised as an exclusive mandate.
          type: boolean
          example: true
        price:
          $ref: '#/components/schemas/TransactionPrice'
          description: Price information for the transaction.
        rent:
          $ref: '#/components/schemas/TransactionRentTerms'
          description: Optional commercial terms specific to rent listings.
        sale:
          $ref: '#/components/schemas/TransactionSaleTerms'
          description: Optional commercial terms specific to sale listings.
        type:
          $ref: '#/components/schemas/TransactionType'
          description: Type of transaction.
    ProblemDetails:
      type: object
      required:
        - type
        - title
        - status
        - detail
        - instance
        - code
        - traceId
      properties:
        code:
          type: string
          description: Stable machine-readable error code.
          example: resource_not_found
        detail:
          type: string
          description: Human-readable explanation specific to this occurrence.
          example: The requested resource could not be found.
        instance:
          type: string
          description: Request URI identifying the specific occurrence.
          example: /public/v1/properties/019c12dc-339f-72ce-98db-663b44c0d924
        status:
          type: integer
          format: int32
          minimum: 400
          maximum: 599
          description: HTTP status code generated for this occurrence.
          example: 404
        title:
          type: string
          description: Short, human-readable summary of the problem type.
          example: Resource not found
        traceId:
          type: string
          format: uuid
          description: Trace identifier to correlate client errors with server logs.
          example: b94f4db5-2f5e-4b8f-9dd0-f2fe5c7a7a4f
        type:
          type: string
          format: uri
          description: URI reference identifying the problem type.
          example: https://docs.immoteur.com/problems/resource_not_found
    ValidationProblemDetails:
      type: object
      required:
        - type
        - title
        - status
        - detail
        - instance
        - code
        - traceId
        - violations
      properties:
        code:
          type: string
          description: Stable machine-readable error code.
          example: validation_error
        detail:
          type: string
          description: Human-readable explanation specific to this occurrence.
          example: One or more request fields are invalid.
        instance:
          type: string
          description: Request URI identifying the specific occurrence.
          example: /public/v1/properties/search
        status:
          type: integer
          format: int32
          minimum: 400
          maximum: 599
          description: HTTP status code generated for this occurrence.
          example: 422
        title:
          type: string
          description: Short, human-readable summary of the problem type.
          example: Validation error
        traceId:
          type: string
          format: uuid
          description: Trace identifier to correlate client errors with server logs.
          example: 4bdb0c23-53fc-4d14-a300-c63eb420ec5e
        type:
          type: string
          format: uri
          description: URI reference identifying the problem type.
          example: https://docs.immoteur.com/problems/validation_error
        violations:
          type: array
          description: Per-field validation issues.
          items:
            $ref: '#/components/schemas/ProblemViolation'
    EnergyDpe:
      type: object
      properties:
        date:
          type: string
          format: date
          example: '2023-05-10'
        label:
          $ref: '#/components/schemas/EnergyDpeLabel'
        value:
          type: integer
          example: 180
    EnergyGes:
      type: object
      properties:
        date:
          type: string
          format: date
          example: '2023-05-10'
        label:
          $ref: '#/components/schemas/EnergyGesLabel'
        value:
          type: integer
          example: 45
    EnergyHeating:
      type: object
      properties:
        source:
          description: Source of heating energy.
          type: string
          enum:
            - aerothermal
            - biomass
            - coal
            - electricity
            - fuel
            - gas
            - geothermal
            - pellet
            - solar
            - wood
          example: gas
        system:
          description: Heating system type.
          type: string
          enum:
            - fireplace
            - floor
            - radiator
            - reversibleAirConditioning
            - stove
          example: radiator
        type:
          description: Type of heating system.
          type: string
          enum:
            - city
            - individual
            - mixed
            - shared
          example: individual
    LocationCity:
      type: object
      required:
        - name
        - inseeCode
      properties:
        inseeCode:
          description: INSEE code of the city.
          type: string
          example: '75056'
        name:
          description: Name of the city.
          type: string
          example: Paris
    MediaImage:
      type: object
      required:
        - id
        - position
        - url
      properties:
        averageHash:
          description: Average hash (aHash) bitstring of the image.
          type: string
          example: '1111000011110000111100001111000011110000111100001111000011110000'
        differenceHash:
          description: Difference hash (dHash) bitstring of the image.
          type: string
          example: '0101010100101010010101001010100101010010101001010100101010010101'
        id:
          description: Identifier of the image.
          type: string
          format: uuid
          example: cb6cbd86-5d14-48bd-a566-613e9dfc91d0
        perceptualHash:
          description: Perceptual hash (pHash) bitstring of the image.
          type: string
          example: '1010101001010100101010010101001010100101010010101010010101010010'
        position:
          description: Order of the image in the gallery.
          type: integer
          example: 1
        url:
          description: URL of the image.
          type: string
          format: uri
          example: https://images.immoteur.com/sample/apt-paris-1.jpg
    PropertyType:
      description: >-
        *   **House**: Residential building sold as an entire unit (e.g., a
        single-family home, villa, or full residence).

        *   **Apartment**: A single residential unit within a larger building.

        *   **Shop**: Commercial property with public access, such as boutiques,
        barbers, or butcher shops.

        *   **Premises**: Non-residential units like cellars, attics, or general
        storage/local spaces.

        *   **Office**: Properties intended for professional work environments.

        *   **Land**: Plots of terrain, undeveloped or partially developed.

        *   **Building**: An entire non-residential building sold as a unit,
        such as a hotel or hangar.

        *   **Parking**: Spaces or boxes designed for vehicle storage.
      type: string
      enum:
        - apartment
        - building
        - house
        - land
        - office
        - other
        - parking
        - premises
        - shop
    ClassifiedStatusValue:
      description: Supported lifecycle statuses for classifieds.
      type: string
      enum:
        - available
        - removed
        - rented
        - sold
        - underOffer
    TransactionFees:
      type: object
      properties:
        amount:
          description: >-
            Fee amount advertised on the source listing. Depending on the
            source, this may represent seller, buyer, tenant, agency, or other
            listing-level fees. Payer side and inclusion semantics are not
            normalized in this version.
          type: number
          format: float
          minimum: 0
          example: 564.48
    TransactionPrice:
      type: object
      required:
        - current
        - initial
        - history
      properties:
        current:
          description: Current price of the transaction.
          type: integer
          minimum: 0
          example: 650000
        history:
          description: Historical price records observed for the transaction.
          type: array
          items:
            $ref: '#/components/schemas/TransactionPriceHistoryEntry'
        initial:
          description: Initial price observed for the transaction.
          type: integer
          minimum: 0
          example: 680000
        perSquareUnit:
          description: Price per square unit (only for sale).
          type: integer
          minimum: 0
          example: 12500
    TransactionRentTerms:
      type: object
      properties:
        charges:
          description: Monthly rental charges advertised for the rent listing.
          type: number
          format: float
          minimum: 0
          example: 120.55
        deposit:
          description: Security deposit advertised for the rent listing.
          type: number
          format: float
          minimum: 0
          example: 704.36
        isFurnished:
          description: Indicates whether the rent listing is advertised as furnished.
          type: boolean
          example: true
        isShared:
          description: >-
            Indicates whether the rent listing is advertised as a shared rental
            or flatshare.
          type: boolean
          example: false
    TransactionSaleTerms:
      type: object
      properties:
        isAuction:
          description: Indicates whether the sale listing is advertised as an auction.
          type: boolean
          example: false
        isViager:
          description: Indicates whether the sale listing is advertised as a viager sale.
          type: boolean
          example: true
    TransactionType:
      type: string
      enum:
        - rent
        - sale
    ProblemViolation:
      type: object
      required:
        - field
        - message
        - code
      properties:
        code:
          type: string
          description: Stable machine-readable violation code.
          example: validation
        field:
          type: string
          description: Path or field name that failed validation.
          example: id
        message:
          type: string
          description: Human-readable validation message.
          example: The id field must be a valid UUID.
    EnergyDpeLabel:
      type: string
      enum:
        - a
        - b
        - c
        - d
        - e
        - f
        - g
    EnergyGesLabel:
      type: string
      enum:
        - a
        - b
        - c
        - d
        - e
        - f
        - g
    TransactionPriceHistoryEntry:
      type: object
      required:
        - id
        - timestamp
        - value
      properties:
        id:
          description: Stable unique identifier for the price history entry.
          type: string
          format: uuid
          example: 0aa4bc4b-7db0-4bf2-9a4a-f2e6f8d4f99a
        timestamp:
          description: Timestamp when the price was recorded.
          type: string
          format: date-time
          example: '2025-09-10T08:10:00Z'
        value:
          description: Price recorded at the given timestamp.
          type: integer
          minimum: 0
          example: 650000
  responses:
    BadRequestError:
      description: >-
        Bad request — the request could not be understood or was missing
        required information.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    UnauthorizedError:
      description: Authentication required / invalid token
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    ForbiddenError:
      description: Authenticated but not allowed for this resource
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    NotFoundError:
      description: Resource not found
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    MissConfigurationError:
      description: Data access (SIREN / SIRET / Department) not configured for example.
      content:
        application/json:
          schema:
            type: object
            required:
              - message
            properties:
              configurationUrl:
                type: string
                format: uri
                example: https://immoteur.com/en/dashboard/billing#data-access
              documentationUrl:
                type: string
                format: uri
                example: https://docs.immoteur.com/pages/en/introduction
              message:
                type: string
                example: Data access (SIREN / SIRET / Department) not configured.
    ValidationError:
      description: Validation error response
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ValidationProblemDetails'
    RateLimitError:
      description: Too many requests. Rate limit headers are returned on all responses.
      headers:
        RateLimit-Policy:
          $ref: '#/components/headers/RateLimitPolicy'
        RateLimit-Limit:
          $ref: '#/components/headers/RateLimitLimit'
        RateLimit-Remaining:
          $ref: '#/components/headers/RateLimitRemaining'
        RateLimit-Reset:
          $ref: '#/components/headers/RateLimitReset'
        Retry-After:
          $ref: '#/components/headers/RateLimitRetryAfter'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    DefaultError:
      description: Undocumented error
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
  headers:
    RateLimitPolicy:
      description: Comma-separated policy values ordered as second, minute, day.
      schema:
        type: string
        example: 1;w=1, 20;w=60, 250;w=86400
    RateLimitLimit:
      description: Comma-separated limit values ordered as second, minute, day.
      schema:
        type: string
        example: 1, 20, 250
    RateLimitRemaining:
      description: Comma-separated remaining request counts ordered as second, minute, day.
      schema:
        type: string
        example: 0, 18, 240
    RateLimitReset:
      description: >-
        Comma-separated seconds until the current windows reset (second, minute,
        day).
      schema:
        type: string
        example: 1, 45, 8200
    RateLimitRetryAfter:
      description: Seconds to wait before retrying after a rate limit response.
      schema:
        type: integer
        format: int32
        minimum: 1
        example: 1
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Personal Access Token
      description: |-
        Send your Immoteur Personal Access Token in the `Authorization` header:
        `Authorization: Bearer <token>`

        You can create and manage your Personal Access Tokens here:
        https://immoteur.com/dashboard/settings
                                    status:
                                        current: available

````