Webhook

"Webhook" umožňuje vašemu systému automaticky přijímat upozornění na události, které nastanou v rámci systému reenio. Příjem události je realizován pomocí HTTP požadavku na URL adresu Vašeho systému, a to podle nastavení vlastních zpráv v administraci. V těle požadavku jsou zaslány informace o dané události. Díky takto zaslané informaci může Váš systém na danou událost okamžitě reagovat.

Systém reenio implementuje webhooky pomocí vlastních zpráv.

Jak vypadá HTTP požadavek webhooku?

Data jsou zaslána ve formátu JSON pomocí pomocí HTTP POST metody (data se nacházejí v těle požadavku). Ukázka dat ve formátu JSON:

{  
    "triggerType": 1,  
    "customerId": 10,  
    "reservationId": 50  
}

Server, na který byl HTTP požadavek zaslán, musí vrátit odpověď s HTTP stavovým kódem 200 (OK) a tělem odpovědi "REENIO" (bez uvozovek). Pokud server vrátí jakoukoliv jinou odpověď je webhook považován za nedoručený a systém se jej bude snažit opětovně doručit, viz níže. Během konfigurace (nastavení v rámci administrace) webhooku bude na zadanou URL adresu zaslán ověřovací HTTP požadavek, který bude obsahovat prázdný objekt ve formátu JSON. Tedy:

{}

Server musí na tento požadavek odpovědět stejně jako v případě jakéhokoliv jiného požadavku (stavový kód 200 a text "REENIO"), jinak se nastavení nepovede uložit.

Podporované protokoly pro zasílání webhooků jsou HTTP i HTTPS.

Pole triggerType může nabývat těchto hodnot:

Hodnota Událost
0 Vytvoření rezervace
1 Konec rezervovaného termínu
2 Změna stavu rezervace na: PROBĚHLA
3 Změna stavu rezervace na: POTVRZENÁ
4 Začátek rezervovaného termínu
5 Registraci zákazníka
6 Storno rezervace z důvodu neuhrazení
7 Uhrazení rezervace
8 Zrušení termínu z důvodu nenaplnění kapacity
9 Storno rezervace (kromě storna z důvodu neuhrazení a zrušení termínu)
10 Změna stavu rezervace na: NEPROBĚHLA
11 Změna stavu rezervace na: NEDORAZIL

Formát dat v rámci HTTP požadavku

Data zaslaná v rámci webhooku jsou vždy ve formátu JSON. Všechny požadavky, až na ověřovací (prázdný objekt), obsahují "triggerType", který udává typ události, která tento webhook vyvolala. Další vlastnosti záleží na typu události. Standardně je zasláno vždy ID rezervace ("reservationId") a ID zákazníka ("customerId"). Detailní informace svázané se zaslanými ID je následně možné získat z našeho API.

Množina zasílaných dat se může do budoucna rozšířit či změnit.

Co když bude URL pro zasílání webhooků nedostupná?

Pokud URL vrátí jinou odpověď než je stavový kód 200 a text "REENIO", bude webhook považován za nedoručený a systém se jej bude pokoušet doručit s časovým odstupem znovu. Časový odstup se postupně zvyšuje s počtem neúspěšných pokusů o doručení. Přesný počet pokusů a časový odstup záměrně neuvádíme, protože se může měnit. Systém se ale vždy pokusí o doručení minimálně 3x přičemž poslední pokus bude proveden minimálně po 12 hodinách od prvního pokusu. To by mělo pokrýt případný krátkodobý výpadek Vašeho systému.

Server pro příjem webhooků by měl vždy odpovědět v nejkratším možném čase. Vyhněte se spouštění dlouho trvajících úloh v rámci volání a zpracování webhooku. Pokud systém reenio neobdrží odpověď na zaslaný webhook v dostatečně krátkém čase, bude označen jako neúspěšný.