¿En dónde puedo encontrarlo? Compañía >>> Componentes/Integraciones
¿Cómo configurar mis webhooks?
Sigue las siguientes instrucciones para configurar los webhooks desde tu panel TuriTop:
Paso 1: ve a la pestaña Compañía
Accede a tu panel TuriTop y navega a Compañía >>> Componentes/Integraciones >>> Webhooks:
Paso 2: introduce la URL
Aquí debes introducir una URL válida que redirija a un endpoint válido. Nuestro sistema enviará detalles específicos a este endpoint que dependerán de la acción seleccionada, como se describe en el siguiente paso.
El protocolo HTTPS es obligatorio. No intentes usar el HTTP estándar ya que no funcionará.
Paso 3: añade una firma (opcional)
La Firma te permite añadir una capa extra de seguridad. Puedes establecer cualquier clave en el panel de TuriTop, y cuando recibas notificaciones webhook, puedes verificar si contienen la misma clave. Si la clave falta o es incorrecta, no fue enviada por nosotros. Lee la sección Medidas de seguridad para conocer más sobre esto.
Paso 4: selecciona una acción
Una vez que hayas introducido una URL válida, tienes que seleccionar la acción que se realizará desde TuriTop al endpoint. Actualmente, tenemos las siguientes acciones disponibles. Haz clic en Acción, para ver las opciones:
Acciones disponibles
-
Todas las acciones: Envía una notificación para todas las acciones disponibles.
Acciones relacionadas a las reservas:
- Todas las acciones de reserva: Envía una notificación cada vez que se crea, elimina, anula o actualiza una reserva.
- Nueva reserva: Se activa cuando se crea una nueva reserva.
- Actualiza reserva: Se activa cuando se edita una reserva (mediante una llamada a la API o al back-office).
- Borrar reserva: Se activa cuando se borra una reserva.
- Desborrar reserva: Se activa cuando se restaura una reserva.
Acciones relacionadas a los eventos:
- Todas las notificaciones de disponibilidad: Envía una notificación para todos los cambios relacionados con la disponibilidad.
- Evento abierto: Se activa cuando un evento está disponible para su reserva.
- Evento cerrado: Se activa cuando un evento deja de estar disponible.
- Nuevo evento: Se activa cuando se crea un nuevo elemento.
- Evento eliminado: Se activa cuando se elimina un evento.
- El evento tiene baja disponibilidad: Se activa cuando quedan pocas plazas disponibles para un evento.
- El evento está lleno: Se activa cuando un evento alcanza su capacidad máxima.
- Disponibilidad del evento actualizada: Se activa cuando cambia la disponibilidad de un evento.
- La disponibilidad del evento aumento/disminuyó: Se activa cuando se ajusta la disponibilidad.
Acciones relacionadas a los productos:
-
All Product Notifications: Envía una notificación para cualquier cambio relacionado con unproducto.
-
Product disabled: Se activa cuando se desactiva un producto.
- Product enabled: Se activa cuando se habilita algún producto.
- Product Marketplace enabled: Se activa cuando se habilita algún producto en el Marketplace.
- Product Marketplace disabled: Se activa cuando se retira algún producto del Marketplace.
- Product updated: Se activa cuando se actualiza la información de un producto.
Todas las notificaciones webhook de producto se aplican sólo a tus propios productos. No incluyen los productos del Marketplace/reventa.
Acciones relacionadas a los tickets:
- All ticket notifications: Envía una notificación para cualquier cambio relacionado con los tickets.
- Ticket deleted: Se activa cuando se elimina un ticket.
- New ticket: Se activa cuando se crea un nuevo ticket.
- Ticket updated: Se activa cuando la configuración de un ticket se actualiza.
Si seleccionas Todas las acciones, se enviará un webhook para cualquier acción realizada (todas las acciones disponibles en la lista).
Paso 5: añade el Webhook a tu lista
El último paso es hacer clic en Añadir para agregar correctamente el nuevo webhook. Debería tener este aspecto:
Paso 6: pruebar Webhook
Una vez configurado el webhook, pruébalo haciendo clic en el botón Enviar webhook de prueba. Aparecerá una ventana emergente en la que deberás:
-
Introducir un Nº de reserva
-
Hacer click en Ok
Medidas de seguridad
Si necesitas un nivel extra de seguridad, puedes utilizar una Firma. Esta firma creará un Token JWT (https://jwt.io/) que añade autenticidad y registra la hora exacta en que se envió el webhook.
Para crear la firma, simplemente introduce 32 caracteres en el campo de firma cuando configures tu webhook. Se añadirá un nuevo campo llamado Token a cada llamada.
Para descodificar el token, utiliza la biblioteca JWT estándar (https://jwt.io/#libraries-io)para verificar que la petición webhook es válida y enviada por TuriTop.
A continuación, serás redirigido a tu aplicación o webhook tester. El webhook se enviará en formato POST y JSON.
Respuestas de los Webhook
El parámetro de action corresponde a la acción que seleccionó al añadir el webhook. Si se establece en Todas las acciones, recibirá todas las acciones enumeradas individualmente (no como "Todas").
Webhooks relacionados a las reservas
Los webhooks de tipo "booking" devuelven la acción y los mismos datos que el endpoint de la API /booking/getbooking.
Ejemplo de respuesta:
{ "action": "booking.delete", "agent_data": { "seller": "DP Agent Test" }, "agent_fee": "0", "archived": false, "cart_hash": "", "checked": false, "client_data": { "custom": "", "email": "", "id": "D586-250322-3_client_data", "name": "", "newsletter": "1", "phone": "" }, "created_data": { "created_by": "DP Agent Test" }, "currency": "EUR", "date_booking": 1742652300, "date_booking_iso8601": "2025-03-22T14:05:00+0000", "date_deleted": 1744032600, "date_deleted_iso8601": "2025-04-07T14:30:00+0100", "date_event": 1743757200, "date_event_iso8601": "2025-04-04T10:00:00+0100", "date_modified": 1744032600, "date_modified_iso8601": "2025-04-07T14:30:00+0100", "date_prebooking": 1742652313, "date_prebooking_iso8601": "2025-03-22T14:05:13+0000", "deleted": true, "gateway_fee": "0", "gift_certificate": "0", "hide_hour": false, "ip": "88.25.70.243", "language_code": "es", "location": "Spain, Zaragoza", "multi_client_hash": "", "notes": "", "payment_gateway": "", "payment_partial": "675.00", "payment_transaction": [], "pdf_download": "https://app.turitop.com/pdf/download/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjQwMjAwMDkwIiwiaWRfY29tcGFueSI6IjIiwidGVtcGxhdGUiOiJjb25maXJtIiwidXNlcklkZW50aXR5Ijp7ImlkIjpudWxsLCJhZG1pbiI6bnVsbH0sImlhdCI6MTc0NDAzMjYyMiwiZXhwIjoxNzUxODA4NjIyfQ.u0d1v7er1fbYspXPTShHIO_FurMYVzuTalU0BgvumgQ", "product_name": "Tour con bus 1", "product_short_id": "P30", "product_time_zone": "Europe/London", "promo_code": "", "reseller_fee": "0", "seller_company_name": "DP Test Español", "seller_company_short_id": "D586", "service_flow": "tour", "short_id": "D586-250322-3", "sold_data": { "seller": "DP Agent Test" }, "source": "backoffice", "status": "confirmed", "supplier_company_name": "DP Test Español", "supplier_company_short_id": "D586", "taxes": 0, "ticket_type_count": [ { "count": 9, "external_id": "", "id": 495177, "name": "Adulto", "price_per_ticket": "75.00", "seats": 1 }, { "count": 0, "external_id": "", "id": 495180, "name": "Niño", "price_per_ticket": "75.00", "seats": 1 } ], "total_price": "675.00", "verification_code": "https://app.turitop.com/qr/D586-250322-3/rd4pw61d", "verification_type": "QR_CODE" }
Event Webhooks
Los webhooks de tipo "event" devolverán los siguientes parámetros: acción (action), fecha del evento (event date), código del producto (product short ID), y zona horaria (time zone).
Ejemplo de respuesta:
{ "action": "event.close", "event_date": "2025-04-08 09:00", "product_short_id": "P1", "timezone": "Europe/London" }
Product Webhooks
Todas las notificaciones webhook de producto se aplican sólo a tus propios productos. No incluyen los productos del Marketplace/reventa.
Los webhooks de tipo "product" devuelven la acción y los mismos datos que el endpoint de la API /product/getproducts.
Ejemplo de respuesta:
{ "action": "product.disable", "product": { "company_categories": [], "coordinates": "28.533557755098922,-16.251378804677692", "country_code": "ES", "default_language": "es", "description": "", "disabled": true, "display_hours": "1", "duration": "480", "flow": "tour", "location_code": "AXO", "location_name": "A Baiuca", "marketplace": false, "name": "Test tour", "pricing_notes": "", "resellers": [ { "company_name": "Anaga Tours", "company_short_id": "T1271", "date_created": "2023-03-05 11:42:46", "id": "114644", "id_company": "21241", "logo": "T1271/logo/T1271_1662711215.png", "product_name": "Test tour", "product_short_id": "P21", "resell_pay_to": "reseller", "reselling_fee": "0.0000", "reselling_status": "accept" } ], "short_id": "P1", "show_closed_by_availability": false, "summary": "", "timezone": "Europe/London", "type": { "name": "Tour on land", "subtype": "Day tour" } } }
Ticket Webhooks
Los webhooks de tipo "ticket" devuelven la acción y datos similares al endpoint de la API /tickets/get
Ejemplo de respuesta:
{ "action": "ticket.new", "product": { "company_categories": [], "coordinates": "", "country_code": "ES", "default_language": "es", "description": "", "disabled": false, "display_hours": "1", "duration": "300", "flow": "tour", "location_code": "AXO", "location_name": "A Baiuca", "marketplace": true, "name": "Excursion test", "pricing_notes": "", "resellers": [], "short_id": "P25", "show_closed_by_availability": false, "summary": "", "timezone": "Europe/London", "type": { "name": "Actividades de invierno", "subtype": "Caminata sobre nieve" } }, "tickets": [ { "allow_agent_reseller": true, "close_min_tickets": 0, "external_id": "", "is_addon": false, "name": "Adulto", "order": 0, "price": "100.00", "required": false, "seats": 1, "ticket_notes": "Adulto €7 + Gastos de gestión €1,25", "tickets_max": 50, "tickets_min": 0, "visibility": "all" }, { "allow_agent_reseller": true, "close_min_tickets": 0, "external_id": "", "is_addon": false, "name": "Gastos de gestión", "order": 1, "price": "1.25", "required": false, "seats": 1, "ticket_notes": "", "tickets_max": 50, "tickets_min": 0, "visibility": "all" }, { "allow_agent_reseller": true, "close_min_tickets": 0, "external_id": "", "is_addon": false, "name": "Nuevo ticket", "order": 2, "price": "50.00", "required": false, "seats": 1, "ticket_notes": "", "tickets_max": 50, "tickets_min": 0, "visibility": "all" } ] }
Comentarios
0 comentarios
Inicie sesión para dejar un comentario.