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

# Unitățile unui proiect

> Anunțurile legate de proiect: ale firmei în orice stare, ale agențiilor partenere după ce ies din ciornă, fiecare cu identificatorul unității, cu cine a publicat-o și cu felul în care a fost legată. Doar cine conduce proiectul.



## OpenAPI

````yaml ro/openapi.json GET /account/projects/{project}/units
openapi: 3.1.2
info:
  title: Housera API
  version: 1.0.0
  description: >-
    Publică și gestionează anunțuri imobiliare pe Housera din CRM-ul sau din
    aplicația ta, cu aceleași reguli ca formularul din portalul Housera.
servers:
  - url: https://staging.housera.ro/api/v1
    description: 'Sandbox (staging): date de test, aceleași reguli ca producția.'
  - url: https://housera.ro/api/v1
    description: 'Producție: anunțurile reale de pe housera.ro.'
security:
  - bearer: []
tags:
  - name: Anunțurile tale
  - name: Poze
  - name: Evenimente
  - name: Vocabular
  - name: Conectează cu Housera
  - name: Cererile clienților
  - name: Firma și echipa
  - name: Mandatele de comercializare
  - name: Vizionări
  - name: Proiecte
  - name: Parteneriate
  - name: Cheia API
  - name: Statistici
paths:
  /account/projects/{project}/units:
    get:
      tags:
        - Proiecte
      summary: Unitățile unui proiect
      description: >-
        Anunțurile legate de proiect: ale firmei în orice stare, ale agențiilor
        partenere după ce ies din ciornă, fiecare cu identificatorul unității,
        cu cine a publicat-o și cu felul în care a fost legată. Doar cine
        conduce proiectul.
      operationId: v1.projects.units
      parameters:
        - name: project
          in: path
          required: true
          schema:
            type: string
          description: >-
            Codul ansamblului proiectului (8 caractere, ca în adresa lui de pe
            Housera).
        - name: publisher
          in: query
          schema:
            type:
              - string
              - 'null'
          description: >-
            `firm` pentru unitățile firmei tale, `partner` pentru cele publicate
            de agențiile partenere, sau id-ul unei agenții partenere
            (`publisher.agency_id`) pentru unitățile ei. Fără el le primești pe
            toate.
        - name: status
          in: query
          schema:
            anyOf:
              - $ref: '#/components/schemas/PropertyStatus'
              - type: 'null'
          description: Doar unitățile în această stare (`active`, `pending`, `sold`…).
        - name: per_page
          in: query
          schema:
            type:
              - integer
              - 'null'
            minimum: 1
            maximum: 100
          description: Câte rezultate pe pagină (implicit 50, maximum 100).
        - name: cursor
          in: query
          schema:
            type:
              - string
              - 'null'
          description: >-
            Cursorul paginii următoare, din `meta.next_cursor`, trimis exact cum
            l-ai primit. Altă valoare primește 422 (`pagination_cursor`).
        - name: locale
          in: query
          required: false
          schema:
            type: string
            enum:
              - ro
              - en
            default: ro
          example: ro
          description: >-
            Limba răspunsului, `ro` sau `en`. Schimbă mesajele erorilor
            (`title`, `detail`), etichetele și, când anunțul are o traducere
            aprobată în limba cerută, titlul și descrierea lui. Codurile sunt
            aceleași în orice limbă. Are întâietate față de `Accept-Language` și
            de limba contului.
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProjectUnitApiResource'
                    description: Rezultatul cererii.
                  links:
                    type: object
                    properties:
                      first:
                        type:
                          - string
                          - 'null'
                        description: Adresa primei pagini.
                      last:
                        type:
                          - string
                          - 'null'
                        description: Adresa ultimei pagini (null la paginarea cu cursor).
                      prev:
                        type:
                          - string
                          - 'null'
                        description: Adresa paginii anterioare, sau null.
                      next:
                        type:
                          - string
                          - 'null'
                        description: >-
                          Pagina următoare: adresa ei, sau cursorul de trimis
                          mai departe. Null când nu mai e nimic.
                    required:
                      - first
                      - last
                      - prev
                      - next
                    description: Legăturile de paginare.
                  meta:
                    type: object
                    properties:
                      path:
                        type:
                          - string
                          - 'null'
                        description: Adresa de bază a listei.
                      per_page:
                        type: integer
                        minimum: 0
                        description: Numărul de rezultate pe pagină.
                      next_cursor:
                        type:
                          - string
                          - 'null'
                        description: >-
                          Cursorul paginii următoare; null când lista s-a
                          terminat.
                      prev_cursor:
                        type:
                          - string
                          - 'null'
                        description: Cursorul paginii anterioare; null pe prima pagină.
                    required:
                      - path
                      - per_page
                      - next_cursor
                      - prev_cursor
                    description: >-
                      Date despre răspuns, în afara rezultatului, de exemplu
                      paginarea unei liste.
                required:
                  - data
                  - links
                  - meta
          description: Cererea a reușit.
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: Cheia lipsește, e revocată sau a expirat (`unauthenticated`).
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Cheia nu are dreptul cerut (`missing_ability`) sau accesul e refuzat
            (`forbidden`).
        '404':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: Proiectul nu există sau contul cheii nu îl conduce (`not_found`).
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
          description: >-
            Datele nu trec regulile: câte o intrare pe câmp în `errors[]`, cu un
            `code` stabil.
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Prea multe cereri. Reîncearcă după numărul de secunde din
            `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: Codul anunțului unității.
        title:
          type: string
          description: Titlul anunțului.
        type:
          type:
            - string
            - 'null'
          enum:
            - apartment
            - house
            - room
            - complex
            - land
            - commercial
            - warehouse
            - garage
            - hospitality
            - special
            - null
          description: Tipul proprietății (valorile din `/schema`).
        transaction:
          type:
            - string
            - 'null'
          enum:
            - sale
            - rent
            - null
          description: '`sale` sau `rent`.'
        subtype:
          type:
            - string
            - 'null'
          description: Subtipul anunțului, cu un cod din `/schema`.
        rooms:
          type:
            - integer
            - 'null'
          description: Numărul de camere.
        unit_kind:
          type:
            - string
            - 'null'
          enum:
            - studio
            - apartment
            - penthouse
            - house
            - duplex
            - triplex
            - villa
            - commercial
            - office
            - parking
            - storage
            - null
          description: >-
            Tipul unității în matricea ansamblului, cu aceleași coduri ca
            `unit_types[].kind`. `null` când unitatea nu se potrivește cu niciun
            tip.
        status:
          type:
            - string
            - 'null'
          enum:
            - draft
            - pending
            - active
            - rejected
            - paused
            - hidden
            - unconfirmed
            - sold
            - null
          description: Starea anunțului (`active`, `pending`, `sold`…).
        reserved:
          type: boolean
          description: >-
            `true`: un cumpărător a rezervat unitatea, dar anunțul e încă în
            ofertă.
        unit_ref:
          type:
            - string
            - 'null'
          description: >-
            Identificatorul unității în ansamblu, cum l-a scris cine a
            publicat-o.
        price:
          type:
            - number
            - 'null'
          description: Prețul, în moneda din `currency`.
        currency:
          type: string
          description: Moneda prețului.
        linked_by:
          type:
            - string
            - 'null'
          enum:
            - import
            - firm
            - partner
            - null
          description: >-
            Cine a legat unitatea: `firm` (firma ta), `partner` (o agenție
            parteneră) sau `import` (feed-ul unui CRM). Doar cele cu `partner`
            se scot cu `…/detach`.
        publisher:
          type: object
          properties:
            own:
              type: boolean
              description: '`true` pentru unitățile firmei tale.'
            name:
              type:
                - string
                - 'null'
              description: Numele firmei care a publicat unitatea.
            agency_id:
              type:
                - integer
                - 'null'
              description: >-
                Id-ul firmei care a publicat unitatea. E același cu `agency.id`
                din `GET /account/partnerships` și îl poți trimite în
                `publisher` ca să vezi doar unitățile acelei agenții.
          required:
            - own
            - name
            - agency_id
          description: Firma care a publicat unitatea.
        url:
          type:
            - string
            - 'null'
          description: Pagina publică a unității, cât timp e publică; altfel `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: Adresa tipului de problemă (RFC 9457).
        title:
          type: string
          description: Rezumatul problemei, în limba cererii.
        status:
          type: integer
          description: Codul HTTP.
        code:
          type: string
          description: >-
            Codul stabil al refuzului, după care tratezi eroarea (lista e în
            pagina Erori).
        detail:
          type: string
          description: Explicația, în limba cererii.
        existing:
          type: object
          properties:
            code:
              type: string
              description: Codul public al anunțului existent.
            external_ref:
              type:
                - string
                - 'null'
              description: >-
                Id-ul tău pentru anunțul existent, dacă l-ai pus tu cu `PUT
                /listings/ref/{ref}`. Altfel `null`.
          required:
            - code
            - external_ref
          description: >-
            Doar la `409 duplicate_listing`: anunțul pe care îl ai deja pentru
            aceeași proprietate.
      required:
        - type
        - title
        - status
        - code
        - detail
    ValidationProblem:
      type: object
      title: ValidationProblem
      properties:
        type:
          type: string
          format: uri
          description: Adresa tipului de problemă (RFC 9457).
        title:
          type: string
          description: Rezumatul problemei, în limba cererii.
        status:
          type: integer
          description: 'Codul HTTP: `422`.'
        errors:
          type: array
          items:
            type: object
            properties:
              pointer:
                type: string
                description: Câmpul la care se referă, ca JSON Pointer (`/features/2`).
              code:
                type: string
                description: Regula încălcată, ca cod stabil (lista e în pagina Erori).
              detail:
                type: string
                description: >-
                  Explicația, în limba cererii. Textul se poate schimba, așa că
                  tratezi eroarea după `code`.
            required:
              - pointer
              - code
              - detail
          description: Câte o intrare pentru fiecare câmp care nu trece regulile.
      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.