Kun varaustapahtumalle on lisätty webhook, varaustiedot lähetetään JSON-muodossa URL-osoitteeseen aina, kun varaus luodaan, sitä muokataan, se perutaan tai palautetaan voimassa olevaksi.
Tärkeimmät tiedot
- Vaadittava tekninen tietämys: Webhookien määrittäminen ja hallinta vaatii teknistä osaamista. Ota tarvittaessa yhteyttä web-kehittäjään.
- Aktivointi: Aktivoi varaustapahtuman webhook valikosta Asetukset -> Sirvoy-tili -> Varaustapahtuman webhook.
- Webhookien enimmäisraja: Jokaista Sirvoy-tiliä kohden voi olla vain yksi aktiivinen webhook.
- Callback-toiminnon laukaisimet: Varaustapahtuman webhook lähettää callback-kutsun määritettyyn URL-osoitteeseen aina, kun varaus luodaan, sitä muutetaan, se perutaan tai palautetaan voimassa olevaksi.
Tekniset vaatimukset:
- Vastauskoodi: Vastaanottavan palvelimen on vastattava tilakoodilla ”200 OK”. Jos näin ei käy, kutsua yritetään uudelleen kymmenen kertaa eksponentiaalisella tarkistusalgoritmilla korkeintaan kymmenen kertaa, jonka jälkeen kutsu hylätään
- HTTPS ja TLS: Tuemme tietosuojan ja luottamuksellisuuden takaamiseksi vain HTTPS:ää, joka käyttää TLS:n versiota 1.2 tai tätä uudempaa. Varmista, että HTTPS-varmenteesi on voimassa, tai muuten tietoja ei lähetetä.,
- Palvelimen kuntotarkistukset: Palvelimen on vastattava HTTP GET -pyyntöihin koodilla ”200 OK” kuntotarkastuksia varten. HTTP GET-menetelmällä ei lähetetä tietoja. Sillä tarkistetaan vain päätepisteesi aktiivisuus.
Varausilmoitusten ja Webhook-virheiden hallinta
Lähetämme ilmoituksen jokaisesta varauspäivityksestä. Tapahtumat saatetaan toimittaa epäjärjestyksessä. Luo tarkka aikajana tapahtumista käyttämällä ”GenerateDat”-aikaleimaa. Jokainen ilmoitus sisältää täydellisen JSON-esityksen varauksesta kyseisenä ajankohtana.
Jos päätepisteesi alkaa toimia virheellisesti eikä palauta onnistumista ilmaisevia tilakoodeja kutsujamme vastaan, ilmoitamme sinulle sähköpostitse. Jos virheellinen toiminta jatkuu, webhook poistetaan lopullisen ilmoituksen jälkeen.
Sallittujen IP-osoitteiden lisääminen
Varmista onnistuneet Webhookien callback-kutsut sallimalla seuraavien IP-osoitteiden päästä läpi palomuuristasi:
- 34.243.166.60
- 52.18.11.99
- 63.34.80.48
- 54.194.0.85
- 2a05:d018:e 34:5300: :/56
Callback-kutsuja suorittavat palvelimet ovat kaksoispinoja, jotka tukevat sekä IPv4:ää että IPv6:tta. Jos lisäät verkkotunnukseesi sekä IPv4- että IPv6-osoitteet, callback-kutsu osoitetaan ensimmäiselle palvelimelle, joka vastaa.
JSON-muotoisia esimerkkejä
Esimerkkejä uusien varausten JSON-rakenteesta:
{
"version": "2.0",
"generatedAt": "2024-05-31T12:11:53.639+00:00",
"event": "new",
"propertyId": 1,
"bookingId": 26006,
"channelBookingId": null,
"bookingDate": "2024-05-31T12:09:16+00:00",
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"cancelled": false,
"eta": "10:00",
"totalAdults": 4,
"guest": {
"firstName": "John",
"lastName": "Doe",
"businessName": "Acme",
"address": "Fancy street",
"postcode": "11-111",
"city": "York",
"state": "NY",
"country": "US",
"phone": "+16033336666",
"email": "guest@email.com",
"passportNo": "XX11122223333",
"language": "en",
"message": "Additional comment added by guest"
},
"guestReference": "2103001",
"internalComment": null,
"couponCode": null,
"bookingSource": "Front desk",
"bookingIsCheckedIn": false,
"bookingIsCheckedOut": false,
"bookingIsConfirmed": true,
"customFields": [
{
"name": "Custom text field name",
"value": "text added by guest"
},
{
"name": "Custom checkbox unchecked",
"value": false
},
{
"name": "Custom checkbox checked",
"value": true
}
],
"rooms": [
{
"RoomTypeName": "Basic room",
"RoomTypeDescription": "Basic room",
"RoomName": "101",
"RoomId": 2,
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"adults": 2,
"quantity": 3,
"price": 100,
"roomTotal": 300,
"guestName": null,
"comment": null,
"ledgerAccount": null
},
{
"RoomTypeName": "Fancy room",
"RoomTypeDescription": "Fancy room",
"RoomName": "182",
"RoomId": 83,
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"adults": 2,
"quantity": 3,
"price": 100,
"roomTotal": 300,
"guestName": null,
"comment": null,
"ledgerAccount": null
}
],
"additionalItems": [
{
"description": "Breakfast",
"specificDate": null,
"quantity": 12,
"price": 20,
"itemTotal": 240,
"ledgerAccount": null
}
],
"bookedCategory": null,
"currency": "EUR",
"totalPrice": 840,
"totalSurcharges": 84,
"totalPriceIncludingSurcharges": 924,
"payments": [],
"invoices": []
}
Esimerkki JSON-rakenteesta käteiskuitin luomiseksi ja maksun soveltamiseksi laskuun:
{
"version": "2.0",
"generatedAt": "2024-05-31T12:15:23.895+00:00",
"event": "modified",
"propertyId": 1,
"bookingId": 26006,
"channelBookingId": null,
"bookingDate": "2024-05-31T12:09:16+00:00",
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"cancelled": false,
"eta": "10:00",
"totalAdults": 4,
"guest": {
"firstName": "John",
"lastName": "Doe",
"businessName": "Acme",
"address": "Fancy street",
"postcode": "11-111",
"city": "York",
"state": "NY",
"country": "US",
"phone": "+16033336666",
"email": "guest@email.com",
"passportNo": "XX11122223333",
"language": "en",
"message": "Additional comment added by guest"
},
"guestReference": "2103001",
"internalComment": null,
"couponCode": null,
"bookingSource": "Front desk",
"bookingIsCheckedIn": false,
"bookingIsCheckedOut": false,
"bookingIsConfirmed": true,
"customFields": [
{
"name": "Custom text field name",
"value": "text added by guest"
},
{
"name": "Custom checkbox unchecked",
"value": false
},
{
"name": "Custom checkbox checked",
"value": true
}
],
"rooms": [
{
"RoomTypeName": "Basic room",
"RoomTypeDescription": "Basic room",
"RoomName": "101",
"RoomId": 2,
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"adults": 2,
"quantity": 3,
"price": 100,
"roomTotal": 300,
"guestName": null,
"comment": null,
"ledgerAccount": null
},
{
"RoomTypeName": "Fancy room",
"RoomTypeDescription": "Fancy room",
"RoomName": "182",
"RoomId": 83,
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"adults": 2,
"quantity": 3,
"price": 100,
"roomTotal": 300,
"guestName": null,
"comment": null,
"ledgerAccount": null
}
],
"additionalItems": [
{
"description": "Breakfast",
"specificDate": null,
"quantity": 12,
"price": 20,
"itemTotal": 240,
"ledgerAccount": null
}
],
"bookedCategory": null,
"currency": "EUR",
"totalPrice": 840,
"totalSurcharges": 84,
"totalPriceIncludingSurcharges": 924,
"payments": [],
"invoices": [
{
"invoiceNumber": "41002",
"invoiceDate": "2024-06-01",
"dueDate": "2024-06-01",
"receiver": "Acme",
"address": [
"John Doe",
"Fancy street",
"York, NY 11-111",
"United States"
],
"roundingAmount": 0,
"invoiceTotal": 924,
"originInvoice": null,
"invoiceRows": [
{
"quantity": 3,
"price": 100,
"rowTotal": 300,
"ledgerAccount": "100",
"rowText": "Basic room",
"vatRate": 0,
"vatAmount": 0,
"bookingId": 26006
},
{
"quantity": 3,
"price": 100,
"rowTotal": 300,
"ledgerAccount": "100",
"rowText": "Fancy room",
"vatRate": 0,
"vatAmount": 0,
"bookingId": 26006
},
{
"quantity": 12,
"price": 20,
"rowTotal": 240,
"ledgerAccount": "200",
"rowText": "Breakfast",
"vatRate": 0,
"vatAmount": 0,
"bookingId": 26006
},
{
"quantity": 1,
"price": 84,
"rowTotal": 84,
"ledgerAccount": "300",
"rowText": "surcharge",
"vatRate": 0,
"vatAmount": 0,
"bookingId": 26006
}
],
"payments": [
{
"paymentId": 28,
"createdAt": "2024-05-31T12:15:09+00:00",
"valueDate": "2024-06-01",
"amount": 924,
"ledgerAccount": "3606",
"paymentReference": null,
"comment": null
}
]
}
]
}
Jos sinulla on kysyttävää tai tarvitset lisäapua, ota yhteyttä tukitiimiimme.