Salt la conținutul principal
Pe un anunț publicat poți oferi ore de vizionare, pe care vizitatorii le rezervă din pagina anunțului, și zile de vizită liberă (open house), în care oricine vine fără programare. Prin API faci tot ce face în aplicație cel care publică anunțul, cu aceleași reguli: orele, agenda, open house-ul, foaia de prezență, rapoartele și vizionările proiectelor. Operațiile de bază pe agenda unui anunț sunt descrise mai jos, iar restul în ghidurile din tabel.

Ce faci prin API

Drepturile

  • Orele, programul, open house-ul, rapoartele și proiectele cer listings:read pentru citire și listings:write pentru schimbări.
  • Tot ce privește o persoană cere în plus drepturile cererilor: leads:read ca să vezi clientul care a rezervat (visitor), clientul adăugat de mână, participanții la un open house și nota de la „Cum a fost?”, iar leads:write ca să adaugi un client sau un participant, să lucrezi pe foaia de prezență și să spui cum a fost vizionarea. O cheie fără leads:read primește visitor: null și nu vede foaia de prezență. Raportul anunțului nu conține persoane, deci îl citește orice cheie cu listings:read.
  • O cheie vede vizionările pe care contul ei le conduce în aplicație: anunțurile pe care le gestionează, cele ale căror vizionări i-au fost date și, la un dezvoltator, programările ajunse la el ca consultant. În afara lor, răspunsul e 404.

Cât păstrăm datele

Datele citite prin API au aceleași termene ca în aplicație. Numele și telefonul unui client adăugat de mână se șterg din vizionare la 90 de zile. Rândurile foii de prezență se șterg la 90 de zile după open house, iar fereastra rămâne. Rezultatul de la „Cum a fost?” și nota lui se șterg după 24 de luni. Un link pentru proprietar merge cel mult 90 de zile. Contactul pe care îl păstrezi în cereri are termenul lui. Dacă păstrezi aceste date în sistemul tău, le ștergi la aceleași termene.

Ce rămâne doar în aplicație

  • Partea clientului: rezervarea, ținerea orei cât intră în cont, anularea și mutarea făcute de el, „Vin și eu” la un open house, formularul de la ușă, nota lui privată, „Vizionările mele”, fișierul de calendar și linkul „Încă vii?” din email. Cheia ta lucrează pentru cel care publică anunțul și nu poate acționa în numele clientului. Ce face clientul afli din evenimente. Pentru clientul care te-a sunat folosești clientul adăugat de mână.
  • Mesajele către oameni: confirmările, mementourile și agenda zilei le trimite aplicația, și când acțiunea vine prin API.
  • Afișul printabil al open house-ului. API-ul îți dă linkul foii de la ușă, iar codul QR îl desenezi tu.

Agenda

GET /account/listings/{code}/viewings întoarce setările, plus orele și ferestrele care n-au trecut încă:
  • kind e viewing (o oră pe care o rezervă un singur vizitator) sau open_house (o fereastră de vizită liberă, fără rezervare).
  • status e available (liber), pending (cerut de un vizitator, așteaptă răspunsul tău) sau booked (rezervat).
  • request_expires_at e momentul până la care răspunzi unei cereri. După el, cererea expiră și ora se eliberează.
  • visitor are numele, emailul și telefonul celui care a rezervat sau a cerut ora. Îl primește doar o cheie cu dreptul leads:read, fiindcă sunt aceleași date ca într-o cerere. Pentru celelalte chei e null. O rezervare aduce și o cerere nouă, cu source: viewing_request.
Fiecare oră are și câmpuri care spun de unde vine și ce s-a întâmplat cu ea (source, bookable, outcome, agent, open_house și altele). Sunt descrise în Agenda de vizionări. Pe acest endpoint status rămâne available, pending sau booked, iar o oră care a trecut nu mai apare. Orice schimbare de mai jos răspunde cu agenda actualizată, în aceeași formă.

Setările

PATCH /listings/{code}/viewings schimbă una sau amândouă setările:
  • duration_min e durata unei vizionări, în minute: 15, 30, 45, 60 sau 90. Orele deja publicate își păstrează durata.
  • confirmation e auto (o rezervare e confirmată pe loc) sau manual (vizitatorul trimite o cerere, iar tu o accepți sau o refuzi).

Orele și zilele de vizită liberă

POST /listings/{code}/viewings publică ore de vizionare, cel mult 400 într-o cerere:
POST /listings/{code}/open-house publică ferestre de vizită liberă, cel mult 60 într-o cerere:
  • O oră fără fus orar (2026-11-12T10:00) e citită pe ceasul locului anunțului, cum o vede vizitatorul. Poți trimite și un moment cu fus (2026-11-12T08:00:00Z). O oră care nu există sau apare de două ori la schimbarea orei e refuzată.
  • Orele trebuie să fie în viitor, iar sfârșitul unei ferestre vine după început.
  • Orele de vizionare nu se suprapun între ele și nici cu o fereastră de vizită liberă. O oră deja publicată e sărită, deci aceeași listă trimisă de două ori nu adaugă nimic.
  • duration_min trimis la publicare devine durata anunțului. Cu "set_listing_duration": false, orele se publică cu durata lor, iar durata anunțului rămâne cea de dinainte.
  • Agenda se schimbă doar pe un anunț active. Pe alt anunț, răspunsul e 409 listing_action_refused.
PATCH /viewings/{id} mută o oră de vizionare sau o fereastră (starts_at, plus ends_at la o fereastră). O oră rezervată de un client cu cont nu se mută: îi propui altă oră (Agenda de vizionări), o anulezi sau răspunzi cererii. Vizionarea unui client fără cont, adăugat de mână, se mută direct, fiindcă noua oră ați stabilit-o împreună. DELETE /viewings/{id} retrage o oră sau o fereastră (204). Dacă ora era rezervată sau cerută, vizitatorul primește vestea. POST /listings/{code}/viewings/withdraw cu {"slot_ids": [9182, 9183]} retrage mai multe ore libere deodată. Cele rezervate sau cerute rămân și le retragi pe rând.

Cererile și rezervările

  • POST /viewings/{id}/accept acceptă o cerere: ora devine booked, iar vizitatorul primește confirmarea.
  • POST /viewings/{id}/decline refuză o cerere: ora redevine liberă, iar vizitatorul află că cererea a fost refuzată.
  • POST /viewings/{id}/cancel anulează o rezervare sau o cerere: ora rămâne publicată și liberă, iar vizitatorul primește vestea. Cu note (cel mult 300 de caractere), nota ajunge în mesajul către el, dacă are cont.
O cerere la care s-a răspuns deja primește 409 listing_action_refused. O oră a unui anunț pe care cheia nu îl vede răspunde 404. Consultantul unui dezvoltator răspunde la fel programărilor ajunse la el pe un proiect. Răspunsul e agenda anunțului cu orele pe care le vede el în aplicație: clienții lui și zilele de vizită. Agenda întreagă (GET /account/listings/{code}/viewings), mutarea și retragerea orelor rămân ale celui care conduce vizionările anunțului. Orele lui le găsește în GET /account/viewings.

Evenimentele

  • viewing.booked: un vizitator a rezervat sau a cerut o oră. data are slot_id, starts_at și slot_status (booked sau pending).
  • viewing.cancelled: o rezervare sau o cerere s-a anulat fără tine. data are slot_id, starts_at și by: visitor când a anulat vizitatorul, expired când cererea a expirat fără răspuns.
Le primești ca pe celelalte evenimente ale anunțului, cu dreptul listings:read. Din ziua pe care ți-o anunțăm primești și evenimentele pentru ce face colegul tău în aplicație (confirmă, refuză, anulează, mută, propune altă oră, spune cum a fost) și pentru foaia de prezență. Vezi Evenimentele vizionărilor.