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

# Schimbă setările vizionărilor

> Durata unei vizionări și modul de confirmare (`auto` sau `manual`), una sau amândouă. Orele deja publicate își păstrează durata.



## OpenAPI

````yaml ro/openapi.json PATCH /listings/{code}/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:
  /listings/{code}/viewings:
    patch:
      tags:
        - Vizionări
      summary: Schimbă setările vizionărilor
      description: >-
        Durata unei vizionări și modul de confirmare (`auto` sau `manual`), una
        sau amândouă. Orele deja publicate își păstrează durata.
      operationId: v1.viewings.settings
      parameters:
        - name: code
          in: path
          required: true
          schema:
            type: string
          description: >-
            Codul public al anunțului (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.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                duration_min:
                  type:
                    - integer
                    - 'null'
                  enum:
                    - '15'
                    - '30'
                    - '45'
                    - '60'
                    - '90'
                    - null
                  description: 'Durata unei vizionări, în minute: 15, 30, 45, 60 sau 90.'
                confirmation:
                  type:
                    - string
                    - 'null'
                  enum:
                    - auto
                    - manual
                    - null
                  description: >-
                    `auto`: o rezervare e confirmată pe loc. `manual`:
                    vizitatorul trimite o cerere, iar tu o accepți sau o refuzi.
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ViewingAgendaApiResource'
                    description: Rezultatul cererii.
                required:
                  - data
          description: Cererea a reușit.
        '400':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: Corpul cererii nu e JSON valid (`malformed_json`).
        '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`).
        '413':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: Corpul cererii depășește 1 MB (`payload_too_large`).
        '415':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Corpul cererii nu e declarat ca JSON (`unsupported_media_type`).
            Trimite-l cu `Content-Type: application/json`.
        '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:
    ViewingAgendaApiResource:
      type: object
      properties:
        code:
          type: string
          description: Codul.
        duration_min:
          type: integer
          description: 'Durata unei vizionări, în minute: 15, 30, 45, 60 sau 90.'
        confirmation:
          type: string
          description: >-
            `auto`: o rezervare e confirmată pe loc. `manual`: vizitatorul
            trimite o cerere, iar tu o accepți sau o refuzi.
        timezone:
          type: string
          description: >-
            Fusul orar al locului anunțului (IANA). Orele se citesc pe ceasul
            lui.
        schedule_mode:
          anyOf:
            - type: string
            - type: string
              enum:
                - inherit
          description: 'Cum își ia anunțul orele: `inherit`, `own` sau `on_request`.'
        slots:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
                description: Id-ul orei sau al ferestrei, pentru `/viewings/{slot}`.
              kind:
                type: string
                description: >-
                  `viewing` (o oră rezervată de un singur vizitator) sau
                  `open_house` (o fereastră de vizită liberă).
              starts_at:
                type: string
                description: Începutul orei sau al ferestrei (ISO 8601).
              ends_at:
                type: string
                description: Sfârșitul orei sau al ferestrei (ISO 8601).
              status:
                type: string
                description: >-
                  `available` (liber), `pending` (cerut, așteaptă răspunsul tău)
                  sau `booked` (rezervat).
              request_expires_at:
                type:
                  - string
                  - 'null'
                description: >-
                  Momentul până la care răspunzi unei cereri. După el, cererea
                  expiră și ora se eliberează. Null dacă ora nu e cerută.
              visitor:
                type:
                  - object
                  - 'null'
                properties:
                  name:
                    type:
                      - string
                      - 'null'
                    description: Numele.
                  email:
                    type:
                      - string
                      - 'null'
                    description: Emailul clientului, dacă îl are.
                  phone:
                    type:
                      - string
                      - 'null'
                    description: Telefonul.
                required:
                  - name
                  - email
                  - phone
                description: >-
                  Cine a rezervat sau a cerut ora: `name`, `email`, `phone`.
                  Doar pentru o cheie cu dreptul `leads:read`, altfel null.
              open_house:
                type:
                  - object
                  - 'null'
                properties:
                  note:
                    type:
                      - string
                      - 'null'
                    description: Nota.
                  rsvp:
                    type: boolean
                    description: Anunțarea venirii.
                  capacity:
                    type:
                      - integer
                      - 'null'
                    description: Numărul de locuri.
                  going:
                    type: integer
                    description: Câți oameni au spus că vin.
                  arrived:
                    type: integer
                    description: Câți oameni au fost marcați ca veniți.
                  savers_notified:
                    type: boolean
                    description: '`true` după ce i-ai anunțat pe cei care au salvat anunțul.'
                  savers_to_notify:
                    type:
                      - integer
                      - 'null'
                    description: >-
                      Câți oameni ar primi anunțul acum. `null` după ce
                      fereastra a fost anunțată.
                  running:
                    type: boolean
                    description: '`true` cât timp fereastra e în desfășurare.'
                required:
                  - note
                  - rsvp
                  - capacity
                  - going
                  - arrived
                  - savers_notified
                  - savers_to_notify
                  - running
                description: >-
                  Starea unei ferestre de open house, `null` la o vizionare:
                  `note`, `rsvp`, `capacity`, `going`, `arrived`,
                  `savers_notified`, `savers_to_notify`, `running`.
              source:
                type: string
                description: >-
                  `schedule`: ora a fost generată de programul săptămânal.
                  `manual`: a fost pusă de mână.
              duration_min:
                type: integer
                description: 'Durata unei vizionări, în minute: 15, 30, 45, 60 sau 90.'
              held:
                type: boolean
                description: >-
                  Ora e ținută pentru scurt timp pentru cineva care intră în
                  cont ca s-o rezerve. Cât e ținută, nimeni altcineva n-o poate
                  rezerva.
              bookable:
                type:
                  - boolean
                  - 'null'
                description: >-
                  La o oră liberă: dacă un client o poate rezerva acum
                  (preavizul, cel care face vizionările nu e ocupat la alt
                  anunț, ora nu e ținută). Null la celelalte ore.
              booked_at:
                type:
                  - string
                  - 'null'
                description: Când a fost rezervată sau cerută ora.
              proposed_starts_at:
                type:
                  - string
                  - 'null'
                description: >-
                  Ora propusă clientului în locul celei rezervate, cât timp
                  așteaptă răspunsul lui. Altfel null.
              attendance_confirmed_at:
                type:
                  - string
                  - 'null'
                description: Când a răspuns clientul „Da, vin” la mementou.
              reminded_day_at:
                type:
                  - string
                  - 'null'
                description: Când i s-a trimis clientului mementoul din ziua dinainte.
              reminded_soon_at:
                type:
                  - string
                  - 'null'
                description: Când i s-a trimis clientului mementoul cu două ore înainte.
              outcome:
                type:
                  - string
                  - 'null'
                description: Rezultatul.
              outcome_at:
                type:
                  - string
                  - 'null'
                description: Când s-a spus „Cum a fost?”.
              agent:
                type:
                  - object
                  - 'null'
                properties:
                  name:
                    type: string
                    description: >-
                      Numele contului agentului. Portalul arată numele din
                      `display_name`.
                  email:
                    type: string
                    description: >-
                      Emailul agentului; `null` când nu avem o adresă reală a
                      lui, de exemplu la un coleg venit dintr-un CRM, fără email
                      în fișa lui.
                required:
                  - name
                  - email
                description: >-
                  Emailul colegului care răspunde de anunț, un membru activ al
                  firmei. Doar cheia titularului sau a unui administrator îl
                  poate trimite. Altfel primești un avertisment, iar anunțul
                  rămâne pe contul cheii.
              place:
                type:
                  - string
                  - 'null'
                description: Locul întâlnirii.
              place_rooms:
                type:
                  - integer
                  - 'null'
                description: >-
                  La un proiect al dezvoltatorului: câte camere are apartamentul
                  pe care vrea să-l vadă clientul.
              seat:
                type: integer
                description: >-
                  La un proiect al dezvoltatorului, locul orei: câte unul pentru
                  fiecare consultant, cu același `starts_at`. 0 în rest.
            required:
              - id
              - kind
              - starts_at
              - ends_at
              - status
              - request_expires_at
              - visitor
              - open_house
              - source
              - duration_min
              - held
              - bookable
              - booked_at
              - proposed_starts_at
              - attendance_confirmed_at
              - reminded_day_at
              - reminded_soon_at
              - outcome
              - outcome_at
              - agent
              - place
              - place_rooms
              - seat
          description: >-
            Orele de vizionare. La publicare, orele de început. La citire, orele
            și ferestrele care n-au trecut încă.
      required:
        - code
        - duration_min
        - confirmation
        - timezone
        - schedule_mode
        - slots
      title: ViewingAgendaApiResource
    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.