Liste
GET /locations, /owners, /properties, /amenities și /webhooks răspund cu o pagină:
limiteste între 1 și 500, implicit 100; peste 500 este refuzat.- Pentru pagina următoare trimite înapoi
next_cursorcacursor. Este opac și legat de interogarea care l-a produs. Pe ultima pagină estenull. /locations,/ownersși/propertiesfiltrează dupăstatus, de exemplustatus=active,inactive, iar/propertiesși dupălocation_idșiowner_id.- O singură resursă se citește cu
GET /locations/{location_id},/owners/{owner_id},/properties/{property_id}. - O citire poartă un
ETag(toate, mai puținGET /availability); trimite-l înapoi caIf-None-Match, iar un răspuns neschimbat este304 Not Modified, peste tot în afară de jurnalele de livrări ale webhook-urilor (/webhooks/{webhook_id}/deliveries).
location_id și owner_id, așa că citește locațiile și proprietarii înaintea proprietăților care trimit la ei.
Prima copie, apoi doar schimbările
1
Citește totul o dată
Listează fiecare resursă fără
updated_since, urmând next_cursor până la capăt. Păstrează fiecare resursă cu version-ul ei și reține cel mai mare updated_at primit.2
Cere ce s-a schimbat de atunci
Listează din nou cu
updated_since egal cu acel cel mai mare updated_at. Limita este inclusivă, deci nu ai nevoie de suprapunere: ce s-a schimbat chiar în acea secundă vine din nou, iar versiunea îți spune dacă îl ai deja.3
Aplică după versiune
Aplică o resursă doar când
version-ul ei este mai mare decât cel pe care îl ai și ignoră-l pe unul mai mic. Versiunea crește la fiecare schimbare vizibilă canalului tău, dar nu este un contor: nu te aștepta la valori consecutive.4
Ia-o de la capăt când fereastra a trecut
Un
updated_since mai vechi decât fereastra de păstrare, de 35 de zile, primește 410 cu sync-window-expired. Resincronizează de la zero: citește totul o dată, ca la primul pas.Un singur ciclu de viață pentru toate resursele
Locațiile, proprietarii, proprietățile, facilitățile și endpoint-urile de webhook au acelașistatus, cu același înțeles peste tot:
O resursă
withdrawn sau deleted este un tombstone, la toate resursele, și nu se trimite nimic altceva:
updated_since; fără el există doar resurse active și inactive. O resursă citită după id răspunde cu tombstone-ul ei. Tratează toate cele patru valori la fiecare resursă, inclusiv una pe care acea resursă nu o atinge azi.
Disponibilitate și prețuri
Disponibilitatea se citește pe proprietate și pe noapte, în datele proprietății.GET /properties/{property_id}/availability?from=2026-12-20&to=2026-12-27răspunde cu nopțile unei proprietăți dintr-o fereastră:toeste exclusiv, fereastra are cel mult 365 de nopți și stă în orizontul publicat. Unfromdinaintea zilei de azi a proprietății este servit de azi, iar răspunsul spune ce fereastră a servit. O fereastră dincolo de orizont primește400cuwindow-beyond-horizonșihorizon_end-ul proprietății. O proprietate retrasă sau ștearsă primește404.GET /availability?updated_since=…&from=…&to=…răspunde cu nopțile care s-au schimbat, grupate pe proprietăți active sau inactive. O pagină se termină lalimitproprietăți sau la 5.000 de nopți, care vine prima, așa că nopțile unei proprietăți pot continua pe pagina următoare sub acelașiproperty_id: aplică-le după dată. O pagină costămax(1, ceil(nights / 1000))unități din limita ta de cereri.
units_available (0 înseamnă complet ocupat), min_stay și max_stay pentru o sosire în acea noapte, closed_to_arrival, closed_to_departure și câte un tarif pentru fiecare plan tarifar. price este prețul pentru base_occupancy oaspeți, așa cum îl plătește oaspetele (cu TVA, cu adaosul aplicat), și este null când tariful este closed; extra_guest_price este prețul pentru încă un adult, 0 când e gratuit, null când prețul îi acoperă pe toți.
Jurnalul de evenimente
GET /events este jurnalul tău, în ordinea în care au fost înregistrate, al schimbărilor, păstrat 35 de zile. Reține last_event_id de pe fiecare pagină și trimite-l înapoi ca since; next_cursor este null când ai ajuns la zi. Fără since, jurnalul începe cu cel mai vechi eveniment păstrat. Apar doar tipurile de evenimente acoperite de permisiunile cheii tale: availability.updated cere read:ari.
Un since mai vechi decât jurnalul păstrat primește 410 cu event-cursor-expired și latest_event_id: resincronizează cu updated_since, apoi continuă jurnalul de la latest_event_id.
Un eveniment numește o resursă și versiunea ei sau, pentru availability.updated, o proprietate și un interval de nopți (from, to exclusiv), fără versiune: citește din nou acel interval. Tipurile de evenimente sunt location.created, location.updated, location.deleted, owner.created, owner.updated, owner.deleted, property.created, property.updated, property.deleted, property.distributed, property.withdrawn și availability.updated, și se pot adăuga altele.