Cómo reservar una actividad
Después de confirmar la disponibilidad y seleccionar una opción de producto, utilice el punto final de reserva para crear una reserva. Este punto final requiere información del viajero, respuestas a preguntas sobre reservas y detalles de pago.
Punto final
POST {{api_host}}/api/ext/activity/booking
encabezados
| Encabezado | Requerido | Descripción |
|---|
x-api-key | Sí | Su clave API de Xeni |
Content-Type | Sí | application/json |
Cuerpo de solicitud
| Parámetro | Tipo | Requerido | Descripción |
|---|
productCode | cadena | Sí | El código de producto de la actividad. |
bookingId | cadena | Sí | Su propio ID de seguimiento único para esta reserva. |
travelDate | cadena | Sí | Fecha de viaje en formato YYYY-MM-DD. |
startTime | cadena | Condicional | Requerido si la actividad tiene franjas horarias específicas. Formato: HH:MM. |
productOptionCode | cadena | Sí | El código de opción del producto de la respuesta de disponibilidad (por ejemplo, "TG1"). |
paxMix | matriz | Sí | Grupos de viajeros por franja de edad (mismo formato que solicitud de disponibilidad). |
bookerInfo | objeto | Sí | Nombre de la persona que realiza la reserva. |
communication | objeto | Sí | Información de contacto para la reserva. |
bookedCurrency | cadena | Sí | Código de moneda para la reserva (por ejemplo, "USD"). |
amount | número | Sí | Importe total de la reserva en la moneda especificada. |
bookingQuestionAnswers | matriz | No | Respuestas a preguntas de reserva requeridas. |
languageGuide | objeto | No | Preferencia de idioma y guía para la actividad. |
Objeto de información del reservante
| Parámetro | Tipo | Requerido | Descripción |
|---|
firstName | cadena | Sí | El nombre de Booker. |
lastName | cadena | Sí | El apellido de Booker. |
Objeto de comunicación
| Parámetro | Tipo | Requerido | Descripción |
|---|
email | cadena | Sí | Dirección de correo electrónico de contacto. |
phone | cadena | Sí | Número de teléfono de contacto. |
Respuestas a preguntas sobre reservas
La matriz bookingQuestionAnswers le permite proporcionar respuestas a las preguntas requeridas por el proveedor de la actividad. Cada objeto de respuesta tiene los siguientes campos:
| Parámetro | Tipo | Requerido | Descripción |
|---|
question | cadena | Sí | El identificador de la pregunta. |
answer | cadena | Sí | El valor de la respuesta. |
unit | cadena | No | El tipo de unidad para la respuesta (por ejemplo, "LOCATION_REFERENCE" para puntos de recogida). |
travelerNum | entero | No | El número de viajero al que se aplica esta respuesta (indexado en 1). |
Tipos de preguntas comunes
| Pregunta | Descripción |
|---|
PICKUPPOINT | Lugar de recogida para actividades de recogida en el hotel. Utilice unit: "LOCATIONREFERENCE" con la referencia de ubicación como respuesta. |
AGEBAND | Franja de edad del viajero (p. ej., "ADULT"). |
FULLNAMESFIRST | Nombre de un viajero específico. |
FULLNAMESLAST | Apellido de un viajero concreto. |
Objeto de guía de idioma
| Parámetro | Tipo | Requerido | Descripción |
|---|
language | cadena | Sí | Código de idioma (por ejemplo, "en"). |
legacyGuide | cadena | Sí | Identificador de guía heredado (por ejemplo, "en/SERVICE_GUIDE"). |
type | cadena | Sí | Tipo de guía (por ejemplo, "GUIDE"). |
Solicitud de ejemplo
JSON
{
"productCode": "12345ABC",
"bookingId": "MY-BOOKING-001",
"travelDate": "2026-04-15",
"startTime": "09:00",
"productOptionCode": "TG1",
"paxMix": [
{
"ageBand": "ADULT",
"numberOfTravelers": 2
}
],
"bookerInfo": {
"firstName": "Jane",
"lastName": "Smith"
},
"communication": {
"email": "jane.smith@example.com",
"phone": "+1-555-123-4567"
},
"bookedCurrency": "USD",
"amount": 450,
"bookingQuestionAnswers": [
{
"question": "PICKUP_POINT",
"answer": "LOC-12345",
"unit": "LOCATION_REFERENCE"
},
{
"question": "FULLNAMESFIRST",
"answer": "Jane",
"travelerNum": 1
},
{
"question": "FULLNAMESLAST",
"answer": "Smith",
"travelerNum": 1
},
{
"question": "FULLNAMESFIRST",
"answer": "John",
"travelerNum": 2
},
{
"question": "FULLNAMESLAST",
"answer": "Smith",
"travelerNum": 2
}
],
"languageGuide": {
"language": "en",
"legacyGuide": "en/SERVICE_GUIDE",
"type": "GUIDE"
}
}
Notas de uso
- El
bookingId es su identificador único para rastrear esta reserva en su sistema. Debe ser único en todas sus reservas. - El campo
startTime solo es obligatorio cuando la respuesta de disponibilidad incluye múltiples intervalos de tiempo. Si la actividad no tiene horarios de inicio específicos, puedes omitir este campo. - El
amount debe coincidir con el precio devuelto por el punto final de disponibilidad. Los importes no coincidentes harán que la reserva fracase. - Los
bookingQuestionAnswers varían según la actividad. Algunas actividades requieren puntos de recogida, nombres de viajeros o franjas de edad. Las preguntas específicas requeridas las determina el proveedor de la actividad. - Si la actividad incluye la recogida en el hotel (
isPickupIncluded: true de la respuesta de disponibilidad), normalmente deberá proporcionar una respuesta PICKUP_POINT con una referencia de ubicación.
Próximos pasosDespués de crear una reserva, puedes recuperar sus detalles en cualquier momento. Consulte Cómo recuperar detalles de la reserva de actividades.