Este mensaje nos permite realizar el bloqueo del servicio de la última disponibilidad realizada.
En el caso de que se vaya a bloquear más de una habitación, será necesario realizar un bookRoom para cada una de ellas, haciendo referencia a la distribución que se está bloqueando mediante el identificador de la distribución (id), y debiendo indicar el bookingToken a partir de la segunda petición para poder ir añadiendo las habitaciones en el carrito virtual.
Endpoint: https://hotel.new.hotetec.com/webservice/integrations/pull/bookRoom
Mensaje de petición bookRoom
El mensaje está compuesto por los siguientes elementos:
Elemento | Obligatorio | Valores / Formato | Descripción |
sessionId | S | Alfanumérico | ID de la sesión generado |
languageCode | S | DE, EN, ES, FR, IT, NL, PT | Idioma en el que queremos recibir la respuesta.
Se utilizan los códigos ISO 639-1. Actualmente sólo se aceptan los indicados en valores. |
currency | S | EUR, USD, GBP, EGP, MXN, CHF, CUP | Divisa en la que queremos recibir los precios de la solicitud.
Se utilizan los códigos ISO 639-1. Actualmente sólo se aceptan las indicadas en valores. |
vendorCode | S | Alfanumérico | Código de proveedor/empresa de un conjunto de hoteles/establecimientos |
hotelCode | S | Alfanumérico | Código individual de un hotel/establecimiento |
checkInDate | S | Fecha + Hora | Fecha de entrada. Ejemplo: "2023-01-15T00:00:00.000Z” |
numberOfNights | S | Numérico | Número de noches de estancia. Ejemplo: "4” |
| |||
distribution | |||
id | S | Numérico | Indicaremos el identificador de la distribución que vamos a reservar. Se añadirá un identificador secuencial para cada una de las habitaciones del bloqueo, cada uno en diferentes mensajes. |
person | |||
age | S | Numérico | Definiremos la edad de cada ocupante en la reserva. A los adultos se les puede indicar una edad de 30 años por defecto, para los niños es obligatorio indicar la edad real en la fecha de estancia de la reserva, para poder tarificar correctamente. |
| |||
mealPlanCode | S | Alfanumérico | Código del régimen que se va a bloquear. |
roomCode | S | Alfanumérico | Código de la habitación. |
rateCode | S | Alfanumérico | Código de tarifa |
occupancyCode | S | Alfanumérico | Ocupación de la habitación que se va a bloquear. Debe indicarse en el formato devuelto en la disponibilidad y debe coincidir con el número de personas indicado en el nodo "person". Ejemplo: "O@2-0-0" |
Ejemplo de mensaje con todos los elementos cumplimentados (JSON):
{
"sessionId": " TES#20077#682164202862402",
"languageCode": "ES",
"currency": "EUR",
"vendorCode": "DEMOHTT",
"hotelCode": "30621",
"checkInDate": "2025-01-15T00:00:00.000Z",
"numberOfNights": "4",
"distribution": {
"id": 1,
"person": [
{ "age": 30 },
{ "age": 30 },
{ "age": 8 }
]
}],
"rateCode": "30006",
"roomCode": "DBL#SEA",
"mealPlanCode": "AI",
"occupancyCode": "O@2-1-0",
}
Mensaje de respuesta bookRoom
El mensaje está compuesto por los siguientes elementos:
Elemento | Descripción |
bookingToken | Identificador único del bloqueo. |
booking | |
reference | Localizador provisional de la reserva. |
dateCreation | Fecha de creación. Se utiliza fecha juliana. |
| |
hotel | |
code | Código del hotel/establecimiento |
name | Nombre completo del establecimiento |
chain | Cadena a la que pertenece el establecimiento |
| |
establishmentType | |
code | Código del tipo de establecimiento. (Ejemplo: HOTL) |
name | Descripción del tipo de establecimiento (Ejemplo: Hotel) |
| |
category | |
code | Código de la categoría (Ejemplo: 5*) |
name | Descripción de la categoría. (Ejemplo: Cinco estrellas) |
| |
address – country | |
code | Código del país (Ejemplo: ES) |
name | Descripción del país (Ejemplo: España) |
state | Tipificación adicional del árbol de destino |
county | Población del establecimiento |
province | Tipificación adicional del árbol de destino |
| |
address – location | |
code | Código de la zona geográfica. |
name | Descripción de la zona geográfica |
postalCode | Código postal del establecimiento |
adressText | Dirección del establecimiento |
| |
address - gps | |
latitude | Latitud |
longitude | Longitud |
| |
contact | Datos de contacto del establecimiento |
| |
reservationStatus | Estado de la reserva. |
operationalStatus | |
process | Informa sobre el estado en el proceso de reserva |
rate | Informa si la tarifa está disponible |
quota | Informa si el inventario está disponible. |
room | |
id | Identificador de la habitación. |
room | |
code | Código de la habitación. |
name | Nombre de la habitación |
| |
rate | |
code | Código de la tarifa |
name | Nombre de la tarifa |
| |
mealPlan | |
code | Código del régimen |
name | Nombre del régimen |
distribution | |
id | Identificador de la distribución de la habitación |
person | |
id | Identificador del pasajero |
type | Tipo de pax. Valores: Adult, Child, Baby |
age | Edad del pasajero indicada en la Disponibilidad. |
checkIn | Fecha de inicio de la reserva |
checkOut | Fecha fin de la reserva |
nights | Número de noches de estancia |
supplements | |
type | Código interno del tipo del suplemento. |
code | Código del suplemento en el sistema |
name | Nombre del suplemento aplicado en la habitación. |
dateFrom | Fecha de inicio de aplicación del suplemento. Se indica fecha juliana. |
dateTo | Fecha de fin de aplicación del suplemento. Se indica fecha juliana. |
amount | Importe del suplemento (en positivo) o descuento (en negativo). |
paymentOption | |
code | Código del importe a pagar. |
amountToPay | Importe a pagar. |
priceDetail: aquí se incluye el desglose de los diferentes suplementos, descuentos, comisiones, políticas comerciales, etc. | |
code | Código interno del tipo de desglose |
name | Nombre del desglose |
type | Tipo de desglose. Valores: Gift: regalo Breakdown: desglose de comisión Supplement: suplemento/descuento |
group | Grupo general al que pertenece el desglose. Valores: Sale Policy: política comercial Comission: comisión Supplement: suplemento |
optional | Indica si es opcional o no |
order | Indica en qué orden se aplica el desglose del precio |
amount | Importe del desglose de precio |
cancelPenaltyMode | Tipo de penalización por cancelación. |
| |
cancellationOption | |
fromDate | Desde que fecha hay gastos de cancelación. Se utiliza fecha juliana |
daysTo | Días que faltan para entrar en gastos. Se utiliza fecha juliana |
percentage | Porcentaje de gastos de cancelación |
amount | Importe de los gastos de cancelación |
| |
status | Estado de la reserva. |
baseAmount | Importe base de la reserva |
discountAmount | Descuentos aplicados en la reserva |
priceType | Tipo de precio. Valores: PVP, Net |
commissionAmount | Importe de comisión de la reserva |
commissionPercentage | Porcentaje de comisión de la reserva |
amount | Importe total de la reserva |
| |
guest | |
id | Identificador del pasajero de la reserva |
languageCode | Código del idioma de la respuesta |
commissionAmount | Importe de comisión de la reserva |
totalAmount | Importe total de la reserva |
currencyCode | Código de divisa de la reserva |
paymentOption | |
paymentorder | Modalidad de pago de la reserva. |
paymentType | Tipo de pago de la reserva. |
description | Descripción de la forma de pago |
paymentDate | Fecha de pago. Se indica fecha juliana |
amountToPay | Cantidad a pagar |
Ejemplo de mensaje (JSON):
{
"bookingToken": "dHqVDUY22HzhJ8QZnnbxfnSXxJ1025bXkRdhXVkk7FaQUlGjMhgs3F662k3ep7jyMyw5pfAw1Pw7QJKeCjqK6mh",
"booking": {
"reference": "TES241120RJNVCS",
"dateCreation": 1732112260571,
"hotel": {
"code": "53090",
"name": "Juana",
"establishmentType": {
"code": "HOTL",
"name": "Hotel"
},
"category": {
"code": "4*",
"name": "Cuatro estrellas"
},
"address": {
"country": {
"code": "ES",
"name": "ESPAÑA"
},
"county": "Alcudia",
"location": {
"code": "ES-46018",
"name": "Alcudia"
},
"parentLocation": {
"code": "ESBAL03",
"name": "MALLORCA"
},
"postalCode": "07965",
"addressText": "AV Test, 5",
"gps": {
"latitude": 39.83994084940381,
"longitude": 3.12696974690252
}
},
"contact": [
{
"phone": "9718888888",
"email": "[email protected]"
}
]
},
"reservationStatus": "Confirmed",
"operationalStatus": {
"process": "Creation",
"rate": "Available",
"quota": "Available"
},
"room": [
{
"id": 1,
"room": {
"code": "DBL#STD",
"name": "Doble Estándar"
},
"rate": {
"code": "31632",
"name": "FLEXIBLE"
},
"mealPlan": {
"code": "HB",
"name": "Media pensión"
},
"distribution": {
"id": 1,
"person": [
{
"id": 1,
"type": "Adult",
"age": 30
},
{
"id": 2,
"type": "Adult",
"age": 30
}
]
},
"checkIn": 1736035200000,
"checkOut": 1736380800000,
"nights": 4,
"supplements": [
{
"type": "SPS",
"code": "[EtT]SalePolicy(PpT)TESTHTT@73888",
"name": "TEST EB JUANA",
"dateFrom": 1736031600000,
"dateTo": 1736290800000,
"amount": -196.0
}
],
"paymentOption": [
{
"code": "Hotel#TESTHTT#14506",
"amountToPay": 364.0
},
{
"code": "Hotel#TESTHTT#10563",
"amountToPay": 364.0
}
],
"priceDetail": [
{
"code": "[EtT]Commission(PpT)TESTHTT@31632@TES@ClientCode@PVP",
"name": "FLEXIBLE - TES - ClientCode - TES",
"type": "Breakdown",
"group": "Commission",
"optional": false,
"order": 1,
"amount": 36.4
},
{
"code": "[EtT]SalePolicy(PpT)TESTHTT@73888",
"name": "TEST EB JUANA",
"type": "Supplement",
"group": "SalePolicy",
"optional": false,
"order": 0,
"amount": -195.9999996
}
],
"cancelPenaltyMode": "CancelPenalty",
"cancellationOption": [
{
"fromDate": 1732057200000,
"daysTo": -953,
"percentage": 5.0,
"amount": 18.2
},
{
"fromDate": 1735945200000,
"daysTo": 45,
"percentage": 100.0,
"amount": 364.0
}
],
"status": "Confirmed",
"baseAmount": 560.0,
"discountsAmount": -196.0,
"priceType": "PVP",
"commissionAmount": 36.4,
"commissionPercentage": 10.0,
"amount": 364.0
}
],
"cancellationOption": [
{
"fromDate": 1732057200000,
"daysTo": -953,
"percentage": 5.0,
"amount": 18.2
},
{
"fromDate": 1735945200000,
"daysTo": 45,
"percentage": 100.0,
"amount": 364.0
}
],
"guest": [
{
"id": 1
},
{
"id": 2
}
],
"languageCode": "ES",
"commissionAmount": 36.4,
"totalAmount": 364.0,
"currencyCode": "EUR"
},
"paymentOption": [
{
"paymentOrder": "ExternManagement",
"paymentType": "Credit",
"description": "Acordado",
"paymentDate": 1732057200000,
"amountToPay": 364.0
},
{
"paymentOrder": "Establishment",
"paymentType": "Cash",
"description": "Pago en el hotel PULL",
"paymentDate": 1736031600000,
"amountToPay": 364.0
}
]
}