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

# Pornește vizionările la apartamente

> Pentru un proiect Finalizat, pornește vizionările la apartamente, ca butonul „Pornește vizionările” din portal: apartamentele primesc ore din programul lor, iar clienții aleg un apartament de văzut. Doar titularul, un administrator sau managerul proiectului; pentru oricine altcineva proiectul nu există (404). Apăsat din nou nu schimbă nimic. Un proiect care nu e Finalizat primește `422 stage_not_finished`.



## OpenAPI

````yaml ro/openapi.json POST /projects/{project}/flat-viewings
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:
  /projects/{project}/flat-viewings:
    post:
      tags:
        - Proiecte
      summary: Pornește vizionările la apartamente
      description: >-
        Pentru un proiect Finalizat, pornește vizionările la apartamente, ca
        butonul „Pornește vizionările” din portal: apartamentele primesc ore din
        programul lor, iar clienții aleg un apartament de văzut. Doar titularul,
        un administrator sau managerul proiectului; pentru oricine altcineva
        proiectul nu există (404). Apăsat din nou nu schimbă nimic. Un proiect
        care nu e Finalizat primește `422 stage_not_finished`.
      operationId: v1.projects.flat_viewings
      parameters:
        - name: project
          in: path
          required: true
          schema:
            type: string
          description: >-
            Codul ansamblului proiectului (8 caractere, ca în adresa lui de pe
            Housera).
        - 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:
                    $ref: '#/components/schemas/ProjectApiResource'
                    description: Rezultatul cererii.
                required:
                  - data
          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: Anunțul nu există sau cheia nu are acces la el (`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`.
        '503':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Housera a oprit temporar scrierile prin API (`api_writes_paused`).
            Reîncearcă după numărul de secunde din `Retry-After`.
components:
  schemas:
    ProjectApiResource:
      type: object
      properties:
        code:
          type: string
          description: Codul ansamblului proiectului.
        title:
          type:
            - string
            - 'null'
          description: Numele ansamblului.
        url:
          type:
            - string
            - 'null'
          description: Pagina ansamblului pe Housera.
        status:
          type:
            - string
            - 'null'
          enum:
            - draft
            - pending
            - active
            - rejected
            - paused
            - hidden
            - unconfirmed
            - sold
            - null
          description: >-
            Starea ansamblului, ca a oricărui anunț (`active`, `pending`,
            `draft`, `paused`…).
        stage:
          type:
            - string
            - 'null'
          enum:
            - launch
            - under_construction
            - finished
            - mixed
            - null
          description: >-
            Stadiul proiectului: `launch`, `under_construction`, `finished` sau
            `mixed`.
        address:
          type: string
          description: 'Adresa ansamblului: strada și numărul, zona și orașul.'
        delivery:
          type:
            - object
            - 'null'
          properties:
            quarter:
              type: integer
              description: Trimestrul, de la 1 la 4.
            year:
              type: integer
              description: Anul.
          required:
            - quarter
            - year
          description: >-
            Termenul de predare, ca în lista din portal. `null` după ce
            proiectul e finalizat sau cât timp lipsește trimestrul ori anul.
        price_from:
          type:
            - object
            - 'null'
          properties:
            amount:
              type: number
              description: Suma.
            currency:
              type:
                - string
                - 'null'
              description: Moneda sumei, cod ISO 4217.
          required:
            - amount
            - currency
          description: >-
            Prețul de pornire al ansamblului, prețul din anunțul lui. `null`
            dacă nu are preț.
        partners:
          type: object
          properties:
            active:
              type: integer
              description: Câte parteneriate sunt active.
            pending:
              type: integer
              description: Câte cereri de parteneriat așteaptă răspunsul tău.
          required:
            - active
            - pending
          description: Agențiile partenere ale proiectului.
        requests:
          type: object
          properties:
            total:
              type: integer
              description: Toate cererile.
            unassigned:
              type: integer
              description: Cererile pe care nu le-a preluat încă nimeni.
          required:
            - total
            - unassigned
          description: >-
            Cererile clienților pe ansamblu și pe unitățile lui, ca în lista din
            portal. Sunt doar cifre: cererile le citești cu `leads:read`.
        manages:
          type: boolean
          description: >-
            `true` dacă contul cheii conduce proiectul (titularul, un
            administrator, managerul lui): îi poate schimba biroul de vânzări și
            poate scoate unitățile partenerilor.
        sales_office:
          type: object
          properties:
            address:
              type:
                - string
                - 'null'
              description: Adresa biroului de vânzări.
            phone:
              type:
                - string
                - 'null'
              description: Telefonul biroului, în format internațional.
            email:
              type:
                - string
                - 'null'
              description: Emailul biroului.
            opening_hours:
              type:
                - object
                - 'null'
              additionalProperties:
                type: object
                properties:
                  from:
                    type: string
                    description: Ora de deschidere (`HH:MM`).
                  to:
                    type: string
                    description: >-
                      Ora de închidere (`HH:MM`, `24:00` pentru sfârșitul
                      zilei).
                required:
                  - from
                  - to
              description: >-
                Programul pe zile, de la `mon` la `sun`, cu câte un interval
                `from` și `to` pe zi. O zi lipsă e închisă. `null` când biroul
                nu are program.
          required:
            - address
            - phone
            - email
            - opening_hours
          description: >-
            Biroul de vânzări al proiectului, afișat pe pagina ansamblului și pe
            unitățile lui.
        team:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                description: Numele colegului.
              email:
                type:
                  - string
                  - 'null'
                description: >-
                  Emailul colegului. Îl trimiți în `team` ca să-l pui pe
                  proiect. Îl primesc doar cheile titularului și ale
                  administratorilor, iar cheia unui manager doar pentru colegii
                  de pe proiectele lui; altfel e `null`, în afară de rândul
                  cheii.
              role:
                type: string
                description: 'Rolul în firmă: `owner`, `admin`, `manager` sau `agent`.'
              all_projects:
                type: boolean
                description: >-
                  `true` pentru titular și administratori, care sunt pe toate
                  proiectele.
            required:
              - name
              - email
              - role
              - all_projects
          description: >-
            Echipa proiectului: titularul și administratorii, care sunt pe toate
            proiectele, apoi colegii aleși pentru el.
        viewings:
          type:
            - object
            - 'null'
          properties:
            offer:
              type: object
              properties:
                places:
                  type: array
                  items:
                    type: object
                    properties:
                      place:
                        type: string
                        description: Locul întâlnirii.
                      rooms:
                        type:
                          - integer
                          - 'null'
                        description: Numărul de camere.
                    required:
                      - place
                      - rooms
                  description: >-
                    Locurile pe care le poate alege clientul: `place` (`office`,
                    `show_flat` sau `unit`) și `rooms` (camerele apartamentului
                    de văzut, sau `null`).
                open_house:
                  type: boolean
                  description: >-
                    Starea unei ferestre de open house, `null` la o vizionare:
                    `note`, `rsvp`, `capacity`, `going`, `arrived`,
                    `savers_notified`, `savers_to_notify`, `running`.
                site_visit:
                  type: boolean
                  description: >-
                    `true` cât timp pe șantier se intră doar într-o zi de vizită
                    cu locuri: fereastra de open house are nevoie de `capacity`.
                flat_viewings:
                  type: boolean
                  description: '`true` când clienții pot programa vizionări la apartamente.'
                needs_start:
                  type: boolean
                  description: >-
                    `true` pentru un proiect Finalizat la care n-ai pornit încă
                    vizionările la apartamente (`POST
                    /projects/{code}/flat-viewings`).
              required:
                - places
                - open_house
                - site_visit
                - flat_viewings
                - needs_start
              description: >-
                Ce pot programa clienții acum, după stadiu: `places` (unde),
                `open_house`, `site_visit` (pe șantier doar o zi de vizită cu
                locuri), `flat_viewings` și `needs_start`.
            flat_viewings_started_at:
              type:
                - string
                - 'null'
              description: Când au pornit vizionările la apartamente, sau `null`.
            consultants:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: Numele.
                  email:
                    type:
                      - string
                      - 'null'
                    description: >-
                      Emailul consultantului, după aceeași regulă ca emailurile
                      din `team`. E `null` când cheia nu are acces la el.
                  role:
                    type: string
                    description: Rolul.
                required:
                  - name
                  - email
                  - role
              description: >-
                Consultanții proiectului, care se întâlnesc cu clienții: echipa
                lui care lucrează în firmă, managerii întâi. Gol când n-ai ales
                pe nimeni; atunci vizionările le face cel care conduce anunțul.
            next_viewing:
              type:
                - string
                - 'null'
              description: Următoarea vizionare rezervată sau cerută, sau `null`.
            next_open_house:
              type:
                - string
                - 'null'
              description: Următorul open house care n-a trecut, sau `null`.
          required:
            - offer
            - flat_viewings_started_at
            - consultants
            - next_viewing
            - next_open_house
          description: Filtrul vizionărilor.
        developer:
          type:
            - object
            - 'null'
          properties:
            name:
              type: string
              description: Numele firmei ansamblului.
            country:
              type:
                - string
                - 'null'
              description: Țara firmei, cod ISO 3166-1 alpha-2.
            tax_id:
              type:
                - string
                - 'null'
              description: >-
                Codul fiscal, doar când firma e verificată în registru și e
                persoană juridică. `null` la persoanele fizice autorizate și la
                întreprinderile individuale.
            verified:
              type: boolean
              description: >-
                `true` când datele firmei au fost verificate în registrele
                publice.
            url:
              type:
                - string
                - 'null'
              description: >-
                Pagina dezvoltatorului pe Housera. `null` când firma nu are
                cont.
          required:
            - name
            - country
            - tax_id
            - verified
            - url
          description: >-
            Firma care construiește ansamblul. `null` la celelalte tipuri și cât
            timp dezvoltatorul nu e cunoscut.
        mandate:
          type:
            - object
            - 'null'
          properties:
            status:
              type: string
              description: >-
                `requested` (cererea așteaptă decizia), `confirmed`, `refused`,
                `withdrawn` (agenția și-a retras cererea), `revoked` sau
                `expired`. Ansamblul e public doar cu mandatul `confirmed`.
            decided_via:
              type:
                - string
                - 'null'
              description: >-
                Cine a decis: `developer` (dezvoltatorul), `moderator` (un
                moderator Housera) sau `legacy` (o decizie fără o cerere de
                mandat). `null` cât timp nu s-a decis.
            valid_until:
              type:
                - string
                - 'null'
              description: >-
                Data de sfârșit a contractului, `YYYY-MM-DD`. `null` când
                contractul nu are una.
            renewal_pending:
              type: boolean
              description: >-
                `true` cât timp un contract nou așteaptă confirmarea
                dezvoltatorului.
          required:
            - status
            - decided_via
            - valid_until
            - renewal_pending
          description: >-
            Pe proiectul unei agenții, mandatul ei deschis pe ansamblu:
            `requested` sau `confirmed`. `null` pe proiectele unui dezvoltator.
        units:
          type: object
          properties:
            available:
              type: integer
              description: Unitățile active și nerezervate.
            reserved:
              type: integer
              description: Unitățile active și rezervate.
            sold:
              type: integer
              description: Unitățile vândute.
          required:
            - available
            - reserved
            - sold
          description: >-
            Unitățile publice ale proiectului, numărate ca pe pagina
            ansamblului.
      required:
        - code
        - title
        - url
        - status
        - stage
        - address
        - delivery
        - price_from
        - partners
        - requests
        - manages
        - sales_office
        - team
        - viewings
        - developer
        - mandate
        - units
      title: ProjectApiResource
    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.