L’ajout d’un lien de rappel HTTP (Webhook) pour les réservations donne à l’hôtel la possibilité de recevoir les détails de la réservation au format JSON via une URL.

Note: Cela nécessite quelques connaissances de base sur l’utilisation d’un lien de rappel HTTP (Webhook). Vous pouvez consulter votre développeur web si vous avez besoin d’aide.

Un lien de rappel HTTP (Webhook) pour une réservation envoie un rappel à une URL donnée et est déclenché chaque fois qu’une réservation est créée, modifiée ou annulée.

La fonction de lien de rappel HTTP (Webhook) de l’événement de réservation est déclenchée a partir :

  • Le moteur de réservation Sirvoy
  • Le formulaire « Vérifier votre réservation ».
  • Réservations dans les canaux de vente

Il peut être activé dans Paramètres -> Votre compte -> Lien de rappel HTTP (Webhook) pour les réservations.

Le serveur récepteur doit répondre avec le code de réponse 200 OK, sinon l’appel sera relancé toutes les 30 minutes jusqu’à 10 fois. Nous ne prenons en charge que le protocole HTTPS (TLS version 1.2 et supérieure) afin de garantir la protection de la vie privée et la confidentialité. Le certificat HTTPS doit également être valide, sinon aucune donnée ne sera envoyée. Les données de réservation sont envoyées sous forme de POST avec le JSON comme corps de la demande.

Assurez-vous également que votre serveur répondra aux demandes ‘HTTP GET’ par ‘200 OK’. Il s’agit d’une vérification qui est appelée de temps en temps pour s’assurer que votre point de terminaison est actif. Mais aucune donnée ne vous sera jamais transmise par ‘HTTP GET’.

Les rappels HTTP (Webhook) seront effectués à partir des plages d’adresses IP ci-dessous. Si vous voulez restreindre le trafic vers votre serveur, toutes les plages ci-dessous doivent être autorisées dans votre pare-feu :

  • 34.243.166.60
  • 52.18.11.99
  • 63.34.80.48
  • 54.194.0.85
  • 2a05:d018:e34:5300::/56

Les serveurs qui effectuent les rappels sont à double pile, avec une connectivité ipv4 et ipv6. Si vous ajoutez des adresses ipv4 et ipv6 à votre nom de domaine, le lien de rappel HTTP (Webhook) sera effectué vers le serveur qui est le premier à répondre.

Vous trouverez ci-dessous quelques exemples de données générées au format JSON lors de la création d’une nouvelle réservation :

{
   "version":"1.0",
   "callbackId":2464764,
   "generatedTime":"2021-09-08T11:41:06+00:00",
   "event":"new",
   "propertyId":1,
   "bookingId":26006,
   "channelBookingId":null,
   "bookingDate":"2021-09-08T11:37:42+00:00",
   "arrivalDate":"2021-09-08",
   "departureDate":"2021-09-10",
   "cancelled":false,
   "eta":null,
   "totalAdults":2,
   "guest":{
      "firstName":"John",
      "lastName":"Doe",
      "businessName":"Acme Corporation",
      "address":"123 Main St",
      "postcode":"17101",
      "city":"AnyTown",
      "state":"DE",
      "country":"US",
      "phone":"+17184547453",
      "email":"john.doe@mailservice.us",
      "passportNo":null,
      "language":"en",
      "message":"Your hotel looks nice :)"
   },
   "guestReference":null,
   "internalComment":null,
   "couponCode":null,
   "bookingSource":"Front desk",
   "bookingIsProvisional":false,
   "bookingProvisionalId":null,
   "bookingIsCheckedIn":false,
   "bookingIsCheckedOut":false,
   "customFields":[
      {
         "name":"Custom field",
         "value":"custom field text filled by guest"
      },
      {
         "name":"Checkbox",
         "value":true
      },
      {
         "name":"new checkbox",
         "value":false
      }
   ],
   "rooms":[
      {
         "RoomTypeName":"Basic room",
         "RoomTypeDescription":"As basic as it gets, with a small window included.",
         "RoomName":"110",
         "arrivalDate":"2021-09-08",
         "departureDate":"2021-09-10",
         "adults":2,
         "quantity":2,
         "price":100,
         "roomTotal":200,
         "guestName":null,
         "comment":null,
         "ledgerAccount":null
      }
   ],
   "additionalItems":[
      {
         "description":"Cleaning Fee",
         "specificDate":null,
         "quantity":1,
         "price":0,
         "itemTotal":0,
         "ledgerAccount":null
      }
   ],
   "bookedCategory":null,
   "currency":"EUR",
   "totalPrice":200,
   "totalSurcharges":20,
   "totalPriceIncludingSurcharges":220,
   "payments":[
      
   ],
   "invoices":[
      
   ]
}

Voici comment cela peut se présenter après la création d’un reçu de caisse et le transfert d’un paiement vers une facture – les paiements et les factures de cette réservation sont également inclus dans le lien de rappel HTTP (Webhook). Tout autre changement entraîne également un rappel du lien de rappel HTTP (Webhook) avec les données, et c’est ainsi que se présente maintenant le lien de rappel de réservation dans cet exemple :

{
   "version":"1.0",
   "callbackId":2464765,
   "generatedTime":"2021-09-08T11:45:01+00:00",
   "event":"modified",
   "propertyId":1,
   "bookingId":26006,
   "channelBookingId":null,
   "bookingDate":"2021-09-08T11:37:42+00:00",
   "arrivalDate":"2021-09-08",
   "departureDate":"2021-09-10",
   "cancelled":false,
   "eta":null,
   "totalAdults":2,
   "guest":{
      "firstName":"John",
      "lastName":"Doe",
      "businessName":"Acme Corporation",
      "address":"123 Main St",
      "postcode":"17101",
      "city":"AnyTown",
      "state":"DE",
      "country":"US",
      "phone":"+17184547453",
      "email":"john.doe@mailservice.us",
      "passportNo":null,
      "language":"en",
      "message":"Your hotel looks nice :)"
   },
   "guestReference":null,
   "internalComment":null,
   "couponCode":null,
   "bookingSource":"Front desk",
   "bookingIsProvisional":false,
   "bookingProvisionalId":null,
   "bookingIsCheckedIn":false,
   "bookingIsCheckedOut":false,
   "customFields":[
      {
         "name":"Custom field",
         "value":"custom field text filled by guest"
      },
      {
         "name":"Checkbox",
         "value":true
      },
      {
         "name":"new checkbox",
         "value":false
      }
   ],
   "rooms":[
      {
         "RoomTypeName":"Basic room",
         "RoomTypeDescription":"As basic as it gets, with a small window included.",
         "RoomName":"110",
         "arrivalDate":"2021-09-08",
         "departureDate":"2021-09-10",
         "adults":2,
         "quantity":2,
         "price":100,
         "roomTotal":200,
         "guestName":null,
         "comment":null,
         "ledgerAccount":null
      }
   ],
   "additionalItems":[
      {
         "description":"Cleaning Fee",
         "specificDate":null,
         "quantity":1,
         "price":0,
         "itemTotal":0,
         "ledgerAccount":null
      }
   ],
   "bookedCategory":null,
   "currency":"EUR",
   "totalPrice":200,
   "totalSurcharges":20,
   "totalPriceIncludingSurcharges":220,
   "payments":[
      
   ],
   "invoices":[
      {
         "invoiceNumber":"41001",
         "invoiceDate":"2021-09-08",
         "dueDate":"2021-09-08",
         "receiver":"Acme Corporation",
         "address":[
            "John Doe",
            "123 Main St",
            "AnyTown, DE 17101",
            "United States"
         ],
         "roundingAmount":0,
         "invoiceTotal":220,
         "originInvoice":null,
         "invoiceRows":[
            {
               "quantity":2,
               "price":100,
               "rowTotal":200,
               "ledgerAccount":"3010",
               "rowText":"Basic room",
               "vatRate":0,
               "vatAmount":0
            },
            {
               "quantity":1,
               "price":20,
               "rowTotal":20,
               "ledgerAccount":"sur1",
               "rowText":"10",
               "vatRate":0,
               "vatAmount":0
            }
         ],
         "payments":[
            {
               "amount":220,
               "ledgerAccount":"",
               "paymentReference":null,
               "comment":""
            }
         ]
      }
   ]
}