Cómo mantener y confirmar una reserva de resort
La API de Resorts utiliza un proceso de reserva de dos pasos: primero crea una retención en la reserva y luego la confirma. Esto le brinda una ventana para finalizar el pago o realizar una validación adicional antes de confirmar la reserva.
Paso 1: Crear una reserva
Punto final
POST {{apihost}}/resorts/api/v2/itineraries?token={token}&recommendationid={recommendation_id}
Encabezados requeridos
| Encabezado | Valor | Requerido |
|---|---|---|
Content-Type | application/json | Sí |
x-api-key | Su clave API | Sí |
x-correlation-id | Identificador de correlación único | Sí |
Parámetros de consulta
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
token | cadena | Sí | El token específico de la habitación de la respuesta de disponibilidad o precio |
recommendation_id | cadena | Sí | El ID de recomendación de los resultados de búsqueda |
Cuerpo de solicitud
{
"property_id": "RST-98765",
"checkin": "2026-04-01",
"checkout": "2026-04-07",
"total_rate": 1710,
"currency": "USD",
"action": "CONFIRM",
"communication_details": {
"email": "guest@example.com",
"phone": "+1-555-123-4567"
},
"traveler": {
"first_name": "Jane",
"middle_name": "",
"last_name": "Doe",
"address": "456 Palm Avenue",
"city": "Los Angeles",
"state": "CA",
"zip_code": "90001",
"country": "US",
"email": "guest@example.com",
"phone": "+1-555-123-4567"
}
}Campos del cuerpo de la solicitud
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
propertyid | cadena | Sí | El ID de propiedad |
checkin | cadena | Sí | Fecha de entrada en formato YYYY-MM-DD |
checkout | cadena | Sí | Fecha de salida en formato YYYY-MM-DD |
totalrate | número | Sí | La tarifa total confirmada desde el punto final de fijación de precios. Debe coincidir exactamente. |
currency | cadena | Sí | Código de moneda ISO 4217 de tres letras |
action | cadena | Sí | Debe ser "CONFIRM" |
communicationdetails.email | cadena | Sí | Dirección de correo electrónico para confirmaciones de reservas |
communicationdetails.phone | cadena | Sí | Número de teléfono para comunicaciones de reservas |
traveler.firstname | cadena | Sí | Nombre del huésped |
traveler.middlename | cadena | No | Segundo nombre del huésped (puede ser una cadena vacía) |
traveler.lastname | cadena | Sí | Apellido del huésped |
traveler.address | cadena | Sí | Dirección del huésped |
traveler.city | cadena | Sí | Ciudad del huésped |
traveler.state | cadena | Sí | Estado o provincia del huésped |
traveler.zipcode | cadena | Sí | Código postal del huésped |
traveler.country | cadena | Sí | Código de país del huésped |
traveler.email | cadena | Sí | Dirección de correo electrónico del huésped |
traveler.phone | cadena | Sí | Número de teléfono del huésped |
Ejemplo de respuesta: retención creada
{
"status": 200,
"data": {
"reference_number": "XRN-2026040100123",
"status": "HOLD"
}
}Ejemplo de respuesta: reserva confirmada inmediatamente
En algunos casos, la reserva podrá confirmarse inmediatamente sin pasar por un estado de espera:
{
"status": 200,
"data": {
"reference_number": "XRN-2026040100123",
"status": "CONFIRMED"
}
}Error: Tarifa no coincidente
Si el total_rate de su solicitud no coincide con el precio confirmado, la API devuelve un error 400:
{
"message": "Total rate does not match the confirmed price",
"status": 400
}Utilice siempre el valor totalRate del punto final de confirmación de precios para evitar este error.
Paso 2: Confirmar la retención
Si la reserva se creó con un estado "HOLD", deberá confirmarlo explícitamente para finalizar la reserva.
Punto final
PUT {{apihost}}/resorts/api/v2/itineraries?referencenumber={reference_number}&status=CONFIRM
Encabezados requeridos
| Encabezado | Valor | Requerido |
|---|---|---|
Content-Type | application/json | Sí |
x-api-key | Su clave API | Sí |
x-correlation-id | Identificador de correlación único | Sí |
Parámetros de consulta
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
reference_number | cadena | Sí | El número de referencia de la reserva de la respuesta de retención |
status | cadena | Sí | Debe ser "CONFIRM" |
Cuerpo de solicitud
El cuerpo de la solicitud debe estar vacío.
Ejemplo de respuesta
{
"status": 200,
"data": {
"reference_number": "XRN-2026040100123",
"status": "CONFIRMED"
}
}Error: Estado de retención no válido
Si la reserva no se encuentra actualmente en un estado HOLD (por ejemplo, ya ha sido confirmada o liberada), la API devuelve un error 417:
{
"message": "Booking is not in HOLD state",
"status": 417
}Flujo de reserva completo
Aquí está la secuencia completa desde la búsqueda hasta la reserva confirmada:
- Autocompletar: obtiene el código de región del destino.
- Búsqueda de propiedades: busque complejos turísticos disponibles y obtenga un
recommendation_id. - Disponibilidad: consulta la disponibilidad de habitaciones y obtén un
token. - Precio: confirme la tarifa final utilizando
tokenyrecommendation_id. - Reserva: cree una reserva con los
total_rate,tokenconfirmados y los detalles del viajero. - Confirmar: si el estado de la respuesta es
"HOLD", confirme la reserva para finalizarla.
Mejores prácticas- Confirma siempre el precio primero: nunca crees una reserva utilizando tarifas de la respuesta de búsqueda o disponibilidad. Utilice siempre la tarifa devuelta por el punto final de fijación de precios.
- Manejar ambos estados: su integración debe manejar las respuestas
"HOLD"y"CONFIRMED"desde el punto final de retención. Si el estado es"CONFIRMED", no es necesario realizar ninguna otra acción. - Confirmar de inmediato: las retenciones tienen un límite de tiempo. Confirme la reserva tan pronto como se complete su proceso de pago o validación.
- Guarde el número de referencia:
reference_numberes su identificador principal para todas las operaciones posteriores (confirmar, liberar, recuperar).
Artículo siguiente: Cómo cancelar una retención de resort