Reservas
Tabla de Contenidos¶
Introducción¶
En este artículo hablamos sobre las peticiones de la API relacionadas con los Bookings.
Procesar un booking¶
El endpoint se encarga de verificar la creación/actualización de la reserva en cuestión, así como de las estancias, contactos asociados.
Es necesario que el apiuser posea el permiso "bookings" para la utilización de este endpoint.
- Endpoint:
https://app.hoteldatahub.io/api/v1/bookings/ - Swagger:
https://app.hoteldatahub.io/swagger/#/bookings
Casos de uso¶
El endpoint para la gestión de reservas resulta de gran utilidad para incorporar nuevas reservas en Fideltour procedentes de distintas fuentes. Para el caso de reservas ya existentes, permite ampliar la información contenida en su ficha enriqueciendo así la calidad de la base de datos. Múltiples orígenes de datos permiten obtener distinta información que después se centraliza en Fideltour.
Métodos disponibles¶
| Método | Endpoint |
|---|---|
| POST | https://app.hoteldatahub.io/api/v1/bookings/ |
Tabla de parámetros¶
Booking¶
| Clave | Tipo | Obligatorio | Descripción |
|---|---|---|---|
hotel_chain |
String | Sí | Código de la empresa. Proporcionado por HotelDataHub. |
external_object_id |
String | Sí | Identificador externo de la reserva en HotelDataHub |
date |
Datetime (YYYY-MM-DDTHH:MM:SS) | Sí | Fecha de creación |
entrance |
Date (YYYY-MM-DD) | Sí | Fecha de entrada |
departure |
Date (YYYY-MM-DD) | Sí | Fecha de salida |
localizer |
String | Sí | Localizador |
hotel |
Integer | Sí | Identificador del hotel. Proporcionado por HotelDataHub. |
agency |
String | No | Nombre de la agencia |
amount |
Float | No | Importe total |
currency |
String | No | Moneda en ISO 4217 |
status |
Integer | No | Estado: 1 = Anulado 2 = Confirmado 3 = Pendiente 4 = Cancelado 5 = No show 6 = Modificado 7 = Cotización 8 = Estancia 9 = Salida |
input_channel |
Integer | No | Canal de entrada del movimiento: 0 = Teléfono 1 = Web 2 = App 3 = Wifi 4 = PMS 5 = API 6 = Import 7 = BE 8 = Chatbot 9 = Concierge 10 = Call center 11 = IBE (BE ad-hoc) 12 = Channel manager 14 = PMS Restaurant 15 = PMS Spa 17 = BE Restaurant 18 = BE Spa 19 = Connector HUB 20 = Digital key platform 21 = CRM corporativo 22 = Social media form |
regime |
String | No | Nombre del tipo de regimen |
room_type |
String | No | Nombre del tipo de habitación |
fare_type |
String | No | Nombre del tipo de tarifa |
offer |
String | No | Nombre de la oferta |
event_type |
String | No | Nombre del tipo de evento |
package |
String | No | Nombre del paquete |
category |
String | No | Nombre de la categoría (segmento) |
url |
String (máx. 2048 caracteres) | No | Permite enviar una URL asociada a la reserva |
notes |
String (máx. 1024 caracteres) | No | Comentarios sobre la reserva |
tags |
List[String] | No | Listado de etiquetas asociadas a la reserva |
stays |
List[Stay] | Sí | Consultar tabla de Stay abajo |
extras |
List[Extra] | No | Consultar tabla de Extra abajo |
Stay¶
Nota: Para temas de comodidad, campos ya presentes en el booking con el mismo valor en el stay se pueden omitir, de esta forma el stay inferirá dichos valores del booking.
| Clave | Tipo | Obligatorio | Descripción |
|---|---|---|---|
hotel_chain |
String | Sí | Código de la empresa. Proporcionado por HotelDataHub. |
external_object_id |
Integer | Sí | Identificador en HotelDataHub |
date |
Datetime (YYYY-MM-DDTHH:MM:SS) | Sí | Fecha de creación |
entrance |
Date (YYYY-MM-DD) | Sí | Fecha de entrada |
departure |
Date (YYYY-MM-DD) | Sí | Fecha de salida |
localizer |
String | Sí | Localizador |
hotel |
Integer | Sí | Identificador del hotel. Proporcionado por HotelDataHub. |
agency |
String | No | Nombre de la agencia |
amount |
Float | No | Importe total |
currency |
String | No | Moneda en ISO 4217 |
status |
Integer | No | Estado del movimiento: 1 = Anulado 2 = Confirmado 3 = Pendiente 4 = Cancelado 5 = No show 6 = Modificado 7 = Cotización 8 = Estancia 9 = Salida |
room |
String | No | Número de habitación |
adults |
Integer | No | Cantidad de adultos en el movimiento |
juniors |
Integer | No | Cantidad de juniors en el movimiento |
children |
Integer | No | Cantidad de niños en el movimiento |
babies |
Integer | No | Cantidad de bebés en el movimiento |
regime |
String | No | Nombre del tipo de regimen |
contracted_regime |
String | No | Régimen contratado originalmente |
upgraded_regime |
String | No | Régimen asignado tras upgrade |
room_type |
String | No | Nombre del tipo de habitación |
contracted_room_type |
String | No | Tipo de habitación contratada |
upgraded_room_type |
String | No | Tipo de habitación asignada tras upgrade |
fare_type |
String | No | Nombre del tipo de tarifa |
offer |
String | No | Nombre de la oferta |
event_type |
String | No | Nombre del tipo de evento |
package |
String | No | Nombre del paquete |
category |
String | No | Nombre de la categoría (segmento) |
url |
String (máx. 2048 caracteres) | No | Permite enviar una URL asociada a la estancia |
notes |
String (máx. 1024 caracteres) | No | Comentarios sobre la estancia |
guests |
List[Guest] | Sí | Consultar tabla de Guest abajo |
Extra¶
| Clave | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id |
String | Sí | Id del Extra |
localizer |
String | Sí | Localizer del extra |
name |
String | Sí | Nombre del extra |
date |
Datetime (YYYY-MM-DDTHH:MM:SS) | No | Fecha de creación del extra |
start |
Date (YYYY-MM-DD) | No | Fecha de inicio del extra |
end |
Date (YYYY-MM-DD) | No | Fecha de finalización del extra |
amount |
Numérico | No | Total del extra |
currency |
String | No | Moneda de pago del extra |
Guest¶
| Clave | Tipo | Obligatorio | Descripción |
|---|---|---|---|
email |
String | Sí | Campo único en la DB de Fideltour, usado como identificador del huésped |
external_object_id |
String | No | Identificador externo del huésped |
is_owner |
Booleano | No | Indica si el huésped principal de la reserva |
name |
String | No | Nombre |
surname |
String | No | Apellidos |
phone |
String | No | Teléfono |
birthday |
Date (YYYY-MM-DD) | No | Fecha de nacimiento |
gender |
Integer | No | Género: 0 = no especificado (default) 1 = hombre 2 = mujer 3 = no binario 4 = género fluido 5 = prefiere no decirlo |
address |
String | No | Dirección |
post_code |
String | No | Código postal |
zone |
String | No | Nombre de la zona |
town |
String | No | Nombre de la ciudad |
province |
String | No | Nombre de la provincia |
country |
String | No | ISO 3166-1 alpha-2 |
language |
String | No | ISO 639-1 Code |
identification_document_type |
Numérico | No | Tipo de documento de identidad: 0 = Otros 1 = DNI 2 = NIE 3 = Pasaporte |
identification_number |
String | No | Número de documento de identidad |
business_name |
String | No | Nombre de la empresa |
work_place |
String | No | Cargo empresarial |
business_address |
String | No | Dirección de la empresa |
fiscal_address |
String | No | Dirección fiscal |
url |
String (máx. 2048 caracteres) | No | URL asociada al huésped |
notes |
String | No | Notas |
custom_tags |
List[String] | No | Listado formado por nombres de etiquetas |
custom_fields |
Objeto | No | Diccionario clave-valor con campos personalizados del contacto |
subscribed |
Booleano | No | Suscrito a comunicaciones comerciales. true = suscrito, false = no suscrito (por defecto) |
accept_terms |
Booleano | No | Acepta los términos y condiciones |
accept_personalized_communications |
Booleano | No | Acepta comunicaciones comerciales personalizadas |
accept_sms |
Booleano | No | Acepta comunicaciones comerciales por SMS |
accept_webpush |
Booleano | No | Acepta notificaciones web push |
accept_whatsapp |
Booleano | No | Acepta comunicaciones comerciales por WhatsApp |
subscribed_datetime |
Datetime (YYYY-MM-DDTHH:MM:SS) | No | Fecha y hora de la suscripción |
opt_in |
String | No | Tipo de opt-in: • S = Simple opt-in• D = Doble opt-in• P = Doble opt-in pendiente |
loyalty_subscribed |
Booleano | No | Si true, registra al huésped en el programa de fidelización |
loyalty_unsubscribed |
Booleano | No | Si true, da de baja al huésped del programa de fidelización |
loyalty_datetime |
Datetime (YYYY-MM-DDTHH:MM:SS) | No | Fecha y hora de alta en el programa de fidelización |
loyalty_id |
String | No | Número de tarjeta del programa de fidelización |
loyalty_level |
String | No | Identificador del nivel de fidelización |
loyalty_nights |
Integer | No | Total de noches acumuladas en el programa |
loyalty_bookings |
Integer | No | Total de reservas acumuladas en el programa |
loyalty_last_booking |
Date (YYYY-MM-DD) | No | Fecha de la última reserva en el programa |
Ejemplos¶
A continuación mostramos un ejemplo de procesamiento de reserva:
Petición (POST)¶
Protocolo: HTTP/1.1
Método: POST
Endpoint: https://app.hoteldatahub.io/api/v1/bookings/
Headers:
Content-Type: application/json
Authorization: Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Body:
{
"hotel": 2293,
"hotel_chain": "6NOK",
"date": "2025-11-27T10:08:08",
"entrance": "2026-10-02",
"departure": "2026-10-04",
"localizer": "91764088833/6",
"external_object_id": "12345726",
"agency": "Empresa de prueba",
"offer": "Black Friday",
"category": "Adultos consumistas",
"amount": 280,
"currency": "EUR",
"input_channel": 4,
"status": 2,
"stays": [
{
"entrance": "2026-10-02",
"departure": "2026-10-04",
"localizer": "91764088833/6",
"external_object_id": "123456112",
"amount": 280,
"currency": "EUR",
"room": "0A Doble 2 camas",
"room_type": "Habitación Doble",
"regime": "Alojamiento",
"adults": 2,
"children": 0,
"status": 2,
"guests": [
{
"id": "3183465",
"name": "BETTINA",
"is_owner": true,
"surname": "STROBEL",
"email": "bettinastrobel@web.de",
"phone": "0049772691980",
"gender": 2,
"language": "es",
"birthday": "1990-12-12",
"post_code": "07009",
"notes": "",
"country": "DE",
"custom_tags": [],
"subscribed": false
}
]
}
]
}