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

# Appeal a rejection or a hide

> Sends the moderators your reason why the rejected or hidden listing should be reviewed again, like the “Request reconsideration” button in your account on the Housera portal. You can appeal each decision once. If the moderator agrees with you, the listing is published and you get `listing.published`.



## OpenAPI

````yaml en/openapi.json POST /listings/{code}/appeal
openapi: 3.1.2
info:
  title: Housera API
  version: 1.0.0
  description: >-
    Publish and manage real estate listings on Housera from your CRM or your own
    application, under the same rules as the form on the Housera portal.
servers:
  - url: https://staging.housera.ro/api/v1
    description: 'Sandbox (staging): test data, same rules as production.'
  - url: https://housera.ro/api/v1
    description: 'Production: the real listings on housera.ro.'
security:
  - bearer: []
tags:
  - name: Your listings
  - name: Photos
  - name: Events
  - name: Vocabulary
  - name: Connect with Housera
  - name: Client requests
  - name: The company and its team
  - name: Marketing mandates
  - name: Viewings
  - name: Projects
  - name: Partnerships
  - name: API key
  - name: Statistics
paths:
  /listings/{code}/appeal:
    post:
      tags:
        - Your listings
      summary: Appeal a rejection or a hide
      description: >-
        Sends the moderators your reason why the rejected or hidden listing
        should be reviewed again, like the “Request reconsideration” button in
        your account on the Housera portal. You can appeal each decision once.
        If the moderator agrees with you, the listing is published and you get
        `listing.published`.
      operationId: v1.listings.appeal
      parameters:
        - name: code
          in: path
          required: true
          schema:
            type: string
          description: The listing's public code (8 characters, as in its URL on Housera).
        - name: locale
          in: query
          required: false
          schema:
            type: string
            enum:
              - ro
              - en
            default: en
          example: en
          description: >-
            The response language, `ro` or `en`. It changes error messages
            (`title`, `detail`), labels and, when the listing has an approved
            translation in that language, its title and description. Codes are
            the same in every language. It takes precedence over
            `Accept-Language` and over the account's language.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                note:
                  type: string
                  minLength: 10
                  maxLength: 1000
                  description: Note.
              required:
                - note
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListingWriteResult'
          description: >-
            The appeal was sent. The response contains the listing, with
            `moderation.appealed_at`.
        '400':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: The request body is not valid JSON (`malformed_json`).
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: The key is missing, revoked or expired (`unauthenticated`).
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            The key lacks the required permission (`missing_ability`) or access
            is denied (`forbidden`).
        '404':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            The listing does not exist or the key has no access to it
            (`not_found`).
        '409':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Another write is changing the listing right now (`listing_busy`),
            the action is not allowed in its current status
            (`listing_action_refused`), or you already have a listing for the
            same property (`duplicate_listing`, with the existing listing in
            `existing`).
        '413':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: The request body is larger than 1 MB (`payload_too_large`).
        '415':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            The request body isn't declared as JSON (`unsupported_media_type`).
            Send it with `Content-Type: application/json`.
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
          description: >-
            The data fails the rules: one entry per field in `errors[]`, each
            with a stable `code`.
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Too many requests. Try again after the number of seconds in
            `Retry-After`.
        '503':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Housera has temporarily paused writes through the API
            (`api_writes_paused`). Try again after the number of seconds in
            `Retry-After`.
components:
  schemas:
    ListingWriteResult:
      type: object
      title: ListingWriteResult
      properties:
        data:
          $ref: '#/components/schemas/AccountListingApiResource'
          description: The result of the request.
        warnings:
          type: array
          items:
            type: object
            properties:
              pointer:
                type: string
                description: The field it refers to, as a JSON Pointer (`/features/2`).
              code:
                type: string
                description: >-
                  The reason, as a stable code: `not_for_type`,
                  `not_for_transaction`, `unknown_feature`, `unknown_field`,
                  `agent_not_member`, `agent_not_allowed` or `area_from_pin`.
                  The Editing page explains each one.
            required:
              - pointer
              - code
          description: >-
            What Housera ignored in the request without rejecting it, for
            example a field that does not exist for the listing's type and
            transaction, or an unknown amenity. The request succeeded, but it is
            worth checking your mapping.
      required:
        - data
        - warnings
    Problem:
      type: object
      title: Problem
      properties:
        type:
          type: string
          format: uri
          description: The URL of the problem type (RFC 9457).
        title:
          type: string
          description: A short summary of the problem, in the request's language.
        status:
          type: integer
          description: The HTTP status code.
        code:
          type: string
          description: >-
            The stable code of the refusal, the one to handle the error by (the
            list is on the Errors page).
        detail:
          type: string
          description: The explanation, in the request's language.
        existing:
          type: object
          properties:
            code:
              type: string
              description: The existing listing's public code.
            external_ref:
              type:
                - string
                - 'null'
              description: >-
                Your ID for the existing listing, if you set it with `PUT
                /listings/ref/{ref}`. Otherwise `null`.
          required:
            - code
            - external_ref
          description: >-
            Only on `409 duplicate_listing`: the listing you already have for
            the same property.
      required:
        - type
        - title
        - status
        - code
        - detail
    ValidationProblem:
      type: object
      title: ValidationProblem
      properties:
        type:
          type: string
          format: uri
          description: The URL of the problem type (RFC 9457).
        title:
          type: string
          description: A short summary of the problem, in the request's language.
        status:
          type: integer
          description: 'The HTTP status code: `422`.'
        errors:
          type: array
          items:
            type: object
            properties:
              pointer:
                type: string
                description: The field it refers to, as a JSON Pointer (`/features/2`).
              code:
                type: string
                description: >-
                  The rule that failed, as a stable code (the list is on the
                  Errors page).
              detail:
                type: string
                description: >-
                  The explanation, in the request's language. The wording can
                  change, so handle the error by `code`.
            required:
              - pointer
              - code
              - detail
          description: One entry for each field that fails the rules.
      required:
        - type
        - title
        - status
        - errors
    AccountListingApiResource:
      type: object
      title: AccountListingApiResource
      properties:
        code:
          type: string
          description: The listing's public code (8 characters, as in its URL on Housera).
        url:
          type: string
          description: The listing's URL on Housera.
        type:
          type:
            - string
            - 'null'
          enum:
            - apartment
            - house
            - room
            - complex
            - land
            - commercial
            - warehouse
            - garage
            - hospitality
            - special
            - null
          description: Property type.
        subtype:
          type:
            - string
            - 'null'
          description: Subtype.
        transaction:
          type:
            - string
            - 'null'
          enum:
            - sale
            - rent
            - null
          description: Transaction type.
        title:
          type:
            - string
            - 'null'
          description: >-
            The listing's title, in the `content_locale` language: the approved
            translation into the requested language if there is an up-to-date
            one, otherwise the original.
        description:
          type:
            - string
            - 'null'
          description: >-
            The listing's description, in the `content_locale` language. The
            title and description always come in the same language, so either
            both are translated or both are original.
        content_locale:
          type:
            - string
            - 'null'
          description: >-
            The language of `title` and `description` in this response (ISO
            639-1). When you ask for a language (`locale` or `Accept-Language`)
            and the listing has an approved, up-to-date translation in it, you
            get that language's code, for example `en`. Otherwise you get the
            original text and the language it was written in, for example `ro`.
        content_auto_translated:
          type: boolean
          description: >-
            `true` when the `title` or the `description` in the response was
            machine-translated. If you show the text, say it was
            machine-translated. English the agency sends through its CRM is not
            a machine translation.
        content_origin:
          type: object
          properties:
            title:
              type:
                - string
                - 'null'
              description: Title.
            description:
              type:
                - string
                - 'null'
              description: Description.
          required:
            - title
            - description
          description: >-
            `ai` or `ai_edited` for `title` and `description`, when a model
            wrote the text: `ai` if it stayed as generated, `ai_edited` if the
            author changed it. Every other text has `null`.
        title_original:
          type:
            - string
            - 'null'
          description: >-
            The original title, when `title` was machine-translated; otherwise
            `null`.
        description_original:
          type:
            - string
            - 'null'
          description: >-
            The original description, when the text you received was
            machine-translated; otherwise `null`.
        price:
          type:
            - integer
            - 'null'
          description: The price in euros. `price_period` says what it refers to.
        currency:
          type: string
          const: EUR
          description: 'The currency of `price`: always `EUR`.'
        price_period:
          type:
            - string
            - 'null'
          enum:
            - total
            - month
            - null
          description: 'What the price refers to: `total` for a sale, `month` for a rental.'
        price_declared:
          type:
            - object
            - 'null'
          properties:
            amount:
              type: integer
              description: The amount.
            currency:
              type: string
              description: The amount's currency, as an ISO 4217 code.
          required:
            - amount
            - currency
          description: The price exactly as the lister wrote it, in the lister's currency.
        reserved:
          type: boolean
          description: >-
            `true`: a buyer has reserved it, but the listing is still on the
            market.
        negotiable:
          type: boolean
          description: Negotiable price.
        location:
          type: object
          properties:
            country:
              type:
                - string
                - 'null'
              description: Country.
            county:
              type:
                - string
                - 'null'
              description: County.
            city:
              type:
                - string
                - 'null'
              description: City.
            area:
              type:
                - string
                - 'null'
              description: The area or neighbourhood.
            lat:
              type:
                - number
                - 'null'
              description: Latitude.
            lng:
              type:
                - number
                - 'null'
              description: Longitude.
            street:
              type:
                - string
                - 'null'
              description: >-
                The street, including its type (for example `Strada Sărăriei`),
                as you send it when writing. Null when the location is
                approximate, except on your account's own listings.
            street_number:
              type:
                - string
                - 'null'
              description: >-
                The street number. Null when the location is approximate, except
                on your account's own listings.
            postal_code:
              type:
                - string
                - 'null'
              description: >-
                The postal code. Null when the location is approximate, except
                on your account's own listings.
            landmark:
              type:
                - string
                - 'null'
              description: >-
                A nearby landmark, written by whoever published the listing.
                Null when the location is approximate, except on your account's
                own listings.
            precision:
              type: string
              enum:
                - exact
                - approximate
              description: >-
                `exact`, or `approximate` when the listing shows only the area:
                the point is rounded to about 100 m and the street, number and
                postal code are not published.
          required:
            - country
            - county
            - city
            - area
            - lat
            - lng
            - street
            - street_number
            - postal_code
            - landmark
            - precision
          description: Where the property is.
        facts:
          type: object
          additionalProperties: {}
          description: >-
            The listing's characteristics: every field that exists for its type
            and transaction, with null for those not filled in. The codes are
            the ones in `/schema`.
        features:
          type: array
          items:
            type: string
          description: >-
            The amenities, as codes from the amenities catalog (`features` in
            `/schema`).
        images:
          type: array
          items:
            type: string
          description: The photo URLs, in order.
        photos:
          type: array
          items:
            type: object
            properties:
              url:
                type: string
                description: The photo's URL, the same as in `images`.
              position:
                type: integer
                description: >-
                  The photo's place in the gallery, starting at 1. Photo 1 is
                  the cover.
              floor:
                type:
                  - string
                  - 'null'
                description: >-
                  The level shown in the photo (`floor`), as a code from
                  `/schema`, or null.
              rooms:
                type: array
                items:
                  type: string
                description: >-
                  The rooms shown in the photo (`rooms`), as codes from
                  `/schema`.
            required:
              - url
              - position
              - floor
              - rooms
          description: >-
            The listing's photos as objects, in display order, with the labels
            sent in `PUT /listings/{code}/photos`. The URLs are the same as in
            `images`.
        floor_plans:
          type: array
          items:
            type: object
            properties:
              url:
                type: string
                description: >-
                  The plan image's address. When writing, an https URL Housera
                  downloads the plan from, or the address of a plan already on
                  the listing, which stays.
              position:
                type: integer
                description: The plan's place in the list, from 1.
              level:
                type: string
                description: >-
                  The plan's level, as a code from `levels` in `/schema` (for
                  example `ground`).
              hotspots:
                type: array
                items:
                  type: object
                  properties:
                    x:
                      type: number
                      description: >-
                        The point's horizontal position on the image, between 0
                        (left edge) and 1 (right edge).
                    'y':
                      type: number
                      description: >-
                        The point's vertical position on the image, between 0
                        (top) and 1 (bottom).
                    angle:
                      type: number
                      description: >-
                        The direction the photo faces, in degrees, between 0 and
                        360.
                    photo_position:
                      type: integer
                      description: The photo's place in `photos`, from 1.
                    photo_url:
                      type: string
                      description: >-
                        The point's photo: the URL you sent it with in `PUT
                        /listings/{code}/photos`, or its address from
                        `photos[].url`.
                  required:
                    - x
                    - 'y'
                    - angle
                    - photo_position
                    - photo_url
                description: >-
                  The points on the plan: where a photo was taken and which way
                  it faces. A photo has at most one point across all the plans.
            required:
              - url
              - position
              - level
              - hotspots
          description: >-
            The listing's floor plans, one per level, in display order, with the
            points that tie the photos to the plan.
        media_links:
          type:
            - object
            - 'null'
          properties:
            video:
              type:
                - string
                - 'null'
              description: A video URL (YouTube, Vimeo).
            tour:
              type:
                - string
                - 'null'
              description: A virtual tour URL.
            plan:
              type:
                - string
                - 'null'
              description: The URL of a sketch or floor plan.
          required:
            - video
            - tour
            - plan
          description: >-
            The links to the video (`video`), the virtual tour (`tour`) and the
            floor plan (`plan`), as you sent them. Null when the listing has
            none.
        parcel:
          type:
            - array
            - 'null'
          items:
            type: array
            prefixItems:
              - type: number
              - type: number
            minItems: 2
            maxItems: 2
          description: >-
            The plot outline, as a list of `[lng, lat]` pairs, as you sent it.
            Public only when the location is exact; the account that owns the
            listing always sees it. Null when the listing has no plot outline.
        unit_types:
          type:
            - array
            - 'null'
          items:
            type: object
            properties:
              kind:
                type:
                  - string
                  - 'null'
                description: The kind of unit, as a code from `/schema`.
              label:
                type:
                  - string
                  - 'null'
                description: >-
                  The unit type's name, when it has no `kind` code. `null` when
                  there is none.
              floors:
                type:
                  - string
                  - 'null'
                description: The floors the units are on. `null` when not given.
              area_sqm:
                type:
                  - number
                  - 'null'
                description: The usable area in m² (from).
              area_sqm_to:
                type:
                  - number
                  - 'null'
                description: The largest usable area in m², when the type covers a range.
              units_count:
                type:
                  - integer
                  - 'null'
                description: How many units of this type the residential development has.
              price_from:
                type:
                  - integer
                  - 'null'
                description: The price the units start from, in euros.
              rooms:
                type:
                  - integer
                  - 'null'
                description: The unit's number of rooms.
            required:
              - kind
              - label
              - floors
              - area_sqm
              - area_sqm_to
              - units_count
              - price_from
              - rooms
          description: >-
            The unit types of a residential development, as you sent them in
            `unit_types`. Null for every other listing type.
        inventory:
          type:
            - object
            - 'null'
          properties:
            sale:
              type:
                - object
                - 'null'
              properties:
                source:
                  type: string
                  description: >-
                    `units` when the development has published units in this
                    transaction, `declared` while it has none: the counters are
                    then zero, and you read the project from `unit_types`.
                available:
                  type: integer
                  description: The active units that are not reserved.
                reserved:
                  type: integer
                  description: The active units a buyer has reserved.
                sold:
                  type: integer
                  description: The sold units.
                price_min:
                  type:
                    - integer
                    - 'null'
                  description: The lowest price of the available units, in euros.
                price_max:
                  type:
                    - integer
                    - 'null'
                  description: The highest price of the available units, in euros.
                groups:
                  type: array
                  items: {}
                  description: >-
                    The groups of units: one per family, split by room count
                    when the family has units with different room counts.
              required:
                - source
                - available
                - reserved
                - sold
                - price_min
                - price_max
                - groups
              description: >-
                The units for sale. Always present on a development for sale;
                otherwise `null` until the development has units for sale.
            rent:
              type:
                - object
                - 'null'
              properties:
                source:
                  type: string
                  description: >-
                    `units` when the development has published units in this
                    transaction, `declared` while it has none: the counters are
                    then zero, and you read the project from `unit_types`.
                available:
                  type: integer
                  description: The active units that are not reserved.
                reserved:
                  type: integer
                  description: The active units a tenant has reserved.
                sold:
                  type: integer
                  description: The sold units.
                price_min:
                  type:
                    - integer
                    - 'null'
                  description: The lowest price of the available units, in euros.
                price_max:
                  type:
                    - integer
                    - 'null'
                  description: The highest price of the available units, in euros.
                groups:
                  type: array
                  items: {}
                  description: >-
                    The groups of units: one per family, split by room count
                    when the family has units with different room counts.
              required:
                - source
                - available
                - reserved
                - sold
                - price_min
                - price_max
                - groups
              description: >-
                The units for rent, priced per month. Always present on a
                development for rent; otherwise `null` until the development has
                units for rent.
          required:
            - sale
            - rent
          description: >-
            The development's inventory, counted from its linked units, per
            transaction: `sale` and `rent`, each with the counters, the price
            ranges and the groups. `null` for any other type.
        developer:
          type:
            - object
            - 'null'
          properties:
            name:
              type: string
              description: The name of the development's company.
            country:
              type:
                - string
                - 'null'
              description: The country of the company, ISO 3166-1 alpha-2 code.
            tax_id:
              type:
                - string
                - 'null'
              description: >-
                The tax ID, only when the company is verified in the register
                and is a legal entity. `null` for sole traders (PFA) and
                individual enterprises.
            verified:
              type: boolean
              description: >-
                `true` when the company's details were checked in the public
                registers .
            url:
              type:
                - string
                - 'null'
              description: >-
                The developer's page on Housera. `null` when the company does
                not have an account.
          required:
            - name
            - country
            - tax_id
            - verified
            - url
          description: >-
            The company that builds the development. `null` for other types and
            while the developer is not known.
        marketer:
          type:
            - object
            - 'null'
          properties:
            name:
              type: string
              description: The name of the company.
            kind:
              type: string
              enum:
                - agency
                - developer
              description: '`agency` (an agency) or `developer` (the developer itself).'
            url:
              type: string
              description: The company's page on Housera.
          required:
            - name
            - kind
            - url
          description: >-
            The company that markets the development: it publishes the page and
            receives the enquiries. `null` for other types.
        complex:
          type:
            - object
            - 'null'
          properties:
            code:
              type: string
              description: The development's public code.
            title:
              type:
                - string
                - 'null'
              description: The development's title.
            url:
              type: string
              description: The development's address on Housera.
            linked_by:
              type:
                - string
                - 'null'
              enum:
                - import
                - firm
                - partner
                - null
              description: >-
                Who linked the unit: `import` (the CRM's feed), `firm` (the
                development's company) or `partner` (a partner agency).
          required:
            - code
            - title
            - url
            - linked_by
          description: >-
            The development the unit belongs to, `null` outside a development.
            The catalog names only an active development.
        published_at:
          type:
            - string
            - 'null'
          description: When the listing was published (ISO 8601).
        updated_at:
          type:
            - string
            - 'null'
          description: The last change (ISO 8601).
        attribution:
          type: object
          properties:
            lister:
              type:
                - string
                - 'null'
              description: >-
                The agency, or the property owner's display name, as shown on
                the listing page.
            source:
              type:
                - string
                - 'null'
              description: >-
                The code of the source the listing was imported from. Null for
                listings posted directly on Housera.
            source_label:
              type:
                - string
                - 'null'
              description: The name of the source the listing was imported from.
            source_external_id:
              type:
                - string
                - 'null'
              description: The listing's ID at the source.
          required:
            - lister
            - source
            - source_label
            - source_external_id
          description: Who published the listing and where it was imported from.
        external_ref:
          type:
            - string
            - 'null'
          description: >-
            The listing's ID in your system, if you created it with `PUT
            /listings/ref/{ref}`. Only a key in the space where it was set can
            see it; for every other key it is `null`.
        agent:
          type:
            - object
            - 'null'
          properties:
            name:
              type: string
              description: >-
                The name of the agent's account. The portal shows the name in
                `display_name`.
            email:
              type: string
              description: >-
                The agent's email; `null` when we have no real address for them,
                for example a colleague who came from a CRM with no email on
                their team record.
          required:
            - name
            - email
          description: >-
            The company's agent responsible for the listing, with name and
            email. `null` on an individual's listing. `email` is `null` when we
            have no real address for the agent, for example a colleague who came
            from a CRM without an email on their member record.
        status:
          $ref: '#/components/schemas/PropertyStatus'
          description: >-
            The listing's status: `draft` (a draft started in the portal),
            `pending` (in moderation), `active` (public), `paused` (paused by
            you), `sold`, `rejected`, `hidden` (taken down by a moderator) or
            `unconfirmed` (availability was not confirmed in time; confirm it
            from your account or with `POST /listings/{code}/confirm` and the
            listing comes back).
        moderation:
          type: object
          properties:
            edit_pending:
              type: boolean
              description: >-
                `true`: an edit is waiting for moderation; the public listing
                still shows the approved version.
            rejection_reason:
              type:
                - string
                - 'null'
              description: >-
                Why the listing was rejected, in the request's language. Null if
                the listing is not rejected.
            rejection_codes:
              type: array
              items:
                type: string
              description: The rejection reasons, as stable codes.
            restriction_reason:
              type:
                - string
                - 'null'
              description: >-
                Why moderators hid the listing or sent it back for review, as
                the author was told. Null when the listing is in neither status.
            notes:
              type: array
              items:
                type: object
                properties:
                  field:
                    type: string
                    description: >-
                      The part of the listing it refers to: `title`,
                      `description`, `photos`, `floor_plans`, `unit_types` or
                      `details` (the other fields).
                  label:
                    type: string
                    description: The section's name, as the author sees it.
                  note:
                    type: string
                    description: The note's text, written by the moderator.
                  kind:
                    type: string
                    enum:
                      - blocking
                      - recommendation
                    description: >-
                      `blocking`: the correction is required before approval.
                      `recommendation`: advice, the listing can be approved
                      without it.
              description: >-
                The moderators' notes sent to the author and still open, by
                section, as the portal's editor shows them. One with `kind:
                blocking` holds the approval until you correct the listing.
            proof:
              type:
                - object
                - 'null'
              properties:
                status:
                  type: string
                  enum:
                    - requested
                    - submitted
                    - accepted
                    - rejected
                  description: >-
                    `requested` (waiting for the proof), `submitted` (sent,
                    waiting for the decision), `accepted` or `rejected`.
                reason:
                  type: string
                  description: Why the moderators asked for the proof.
                hidden:
                  type: boolean
                  description: >-
                    `true` when the listing was taken off the site until the
                    decision.
                requested_at:
                  type: string
                  format: date-time
                  description: When the proof was asked for.
                submitted_at:
                  type:
                    - string
                    - 'null'
                  format: date-time
                  description: When you sent the proof. `null` if you haven't sent it yet.
                decided_at:
                  type:
                    - string
                    - 'null'
                  format: date-time
                  description: When the moderators decided. `null` until the decision.
              description: >-
                The moderators' latest request for proof of the right to offer
                the listing. `null` if none was ever asked for.
          description: Where the listing stands in moderation.
        media:
          type: object
          properties:
            processing:
              type: boolean
              description: '`true`: the photos you sent are still being processed.'
          description: The status of the photos.
        availability:
          type: object
          properties:
            confirm_by:
              type:
                - string
                - 'null'
              format: date-time
              description: >-
                The date by which you confirm that the listing is still
                available, with `POST /listings/{code}/confirm`. After it, the
                listing leaves search as `unconfirmed`. Null when no
                confirmation is asked for.
          description: The confirmation that the listing is still available.
        translations:
          type:
            - object
            - 'null'
          additionalProperties:
            type: object
            properties:
              status:
                type: string
                enum:
                  - approved
                  - pending
                  - outdated
                  - missing
                description: >-
                  `approved`: the title and description have an approved
                  translation made from the current text. `pending`: the
                  translation is in progress or waiting for a moderator.
                  `outdated`: the translation was approved, but the title or
                  description changed afterwards, so the public reads the
                  original until it is translated again. `missing`: the listing
                  has no translation in this language.
              title:
                type:
                  - string
                  - 'null'
                description: >-
                  The approved title in this language, if it was translated from
                  the current title. Otherwise null.
              description:
                type:
                  - string
                  - 'null'
                description: >-
                  The approved description in this language, if it was
                  translated from the current description. Otherwise null.
          description: >-
            For each language Housera translates the listing into, other than
            the original's language: the translation's status and the approved
            text. Null when Housera does not translate listings.
        etag:
          type: string
          description: >-
            The listing's version. Send it in `If-Match` when you edit, so you
            do not overwrite a change made in the meantime.
        unit_ref:
          type:
            - string
            - 'null'
          description: >-
            The unit's identifier within the development, normalized (for
            example `B2-14`). Private: only the company that published the unit
            reads it. Required on a partner agency's unit.
        mandate:
          type:
            - object
            - 'null'
          properties:
            status:
              type: string
              enum:
                - requested
                - confirmed
                - refused
                - withdrawn
                - revoked
                - expired
              description: >-
                `requested` (waiting for a decision), `confirmed`, `refused`,
                `withdrawn` (the agency withdrew its request), `revoked` or
                `expired`. The development is public only while the mandate is
                `confirmed`.
            decided_via:
              type:
                - string
                - 'null'
              enum:
                - developer
                - moderator
                - legacy
                - null
              description: >-
                Who decided: `developer` (the developer), `moderator` (a Housera
                moderator) or `legacy` (a decision without a mandate request).
                `null` until a decision is made.
            valid_until:
              type:
                - string
                - 'null'
              format: date
              description: >-
                The contract's end date, `YYYY-MM-DD`. `null` when the contract
                has none.
          required:
            - status
            - decided_via
            - valid_until
          description: >-
            The agency's marketing mandate on its development, the latest one
            requested. `null` on a development its developer markets itself and
            on every other listing type. See [The marketing
            mandate](/en/guides/complex#the-marketing-mandate).
        stats_30d:
          type: object
          properties:
            views:
              type: integer
              description: Views.
            saves:
              type: integer
              description: Saves to favourites.
            contacts:
              type: integer
              description: Contacts that came through the listing.
          required:
            - views
            - saves
            - contacts
          description: >-
            The listing's last 30 days, today included, as in its row in My
            listings.
        views_total:
          type: integer
          description: All views since it was published.
        price_per_sqm:
          type:
            - integer
            - 'null'
          description: >-
            The price per square metre in euro, as on the listing's page. For
            sales only; `null` without a price or a surface.
      required:
        - code
        - url
        - type
        - subtype
        - transaction
        - title
        - description
        - content_locale
        - content_auto_translated
        - content_origin
        - title_original
        - description_original
        - price
        - currency
        - price_period
        - price_declared
        - reserved
        - negotiable
        - location
        - facts
        - features
        - images
        - photos
        - floor_plans
        - media_links
        - parcel
        - unit_types
        - inventory
        - developer
        - marketer
        - complex
        - published_at
        - updated_at
        - attribution
        - external_ref
        - agent
        - unit_ref
        - mandate
        - status
        - moderation
        - media
        - availability
        - translations
        - etag
    PropertyStatus:
      type: string
      enum:
        - draft
        - pending
        - active
        - rejected
        - paused
        - hidden
        - unconfirmed
        - sold
      title: PropertyStatus
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: 'Authorization: Bearer <key>'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.