> ## 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ă programul tău de vizionări

> Se schimbă doar câmpurile trimise, celelalte rămân cum erau. `null` readuce valoarea implicită, iar `hours`, când îl trimiți, înlocuiește toată săptămâna (o zi lipsă înseamnă închis). Cu `confirmation: auto` și `confirm_pending: true` se confirmă și cererile care așteaptă la anunțurile care urmează setarea ta, cel mult 100 odată. Orele noi apar pe anunțuri în câteva momente, fără ca răspunsul să aștepte generarea lor.



## OpenAPI

````yaml ro/openapi.json PATCH /account/viewing-schedule
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/viewing-schedule:
    patch:
      tags:
        - Vizionări
      summary: Schimbă programul tău de vizionări
      description: >-
        Se schimbă doar câmpurile trimise, celelalte rămân cum erau. `null`
        readuce valoarea implicită, iar `hours`, când îl trimiți, înlocuiește
        toată săptămâna (o zi lipsă înseamnă închis). Cu `confirmation: auto` și
        `confirm_pending: true` se confirmă și cererile care așteaptă la
        anunțurile care urmează setarea ta, cel mult 100 odată. Orele noi apar
        pe anunțuri în câteva momente, fără ca răspunsul să aștepte generarea
        lor.
      operationId: v1.viewing_schedule.update
      parameters:
        - 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:
              $ref: '#/components/schemas/UpdateViewingScheduleRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ViewingScheduleApiResource'
                    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`).
        '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:
    UpdateViewingScheduleRequest:
      type: object
      properties:
        hours:
          type:
            - object
            - 'null'
          additionalProperties:
            type: array
            items:
              type: object
              properties:
                from:
                  type: string
                  description: Ora de început, `HH:MM`.
                to:
                  type: string
                  description: Ora de sfârșit, `HH:MM`. `24:00` e sfârșitul zilei.
              required:
                - from
                - to
          description: Orele.
        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.'
        buffer_min:
          type:
            - integer
            - 'null'
          enum:
            - '0'
            - '15'
            - '30'
            - null
          description: Pauza dintre vizionări.
        notice_min:
          type:
            - integer
            - 'null'
          enum:
            - '0'
            - '60'
            - '120'
            - '240'
            - '1440'
            - '2880'
            - null
          description: Timpul de dinainte de rezervare.
        horizon_days:
          type:
            - integer
            - 'null'
          enum:
            - '7'
            - '14'
            - '21'
            - '28'
            - null
          description: Cât de departe se vede programul.
        confirmation:
          type: string
          enum:
            - auto
            - manual
          description: >-
            `auto`: o rezervare e confirmată pe loc. `manual`: vizitatorul
            trimite o cerere, iar tu o accepți sau o refuzi.
        confirm_pending:
          type: boolean
          description: Confirmarea cererilor care așteaptă.
        blocked_dates:
          type:
            - array
            - 'null'
          items:
            type: object
            properties:
              from:
                type: string
                format: date
                description: Prima zi sau ora de început a intervalului.
              to:
                type:
                  - string
                  - 'null'
                format: date
                description: Ultima zi a perioadei.
            required:
              - from
          maxItems: 50
          description: >-
            Zilele libere, ca intervale `{from, to}` de date (`Y-m-d`), cel mult
            50.
      title: UpdateViewingScheduleRequest
    ViewingScheduleApiResource:
      type: object
      properties:
        saved:
          type: boolean
          description: >-
            Dacă ai salvat vreodată programul. Când nu, `effective` arată
            valorile de la care pornește.
        hours:
          type: object
          additionalProperties:
            type: array
            items:
              type: object
              properties:
                from:
                  type: string
                  description: Ora de început, `HH:MM`.
                to:
                  type: string
                  description: Ora de sfârșit, `HH:MM`. `24:00` e sfârșitul zilei.
              required:
                - from
                - to
          description: Orele.
        duration_min:
          type:
            - integer
            - 'null'
          description: 'Durata unei vizionări, în minute: 15, 30, 45, 60 sau 90.'
        buffer_min:
          type:
            - integer
            - 'null'
          description: Pauza dintre vizionări.
        notice_min:
          type:
            - integer
            - 'null'
          description: Timpul de dinainte de rezervare.
        horizon_days:
          type:
            - integer
            - 'null'
          description: Cât de departe se vede programul.
        confirmation:
          type: string
          description: >-
            `auto`: o rezervare e confirmată pe loc. `manual`: vizitatorul
            trimite o cerere, iar tu o accepți sau o refuzi.
        blocked_dates:
          type: array
          items:
            type: object
            properties:
              from:
                type: string
                description: Prima zi sau ora de început a intervalului.
              to:
                type: string
                description: Ultima zi a perioadei.
            required:
              - from
              - to
          description: >-
            Zilele libere, ca intervale `{from, to}` de date (`Y-m-d`), cel mult
            50.
        effective:
          type: object
          properties:
            duration_min:
              type: integer
              description: 'Durata unei vizionări, în minute: 15, 30, 45, 60 sau 90.'
            buffer_min:
              type: integer
              description: Pauza dintre vizionări.
            notice_min:
              type: integer
              description: Timpul de dinainte de rezervare.
            horizon_days:
              type: integer
              description: Cât de departe se vede programul.
          required:
            - duration_min
            - buffer_min
            - notice_min
            - horizon_days
          description: >-
            Valorile pe care le aplică programul acum: cele alese de tine sau,
            unde n-ai ales nimic, cele implicite.
        options:
          type: object
          properties:
            duration_min:
              type: array
              items:
                type: integer
              description: 'Durata unei vizionări, în minute: 15, 30, 45, 60 sau 90.'
            buffer_min:
              type: array
              items:
                type: integer
              description: Pauza dintre vizionări.
            notice_min:
              type: array
              items:
                type: integer
              description: Timpul de dinainte de rezervare.
            horizon_days:
              type: array
              items:
                type: integer
              description: Cât de departe se vede programul.
          required:
            - duration_min
            - buffer_min
            - notice_min
            - horizon_days
          description: >-
            Valorile permise pentru `duration_min`, `buffer_min`, `notice_min`
            și `horizon_days`.
        listings_following:
          type: integer
          description: >-
            Câte anunțuri publice urmează programul tău: cele ale căror
            vizionări le faci tu și care n-au ore proprii.
        confirmed_pending:
          type: object
          properties:
            confirmed:
              type: integer
              description: Câte cereri s-au confirmat acum.
            still_waiting:
              type: integer
              description: >-
                Câte cereri mai așteaptă după salvare (peste plafonul de 100 sau
                răspunse între timp).
          required:
            - confirmed
            - still_waiting
          description: >-
            Ce s-a confirmat odată cu salvarea, când ai cerut `confirm_pending`:
            `confirmed` și `still_waiting`.
      required:
        - saved
        - hours
        - duration_min
        - buffer_min
        - notice_min
        - horizon_days
        - confirmation
        - blocked_dates
        - effective
        - options
        - listings_following
      title: ViewingScheduleApiResource
    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.