> ## 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.

# A project's units

> The listings linked to the project: the company's in any status, the partner agencies' once out of draft, each with the unit identifier, who published it and how it was linked. Only whoever runs the project.



## OpenAPI

````yaml en/openapi.json GET /account/projects/{project}/units
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:
  /account/projects/{project}/units:
    get:
      tags:
        - Projects
      summary: A project's units
      description: >-
        The listings linked to the project: the company's in any status, the
        partner agencies' once out of draft, each with the unit identifier, who
        published it and how it was linked. Only whoever runs the project.
      operationId: v1.projects.units
      parameters:
        - name: project
          in: path
          required: true
          schema:
            type: string
          description: >-
            The code of the project's development (8 characters, as in its
            address on Housera).
        - name: publisher
          in: query
          schema:
            type:
              - string
              - 'null'
          description: >-
            `firm` for your company's units, `partner` for those published by
            partner agencies, or a partner agency's id (`publisher.agency_id`)
            for its units. Without it you get all of them.
        - name: status
          in: query
          schema:
            anyOf:
              - $ref: '#/components/schemas/PropertyStatus'
              - type: 'null'
          description: Only units in this status (`active`, `pending`, `sold`…).
        - name: per_page
          in: query
          schema:
            type:
              - integer
              - 'null'
            minimum: 1
            maximum: 100
          description: Results per page (default 50, maximum 100).
        - name: cursor
          in: query
          schema:
            type:
              - string
              - 'null'
          description: >-
            The next page's cursor, from `meta.next_cursor`, sent exactly as you
            received it. Any other value gets 422 (`pagination_cursor`).
        - 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.
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProjectUnitApiResource'
                    description: The result of the request.
                  links:
                    type: object
                    properties:
                      first:
                        type:
                          - string
                          - 'null'
                        description: The first page's URL.
                      last:
                        type:
                          - string
                          - 'null'
                        description: The last page's URL (null with cursor pagination).
                      prev:
                        type:
                          - string
                          - 'null'
                        description: The previous page's URL, or null.
                      next:
                        type:
                          - string
                          - 'null'
                        description: >-
                          The next page: its URL, or the cursor to pass on. Null
                          when there is nothing left.
                    required:
                      - first
                      - last
                      - prev
                      - next
                    description: Pagination links.
                  meta:
                    type: object
                    properties:
                      path:
                        type:
                          - string
                          - 'null'
                        description: The list's base URL.
                      per_page:
                        type: integer
                        minimum: 0
                        description: Results per page.
                      next_cursor:
                        type:
                          - string
                          - 'null'
                        description: The next page's cursor; null when the list has ended.
                      prev_cursor:
                        type:
                          - string
                          - 'null'
                        description: The previous page's cursor; null on the first page.
                    required:
                      - path
                      - per_page
                      - next_cursor
                      - prev_cursor
                    description: >-
                      Data about the response, outside the result, for example a
                      list's pagination.
                required:
                  - data
                  - links
                  - meta
          description: The request succeeded.
        '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 project doesn't exist or the key's account doesn't run it
            (`not_found`).
        '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`.
components:
  schemas:
    PropertyStatus:
      type: string
      enum:
        - draft
        - pending
        - active
        - rejected
        - paused
        - hidden
        - unconfirmed
        - sold
      title: PropertyStatus
    ProjectUnitApiResource:
      type: object
      properties:
        code:
          type: string
          description: The unit listing's code.
        title:
          type: string
          description: The listing's title.
        type:
          type:
            - string
            - 'null'
          enum:
            - apartment
            - house
            - room
            - complex
            - land
            - commercial
            - warehouse
            - garage
            - hospitality
            - special
            - null
          description: The property type (the values from `/schema`).
        transaction:
          type:
            - string
            - 'null'
          enum:
            - sale
            - rent
            - null
          description: '`sale` or `rent`.'
        subtype:
          type:
            - string
            - 'null'
          description: The listing's subtype, a code from `/schema`.
        rooms:
          type:
            - integer
            - 'null'
          description: The number of rooms.
        unit_kind:
          type:
            - string
            - 'null'
          enum:
            - studio
            - apartment
            - penthouse
            - house
            - duplex
            - triplex
            - villa
            - commercial
            - office
            - parking
            - storage
            - null
          description: >-
            The unit's type in the development's matrix, with the same codes as
            `unit_types[].kind`. `null` when the unit matches no type.
        status:
          type:
            - string
            - 'null'
          enum:
            - draft
            - pending
            - active
            - rejected
            - paused
            - hidden
            - unconfirmed
            - sold
            - null
          description: The listing's status (`active`, `pending`, `sold`…).
        reserved:
          type: boolean
          description: >-
            `true`: a buyer reserved the unit, but the listing is still on
            offer.
        unit_ref:
          type:
            - string
            - 'null'
          description: The unit's identifier in the development, as its publisher wrote it.
        price:
          type:
            - number
            - 'null'
          description: The price, in the currency in `currency`.
        currency:
          type: string
          description: The price's currency.
        linked_by:
          type:
            - string
            - 'null'
          enum:
            - import
            - firm
            - partner
            - null
          description: >-
            Who linked the unit: `company` (your company), `partner` (a partner
            agency) or `import` (a CRM's feed). Only `partner` units are taken
            out with `…/detach`.
        publisher:
          type: object
          properties:
            own:
              type: boolean
              description: '`true` for your company''s units.'
            name:
              type:
                - string
                - 'null'
              description: The name of the company that published the unit.
            agency_id:
              type:
                - integer
                - 'null'
              description: >-
                The id of the company that published the unit. It is the same as
                `agency.id` in `GET /account/partnerships`, and you can send it
                in `publisher` to see only that agency's units.
          required:
            - own
            - name
            - agency_id
          description: The company that published the unit.
        url:
          type:
            - string
            - 'null'
          description: The unit's public page while it's public; otherwise `null`.
      required:
        - code
        - title
        - type
        - transaction
        - subtype
        - rooms
        - unit_kind
        - status
        - reserved
        - unit_ref
        - price
        - currency
        - linked_by
        - publisher
        - url
      title: ProjectUnitApiResource
    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
  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.