Publicarea
POST /listings/{code}/open-house publică una sau mai multe ferestre, cel mult 60 într-o cerere, doar pe un anunț activ. Fiecare fereastră are starts_at și ends_at și poate avea în plus:
note: ce le spui vizitatorilor, de exemplu unde sună la interfon. Cel mult 500 de caractere. Pe anunțul unei firme, nota apare pe pagina anunțului. Pe anunțul unei persoane fizice, o văd doar cei care au spus că vin.rsvp: dacă oamenii pot spune că vin. Implicittrue. Pe anunțul unei persoane fizice e mereutrue.capacity: numărul de locuri al zilei de vizită a unui proiect de dezvoltator, de la 1 la 500. Vezi Ziua de vizită a unui proiect.notify_savers:trueîi anunță pe loc pe cei care au salvat anunțul, caPOST /viewings/{id}/open-house/announce.
warnings[], ca la scrierea unui anunț. capacity trimis pe un anunț care nu e proiect se ignoră, cu avertismentul capacity_not_applicable.
Ziua de vizită a unui proiect
Pe un proiect de dezvoltator care nu e finalizat (stadiul Lansare, În construcție sau fără stadiu), pe șantier se intră doar într-o zi de vizită cu locuri. Fiecare fereastră a unui astfel de proiect are nevoie decapacity. Înscrierea e obligatorie (rsvp devine true).
Regula se aplică în API din ziua pe care ți-o anunțăm. Până atunci, o fereastră fără capacity se publică în continuare, iar răspunsul are antetul Deprecation cu ziua (de forma @1767225600), antetul Link spre această secțiune și avertismentul site_visit_required_soon pe /windows/{i}/capacity, cu ziua în detail. Din acea zi, o astfel de fereastră primește 422 site_visit_required pe /windows/{i}/capacity și nu se publică nimic din cerere.
Un proiect Finalizat sau Mixt are vizionări la apartamente și open house fără locuri, ca orice anunț.
Modificarea unei ferestre
PATCH /viewings/{id}/open-house schimbă starts_at, ends_at, note, rsvp sau capacity. Ce nu trimiți rămâne cum e, iar note: null șterge nota. Orele se mută după aceleași reguli ca la publicare. Ziua de vizită a unui proiect își păstrează locurile: le poți schimba, dar capacity: null primește 422 site_visit_required. Răspunsul e fereastra, ca oră din agendă, plus warnings[].
PATCH /viewings/{id} mută în continuare doar orele, ca în 1.1.0.
Anunțarea celor care au salvat anunțul
POST /viewings/{id}/open-house/announce le spune celor care au salvat anunțul că ai un open house. Răspunsul spune în told câți oameni au fost anunțați.
told: 0 și already_announced: true. O fereastră încheiată nu se mai anunță: told: 0, fără eroare. Poți trimite cel mult 10 cereri pe minut, pe lângă bugetul de scrieri al contului.
Starea ferestrei
Fiecare oră din agendă are câmpulopen_house, null la o vizionare. La o fereastră de open house:
going: câți oameni au spus că vin;arrived: câți au fost marcați ca veniți.savers_notified: dacă ai anunțat deja fereastra.savers_to_notifyspune câți oameni ar primi anunțul acum și enulldupă anunțare.running:truecât timp fereastra e în desfășurare.
listings:read. Agenda arată doar ferestrele care n-au trecut. Ferestrele nu se șterg; doar rândurile foii de prezență se șterg, la 90 de zile după open house.
Foaia de prezență
Foaia de prezență spune cine a anunțat că vine și cine a venit. Rândurile sunt persoane, așa că citirea cerelistings:read și leads:read, iar schimbările cer listings:write, leads:read și leads:write.
GET /viewings/{id}/attendees dă rândurile ferestrei, cele mai recente întâi (după venire, apoi după anunțare), cu cursor și per_page (cel mult 100):
sourcespune de unde vine rândul:rsvp(a anunțat de pe pagina anunțului că vine),checkin(a semnat la ușă) saumanual(l-ai adăugat tu). Larsvp,namee numele contului; lacheckin, ce a scris omul.phonee ce păstrează foaia: telefonul contului larsvp, telefonul scris la ușă doar dacă omul a fost de acord să fie contactat (consent: true) și ce ai scris tu lamanual.consent_versione versiunea textului de informare pe care l-a acceptat.meta.checkin.urle linkul foii de la ușă, din care îți faci codul QR. Foaia primește semnături de la o oră înainte de fereastră până la o oră după ea (opens_at,closes_at), iaropenspune dacă le primește acum. Afișul de printat rămâne în portal.- Pe anunțul unei persoane fizice, lista arată cine a spus că vine, iar
checkinenull: open house-ul unei persoane fizice nu are foaie la ușă. - Rândurile se șterg la 90 de zile după open house. După aceea lista e goală.
POST /viewings/{id}/attendees adaugă pe cineva care a venit, cu name (cel mult 120 de caractere) și, opțional, phone. Telefonul se scrie în format internațional, ca în portal. Rândul e marcat venit pe loc, iar omul intră în contactele tale; dacă are telefon, contactul trece în etapa Vizionare. Răspunsul e 201 cu rândul. Cu antetul Idempotency-Key, aceeași cerere trimisă din nou în 10 minute, cu aceeași cheie API, întoarce același rând cu 200 și nu mai adaugă nimic. Aceeași cheie cu alt name sau phone e refuzată pe /idempotency_key.
Pe un rând (/open-house-attendees/{id}):
POST …/arrivedîl marchează venit, iar contactul trece în etapa Vizionare. Pe un rând deja venit răspunde200fără alt efect.
409 listing_action_refused, cu motivul în detail, când foaia nu le primește acum, de exemplu în afara ferestrei open house-ului, ca în portal.
PATCHcu{ "interested": true }saufalsespune dacă omul e interesat.DELETE …/consentretrage acordul de contact, la cererea omului: telefonul pleacă din rând, numele rămâne.DELETEșterge rândul, de exemplu la cererea omului sau pentru un rând greșit. Răspunsul e204. Contactul din cereri nu se șterge odată cu rândul: dacă omul îți cere asta, îl ștergi și de acolo, cuDELETE /leads/{id}.
404, ca unele care nu există. Ce se întâmplă pe foaie, din portal, de la vizitator sau prin API, afli prin evenimentele open_house.attendee_added, open_house.attendee_arrived și open_house.attendee_removed. Un webhook abonat la lead.created le primește și pe ele. Vezi Webhook-urile.