Agregar un webhook de evento de reserva le da al hotel la posibilidad de recibir los detalles de la reserva en formato JSON a través de una URL.

Nota: Esto requiere algunos conocimientos básicos sobre cómo utilizar un webhook. Es posible que quieras consultar a tu desarrollador web si necesitas ayuda.

Un webhook de evento de reserva envía una callback a una URL determinada y se activa cada vez que se crea, modifica o cancela una reserva.

La función de webhook de evento de reserva se activa desde:

  • El motor de reservas de Sirvoy
  • El formulario de revisión de reserva
  • Reservas de canales de ventas

Se puede activar en Configuración -> Tu cuenta -> Webhook de evento de reserva.

El servidor receptor debe responder con el código de respuesta 200 OK; de lo contrario, la llamada se reintentará cada 30 minutos hasta 10 veces. Solo admitimos HTTPS usando TLS versión 1.2 y posteriores para asegurar la privacidad y confidencialidad. El certificado HTTPS también necesita ser válido, de otra manera no se enviará la información. Los detalles de la reserva se envían como POST con el JSON como el cuerpo de la solicitud.

Asegúrate también de que tu servidor responda a las solicitudes HTTP GET con 200 OK. Esto se usa como una revisión de reconocimiento, que se solicita de vez en cuando para asegurarse de que tu endpoint esté activo. Aunque ningún dato se te enviará usando HTTP GET.

Las callbacks serán hechas desde la siguiente gama de IPs. Si quieres restringir el tráfico a tu servidor, asegúrate que esta gama esté permitida en tu firewall:

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

Los servidores que hacen las callbacks son de pila doble, con conectividad tanto ipv4 como ipv6. Si agregas direcciones ipv4 e ipv6 a tu nombre de dominio, la callback del webhook se realizará al servidor que sea el primero en responder.

A continuación, se muestran algunos ejemplos de los datos generados en formato JSON cuando se crea una nueva reserva:

{
   "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":[
      
   ]
}

Así es como puede verse después de que se crea un recibo de caja y un pago se mueve a una factura: los pagos y las facturas que tiene esta reserva también se incluyen en la callback del webhook. Cualquier otro cambio también da como resultado una callback de webhook con los datos, y así es como se ve ahora el webhook del evento de reserva en este ejemplo:

{
   "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":""
            }
         ]
      }
   ]
}