Download OpenAPI specification:
El presente documento define la funcionalidad y especificaciones básicas para hacer uso del API público de Civitatis relativo a la reserva de actividades y traslados.
El objetivo de este documento es proporcionar a agentes externos información relativa al funcionamiento del API, con el fin de evaluar y desarrollar la integración en su sitio web.
Civitatis provee de un interfaz de programación de aplicaciones (API) que proporciona acceso a información y funcionalidad relacionada con la representación y reserva de los productos que ofrece. A continuación se detalla el flujo completo de reserva y los recursos disponibles.
Se listan los posibles códigos de respuesta a continuación
Cuando se recibe este código, significa que la solicitud ha sido bloqueada por el WAF ( Firewall de Aplicaciones Web ) debido a su naturaleza maliciosa o sospechosa.
Este código indica que la solicitud ha sido bloqueada por el CDN al superar el límite máximo de peticiones por segundo. Actualmente, el límite está configurado en 20 peticiones por segundo durante 1 minuto, es decir, 1200 peticiones por minuto.
| Fecha | Tipo | Descripción |
|---|---|---|
| 2026-03-25 | Feat | Se ha agregado el campo status en el endpoint /bookings/activities/{bookingId}. |
| 2025-12-27 | Feat | Se ha agregado el campo booleano isTopActivity en los endpoints de listado de actividades. Endpoints afectados: /destinations/{id}/activities, /zones/{zoneId}/activities, /findByCoord, /search. |
| 2025-06-10 | Feat | Se ha agregado la informacion de los proveedores en el detalle de la actividad de los endpoints /activities/{id}, /destinations/{id}/activities, /zones/{zoneId}/activities, /search, /findByCoord. |
| 2025-05-27 | Fix | Se ha eliminado el texto entre paréntesis (paréntesis incluidos) en el endpoint /activities/{id}. |
| 2025-05-05 | Feat | Se han agregado los parámetros opcionales "iataCodeFrom" y "iataCodeTo" en el endpoint /transfers/{cityId}/zones. Estos parámetros permiten filtrar los resultados utilizando los códigos IATA de los aeropuertos de origen y destino. Además, en el endpoint /transfers/{cityId}/zones ahora es posible filtrar tanto por zoneId como por código IATA, brindando mayor flexibilidad y precisión en las consultas relacionadas con zonas y aeropuertos. |
| 2025-04-24 | Feat | Se ha agregado la propiedad vehicleType en el listado de vehículos. /transfers/{cityId}/zones/{zoneFrom}/{zoneTo}/vehicles |
| 2025-04-22 | Feat | Se ha agregado el campo group en el objeto rates, en los endpoints de los nuevos calendarios de actividades. El campo indica el número mínimo y máximo de personas por grupo en cada categoría. Más info aquí. |
| 2025-04-14 | Feat | Se han agregado las propiedades meetAndGreet y adapted en el listado de vehículos. /transfers/{cityId}/zones/{zoneFrom}/{zoneTo}/vehicles |
| 2025-03-20 | Feat | Se ha agregado soporte para idiomas tropicales(Ar,Br,Mx) en los endpoints de actividades por Zona, Destinos y Coordenadas. Endpoints afectados: /destinations/{id}/activities, /zones/{zoneId}/activities, /findByCoord. |
| 2024-12-17 | Feat | Se ha añadido un nuevo endpoint para consultar la información de una reserva de traslados. Más información aquí |
| 2024-11-28 | Feat | Se ha añadido soporte para paginación en el endpoint del nuevo calendario por destinos, zonas y coordenadas. Más información aquí |
| 2024-11-26 | Feat | Se ha implementado un nuevo filtro en los endpoints de actividades múltiples que permite filtrar por las categorías y subcategorías, que puedes consultar a través de este endpoint. |
| 2024-10-23 | Feat | Se ha agregado el campo opcional "numberOfPersons" en el payload del endpoint /v2/cart para establecer el número exacto de personas a participar en una actividad por grupos. Más información aquí. |
| 2024-10-23 | Feat | Nuevo endpoint para obtener calendarios de un destino, de una zona o a partir de unas coordenadas, con una nueva estructura, más información aquí |
| 2024-10-16 | Feat | Nuevo endpoint de actividades individuales con nueva estructura, mas información aquí |
| 2024-10-01 | Feat | Se ha creado el nuevo endpoint /v2/cart/{{cartId}}/check-availability para comprobar la disponibilidad de los items de un carrito, en caso de que las actividades sean integradas. |
| 2024-10-01 | Feat | Se ha agregado la propiedad "rawLongDescription" que muestra la descripción larga en texto plano en los endpoints de actividades, más info aquí y asociados. |
| 2024-09-24 | Feat | Se ha incluido la cantidad mínima y máxima de pasajeros por categoría cuando la actividad es por grupo de personas. Este nuevo atributo se encuentra dentro del esquema rates->categories->group en la respuesta de los endpoints de actividades. Más información aquí y en el detalle de mínimos y máximos. |
| 2024-09-19 | Feat | Se ha agregado el campo "iata" en el endpoint de destinos. Más información aquí |
| 2024-09-18 | Feat | Se ha añadido el campo "guideLanguages" en las respuestas de los endpoints relacionados con actividades, el cual contiene un array con los idiomas disponibles de la guía para cada actividad. También se ha implementado el filtro "guideLang", que permite filtrar actividades por el idioma de la guía. Endpoints afectados: /activities/{id}, /activities/infinite-availability, /activities/new-activities, /findByCoord/calendar, /findByCoord, /destinations/{id}/activities, /zones/{zoneId}/activities, /destinations/1/calendar. |
| 2024-09-13 | Feat | Nuevo endpoint para obtener precios dinamicos de una actividad. Más información aquí |
| 2024-09-10 | Feat | Mejora en el ordenamiento de coincidencias en el endpoint /search, reordenando los resultados de actividades por relevancia. |
| 2024-08-28 | Feat | Se ha agregado un endpoint para obtener vehículos de traslados enviando coordenadas o el ID de la zona, tanto en origen como en destino. Más información aquí |
| 2024-08-20 | Feat | El endpoint /activities/{id} tiene el nuevo campo "secondaryDestinationId", en el que se consultan los destinos secundarios de la actividad. |
| 2024-07-30 | Fix | El endpoint /transfers/{cityId}/zones/{zoneFrom}/{zoneTo}/vehicles devuelve correctamente los vehículos disponibles para el traslado. |
| 2024-07-23 | Feat | Se han agregado dos nuevos campos en el objeto Activity: hasAdditionalQuestions y hasPassengersQuestions /activities/{id}. |
| 2024-07-05 | Fix | Se corrigió que al obtener las preguntas de pasajero en el endpoint /cart/{cartId} del carrito siempre se traia el label en español, y no el idioma de la actividad. |
En el atributo "cancelPolicies", ubicado en el endpoint de actividades, se definen las políticas asociadas a la cancelación de reservas. Aquí se especifican las penalizaciones y reembolsos en función del tiempo restante antes de la realización de la actividad.
A continuación, presentamos algunos ejemplos para facilitar la interpretación de esta información:
"cancelPolicies": [
{
"hours": 48,
"penalty": 0,
"type": "percent"
}
]
Esto significa que antes de 48 horas de la realización de la actividad se puede cancelar gratis, sin penalización
"cancelPolicies": [
{
"hours": 120,
"penalty": 25,
"type": "percent"
},
{
"hours": 240,
"penalty": 15,
"type": "percent"
},
{
"hours": 504,
"penalty": 0,
"type": "percent"
}
],
Por lo que sí son 504 horas antes del inicio de la actividad el reembolso es del 100%, 240 horas antes, la penalización de 15% (reembolso 85%), 120 horas antes sería el 25% de penalización (75% reembolso). Si la reserva se produce en menos de 120 horas la reserva no tiene reembolso.
"cancelPolicies": [
{
"hours": 0,
"penalty": 100,
"type": "percent"
}
],
Esto quiere decir que no es reembolsable.
Las políticas de cancelación pueden estar basadas en dos tipos de penalizaciones: amount y percent.
Las penalizaciones de tipo percent se calculan como un porcentaje del precio total de la actividad; por ejemplo, una penalización del 25% significa que se descontará ese porcentaje del precio total, al realizar la cancelación.
En los casos en que el atributo "type" sea de tipo amount, el valor del atributo "penalty" indicará el montó a penalizar, por persona. Siempre se penalizará por persona independientemente de la categoría (adulto, niño, bebé). Se aplicará la misma penalización tanto para adultos como para niños, aunque el precio varíe. Tras la cancelación, se multiplicará la cantidad reflejada en el atributo "penalty" por la cantidad de personas para las cuales se haya hecho la reserva.
"cancelPolicies": [
{
"hours": 168,
"penalty": 100,
"type": "amount"
}
]
En este ejemplo, si cancelas con más de 7 días de antelación tendrás una penalización de 100 € por pasajero. Si cancelas con menos tiempo, llegas tarde o no te presentas, no se ofrecerá ningún reembolso.
También puede darse el caso en la que la actividad cuente con una política de cancelación mixta. Es decir, que tenga penalización de tipo amount y de tipo percent. Las políticas de cancelación mixtas combinan penalizaciones tanto de tipo porcentaje como de monto fijo (en una cantidad específica de dinero). Cómo en los casos de penalización de tipo amount y percent, la penalización varía dependiendo de la antelación con la que se realice la cancelación.
"cancelPolicies": [
{
"hours": 336,
"penalty": 60,
"type": "percent"
},
{
"hours": 504,
"penalty": 40,
"type": "percent"
},
{
"hours": 720,
"penalty": 200,
"type": "amount"
}
]
En este caso se combinan los dos tipos de penalización. Si cancelas con una antelación mayor a 30 días, se penaliza con 200 € por persona. Si cancelas entre 30 días y los 21 días de anticipación, se penaliza con el 40% del valor de la reserva. Si cancelas entre los 21 días a los 14 días de anticipación, se penaliza con el 60% del valor de la actividad. Y si cancelas entre los 14 dias hasta el día del disfrute de la actividad la reserva no tiene reembolso.
La categoría de una actividad se refiere a la clasificación principal o general a la que pertenece. Es una etiqueta amplia que agrupa actividades similares por sus características fundamentales. Puede obtener el detalle del endpoint para obtener el listado aquí
La subcategoría proporciona una clasificación más específica dentro de una categoría principal. Representa una división más detallada de las actividades. Puede obtener el detalle del endpoint para obtener el listado aquí
El atributo amountType aparece en varias respuestas de peticiones, durante la creación del carrito, o en la petición de actividades. Este valor puede ser NET o PVP, indicando que los montos mostrados de las actividades serán precio neto o precio PVP. Esta configuración se establece durante la creación del usuario.
Al momento de crear un carrito, el atributo prefix hace referencia al código numérico de teléfono del país. Los valores aceptados para este campo pueden obtenerse consultando el endpoint correspondiente al país (click aquí), atributo prefix
El wallet permitirá cargar saldo para así poder realizar reservas con este saldo disponible de una forma segura. Se puede obtener su key (click aquí), la cual se usará para realizar la confirmación de la reserva.
El objeto Advance, de la respuesta de GET activities/{id}, indica el tiempo de antelación para poder reservar una actividad. Las propiedades days, días de antelación, y hour, hora límite para reservar, van a par, por lo que si vienen en null, se debe extraer la información de la otra propiedad del objeto, minutes before, que indica la cantidad de minutos de antelación para reservar la actividad. (detalles aquí):
Por ejemplo:
¿Cuándo reservar? Puedes reservar hasta las 19:00 horas del día anterior siempre que haya disponibilidad.
"advance":
{
"days": 1,
"hour": 19:00,
"minutes_before": null
}
¿Cuándo reservar? Puedes reservar hasta cinco días antes siempre que haya disponibilidad.
"advance":
{
"days": null,
"hour": null,
"minutes_before": 7200
}
Cada actividad puede tener restricciones específicas en cuanto al número mínimo y máximo de participantes. Estos parámetros determinan cómo y cuándo se puede realizar una reserva. Puedes consultar los siguientes campos en los detalles de la actividad realizando una petición al endpoint de la actividad. Por ejemplo:
GET {{url}}/v2/activities/{activityId}
minimumPaxPerBooking (integer): Número mínimo de personas requerido para realizar una reserva. Este campo es bloqueante para la creación del carrito con la cantidad de participantes. Si intentas reservar con una cantidad inferior, el sistema no permitirá la creación del carrito.
minimumPaxPerActivity (integer): Cantidad mínima de personas necesarias para llevar a cabo la actividad. Este campo es informativo y te indica cuántas personas se requieren en total para que la actividad se realice, independientemente de tu reserva individual.
maximumPaxPerActivity (integer o null): Número máximo de personas permitidas para una reserva. Si es nulo, no hay límite establecido. Este campo es bloqueante para la creación del carrito con la cantidad de participantes. Si intentas reservar con una cantidad que excede este límite, la reserva será rechazada.
Ejemplo de uso:
Si una actividad tiene:
minimumPaxPerBooking = 2minimumPaxPerActivity = 5maximumPaxPerActivity = 10Significa que:
Puedes encontrar más información sobre la estructura de la respuesta de este endpoint en la documentación.
A continuación, presentamos una serie de escenarios comunes para la integración con la API de actividades. Estos ejemplos ofrecen consejos prácticos para implementar flujos de reserva y manejo de datos de manera eficiente. Para todos los casos, recomendamos hacer una petición al endpoint de actividades con disponibilidad infinita para obtener una lista de actividades aptas para probar los casos de uso.
minimumPaxPerBooking y minimumPaxPerActivity, mayores a 0./v2/cart. Estos campos son bloqueantes, y si no se cumplen, la solicitud será rechazada.Realiza una búsqueda detallada de actividades mediante diferentes criterios como destino, zona o coordenadas geográficas. A continuación, se presentan ejemplos de URLs para esta operación:
Búsqueda por destino (detalles aquí):
{url}/v2/destinations/{destinationId}/activitiesDetalles de una actividad específica (detalles aquí):
{url}/v2/activities/{activityId}Búsqueda por coordenadas (detalles aquí):
{url}/v2/findByCoordBúsqueda por zona (detalles aquí):
{url}/v2/zones/{zoneId}/activitiesLa respuesta incluirá una lista de actividades que coincidan con los criterios de búsqueda, proporcionando detalles detallados sobre la misma.
Una vez identificadas las actividades de interés, es esencial verificar su disponibilidad. El Calendario V2 es la única fuente de verdad para disponibilidad, horarios y modalidades activas.
Source of Truth (disponibilidad y modalidades)
GET {url}/v2/activities/{activityId} se utiliza solo para información estática (descripción, políticas y estructura de tarifas).GET/POST {url}/v2/calendar/activities es la fuente de verdad para disponibilidad, horarios y modalidades activas (rates).Endpoints de Calendario V2 (Recomendados)
Obtener calendario de una actividad específica:
GET {url}/v2/calendar/activities/{activityId}Este endpoint te permite obtener la disponibilidad detallada de una actividad específica mediante su activityId. Detalles aquí.
Obtener calendario de actividades por destino, zona o coordenadas:
POST {url}/v2/calendar/activitiesEn este endpoint, puedes enviar en el cuerpo de la solicitud (payload) uno de los siguientes parámetros para filtrar las actividades. Detalles aquí:
Por destinationId:
{
"destinationId": 1
}
Por zoneId:
{
"zoneId": 1
}
Por coordenadas:
{
"coordinate": {
"latitude": "22.2951073",
"longitude": "114.169665",
"distance": "17"
}
}
Este endpoint unificado permite obtener la disponibilidad de actividades filtrando por destino, zona o coordenadas geográficas. Proporciona una respuesta más completa y eficiente, facilitando la integración y reduciendo el número de llamadas necesarias.
Nota importante: quotaAvailable es un atributo exclusivo del Calendario Legacy (obsoleto) y no aplica al Calendario V2.
Búsqueda de disponibilidad por destino (detalles aquí):
{url}/v2/destinations/{destinationId}/calendarBúsqueda de disponibilidad por actividad específica (detalles aquí):
{url}/v2/activities/{activityId}/calendarBúsqueda de disponibilidad por coordenadas (detalles aquí):
{url}/v2/findByCoord/calendarBúsqueda de disponibilidad por zona (detalles aquí):
{url}/v2/zones/{zoneId}/calendarLa respuesta proporcionará información detallada sobre la disponibilidad de las actividades, incluyendo calendarios y detalles específicos para facilitar la toma de decisiones del usuario.
Cuando una actividad tiene el atributo hasDynamicPrice configurado en true, significa que los precios de dicha actividad pueden variar en función de factores como la fecha, la demanda o eventos especiales. Para obtener el precio exacto de la actividad en una fecha específica, es imprescindible realizar una consulta al siguiente endpoint de precios dinámicos.
Este proceso asegura que se presente el precio más actualizado en función de la fecha seleccionada por el usuario. No realizar esta consulta podría mostrar un precio incorrecto o desactualizado, lo que puede generar discrepancias en la oferta final.
Pasos a seguir:
Notas importantes:
/activities/{id}/dynamic-prices.Recomendación adicional:
Al momento de generar el carrito, es altamente recomendable verificar el precio en el resumen del carrito. Esto garantiza que el precio final a aplicar sea el más actualizado y evita posibles incongruencias entre el precio mostrado inicialmente y el precio final de la reserva.
En el Calendario V2, la disponibilidad final se obtiene combinando los cupos de hour.quota y rate.quota.
Interpretación de la disponibilidad (modelo actual)
1.- hour.quota > 0
1.1 rate.quota = -1 --> Dispo = hour.quota
1.2 rate.quota = 0 --> Dispo = 0
1.3 rate.quota > 0 --> Dispo = rate.quota
2.- hour.quota = 0
2.1 rate.quota = -1 --> Dispo = 0
2.2 rate.quota = 0 --> Dispo = 0
2.3 rate.quota > 0 --> Dispo = rate.quota (inconsistencia de datos)
3.- hour.quota = -1
3.1 rate.quota = -1 --> Dispo = Infinita
3.2 rate.quota = 0 --> Dispo = 0
3.3 rate.quota > 0 --> Dispo = rate.quota
Consideraciones
hour.quota indica el cupo total del horario.rate.quota indica el cupo específico de la modalidad.-1 representa disponibilidad ilimitada.hour.quota = 0 con rate.quota > 0 se considera una inconsistencia de datos.El Calendario V2 devuelve dos bloques principales:
schedule: indica las fechas disponibles y qué configuraciones de tarifas (baseRatesId) aplican en cada fecha.baseRates: contiene la información completa de horarios, modalidades (rates) y cupos (quota).{
"activityId": "373",
"currency": "COP",
"timeZone": "Europe/Rome",
"hasHours": true,
"schedule": [ ... ],
"baseRates": { ... }
}
Notas clave sobre baseRates
baseRates es un objeto dinámico: cada clave es un baseRateId interno (por ejemplo: property1, aBcDeF1, xyz123).properties.baseRates representa una configuración de tarifas distinta.baseRateId es el identificador de referencia; la disponibilidad nunca debe inferirse del nombre de la clave.Relación entre schedule y baseRates
Para una fecha concreta:
schedulebaseRatesIdbaseRates[baseRateId]hourshour.quota y rate.quotaNavegación correcta para validar disponibilidad
schedule
→ baseRatesId
→ baseRates
→ hours
→ rates
→ quota
En la respuesta a la petición de los endpoints Legacy, la disponibilidad se consulta a través de los campos availability del objeto schedule, y quotaAvailable y quota, del objeto times, también de schedule.
Ejemplo de quotaAvailable true (Legacy):
"activityId": "556",
"currency": "USD",
"timeZone": "Europe/Istanbul",
"hasHours": true,
"schedule": [
{
"date": "2024-08-22",
"availability": 10,
"percentageDiscount": 0,
"times": [
{
"time": "11:30",
"quota": 10,
"quotaAvailable": true
}
]
Ejemplo de quotaAvailable false (Legacy):
"activityId": "556",
"currency": "USD",
"timeZone": "Europe/Istanbul",
"hasHours": true,
"schedule": [
{
"date": "2024-08-24",
"availability": -1,
"percentageDiscount": 0,
"times": [
{
"time": "11:30",
"quota": -1,
"quotaAvailable": false
}
]
Ventajas de utilizar el nuevo sistema de calendario:
La nueva versión del sistema de calendario introduce mejoras significativas en términos de flexibilidad, disponibilidad y administración de tarifas. A continuación, se presentan sus principales beneficios:
timeZone, asegurando consistencia en las reservas independientemente del huso horario del usuario.quota): Permite un control más detallado sobre la cantidad de plazas disponibles en cada horario.currency): Mejora la gestión de precios internacionales mediante la definición explícita de la divisa utilizada en cada actividad.Comparación entre Calendario y Calendario V2:
A continuación, se detallan las diferencias clave entre el sistema tradicional de calendario y la nueva versión recomendada.
| Característica | Calendario (V1) | Calendario V2 |
|---|---|---|
| Estructura | Lista simple de fechas y horarios. | Maneja tarifas dinámicas y horarios personalizados. |
| Respuesta optimizada | Respuesta estándar. | Respuesta más ligera y eficiente en el consumo de datos. |
| Suplementos individuales | No se maneja. | Se incluyen suplementos individuales en la estructura. |
| Modelo de disponibilidad | availability + quotaAvailable (Legacy). |
quota anidado en hours y rates. |
Disponibilidad (quota) |
Cantidad fija de asientos. | Gestión granular de plazas por horario. |
Tarifas (baseRates) |
Lista de precios estática. | Tarifas dinámicas con baseRates. |
| Soporte para tarifas múltiples | No. | Sí, maneja baseRatesId para múltiples configuraciones. |
Gestión de cuotas por modalidad (rates) |
No disponible. | Permite definir disponibilidad específica por modalidad (rates). |
| Paginación | No se maneja. | Se incluye paginación para mejorar el rendimiento en grandes volúmenes de datos. |
Para garantizar un mejor rendimiento y nuevas funcionalidades, todas las futuras mejoras y optimizaciones se implementarán exclusivamente en el Calendario V2. Los endpoints Legacy se mantienen únicamente por compatibilidad con integraciones existentes.
Una vez que el usuario ha seleccionado una actividad específica, se agrega al carrito mediante una solicitud de creación de carrito. La respuesta incluirá detalles sobre la actividad agregada al carrito, así como información sobre el estado actual del carrito y los costos asociados. Puede encontrar mayor información aquí.
Obtiene información preliminar sobre la reserva actual, incluyendo detalles de datos del usuario, preguntas de la actividad o preguntas del pasajero que se necesitarán responder en el paso siguiente, costos estimados y cualquier otro dato relevante para el usuario. Para más detalles, consulta aquí.
En el caso de las actividades de tipo freeTour, la reserva se confirmará automáticamente después del proceso de checkout que se menciona anteriormente y devolverá la respuesta con el tipo "Root type for voucher" en el siguiente endpoint.
Si la actividad no es de tipo freeTour, se devolverá la información del carrito con la respuesta de tipo "Cart", en el referido endpoint y se deberá realizar el proceso de confirmación, como detallamos más adelante.
Puedes identificar las actividades de tipo freeTour con el atributo isFreeTour en la información de las actividades, en el siguiente endpoint
Cuando una actividad está marcada como una actividad por grupos de personas, utilizando la propiedad isCategoryPaxGroup: true, se define un rango específico de personas que pueden participar en dicha actividad. Este rango se especifica a través de las propiedades minimum y maximum, que están incluidas dentro del objeto group para cada categoría.
"rates": [
{
"id": 0,
"text": "Tour privado de 4 horas",
"categories": [
{
"id": 0,
"text": "Hasta 5 personas",
"canBookAlone": true,
"group": {
"minimum": 1,
"maximum": 5
}
},
{
"id": 1,
"text": "Hasta 10 personas",
"canBookAlone": true,
"group": {
"minimum": 1,
"maximum": 10
}
},
{
"id": 2,
"text": "Hasta 15 personas",
"canBookAlone": true,
"group": {
"minimum": 1,
"maximum": 15
}
}
]
}
]
Cuando la actividad no es por grupos de personas (isCategoryPaxGroup: false), el campo group vendrá como un objeto vacío [].
"rates": [
{
"id": 0,
"text": "Tour en español",
"categories": [
{
"id": 0,
"text": "Adultos",
"canBookAlone": true,
"group": []
},
{
"id": 1,
"text": "Menores de 11 años",
"canBookAlone": false,
"group": []
}
]
}
]
Si la actividad es isCategoryPaxGroup: true, el usuario podrá integrar el campo numberOfPersons en el payload del endpoint /v2/cart para establecer el número exacto de personas a participar en la actividad por grupos. El campo deberá tener un entero entre el rango de minimum y maximum de la categoría seleccionada.
Ejemplo: Para la actividad, 183221, vemos que la categoría con id 1 tiene un rango de 1 a 4 personas.
{
"id": 1,
"text": "Hasta 4 personas",
"canBookAlone": true,
"group": {
"minimum": 1,
"maximum": 4
}
Por lo tanto, el campo numberOfPersons, del payload del endpoint /v2/cart debe tener un valor entre 1 y 4.
{
"activityId": 183221,
"date": "2024-09-13",
"currency": "USD",
"rate": {
"id": "0",
"categories": [
{
"id": "1",
"quantity": 1,
"numberOfPersons": 3
}
]
},
"time": "09:00"
}
En actividades regulares: quantity representa la cantidad de personas para las que se está realizando la reserva dentro de una tarifa específica (por ejemplo, adultos o niños).Es decir, se indica cuántas personas se reservan bajo cada categoría de precio.
Ejemplo: Actividad regular.
{
"activityId": 123456,
"date": "2024-06-08",
"currency": "EUR",
"time": "10:00",
"rate": {
"id": 0,
"categories": [
{
"id": 1, // Tarifa adulto
"quantity": 2 // 2 adultos
},
{
"id": 2, // Tarifa niño
"quantity": 1 // 1 niño
}
]
}
}
En actividades grupales: quantity va como numero entero siendo 1 el valor predeterminado para cada grupo y aunque se puede cambiar, siempre se cobra por un solo grupo,No importa si son adultos o niños, se cobra por grupo.
numberOfPersons, que indica cuántas personas participarán en ese grupo. Este valor no afecta al precio, debe estar dentro del rango permitido por la categoría group.minimum y group.maximum.
Ejemplo 2: Actividad Grupal
{
"activityId": 175180,
"date": "2024-06-08",
"currency": "EUR",
"time": "",
"rate": {
"id": 0,
"categories": [
{
"id": 0,
"quantity": 1,
"numberOfPersons": 6 //Número de personas dentro del grupo
}
]
}
}
Consideraciones adicionales
Durante este paso, se ingresa la información adicional necesaria para confirmar la reserva. Esto incluye responder preguntas específicas sobre la actividad o proporcionar detalles adicionales sobre los pasajeros. Para obtener más detalles sobre este proceso, haz clic aquí.
Antes de confirmar la reserva, obtendremos información esencial del Wallet asociado a la agencia, como su identificador único. Este Wallet Key se utiliza para identificar de manera segura la transacción durante el proceso de creación de la reserva.
Para ver más detalles haz clic aquí.
La reserva se crea oficialmente mediante una solicitud que incluye el Wallet Key obtenido anteriormente. La respuesta confirma la creación exitosa de la reserva y proporciona detalles finales, como números de confirmación y cualquier información adicional necesaria.
Para más información sobre la creación de la reserva, haz clic aquí.
Para obtener un listado de actividades con disponibilidad en el entorno de sandbox, puedes utilizar el siguiente endpoint: Obtener disponibilidad infinita de actividades (disponible para sandbox).
hasCalendarHours: Si es false quiere decir que la actividad no tiene una hora específica para reservar. Podrías reservar dejando la propiedad time del payload del método POST del endpoint /v2/cart con un string vacío.
"activityId": 175180,
"date": "2024-06-08",
"currency": "EUR",
"time": "",
"rate": {
"id": 0,
"categories": [
{
"id": 0,
"quantity": 1
}
isCategoryPaxGroup: Indica si la actividad tiene tipos de entradas por grupos de personas. Si es true, la propiedad text de los elementos del objeto categories de la respuesta de activities/{activityId}, mostrará las categorías por grupos de personas.
"rates": [
{
"id": 0,
"text": "Tour privado de 4 horas",
"categories": [
{
"id": 0,
"text": "Hasta 5 personas",
"canBookAlone": true,
"group": {
"minimum": 1,
"maximum": 5
}
},
{
"id": 1,
"text": "Hasta 10 personas",
"canBookAlone": true,
"group": {
"minimum": 1,
"maximum": 10
}
},
{
"id": 2,
"text": "Hasta 15 personas",
"canBookAlone": true,
"group": {
"minimum": 1,
"maximum": 15
}
}
]
}
]
hasAdditionalQuestions: Indica si una actividad tiene preguntas adicionales. Si es true, el array booking de la respuesta de activities/{activityId}/checkoutData tendrá varios elementos de pregunta.
"booking": [{...},
{
"id": "preguntaTitulo_0-663cc3e9519df6.37779825",
"label": "Onde voc\u00ea quer come\u00e7ar o tour?",
"type": "select",
"required": true,
"regex": null,
"options": [
{
"id": 0,
"text": "Porta do templo Wat Phra Singh (15:45 horas)."
},
{
"id": 1,
"text": "Porta do zool\u00f3gico de Chiang Mai (16:05 horas)."
}
],
"value": "",
"uuid": null,
"labelTranslated": "Onde voc\u00ea quer come\u00e7ar o tour?"
},
{...}
],
hasPassengersQuestions: Indica si una actividad requiere los datos de los pasajeros. Si es true, la respuesta de activities/{activityId}/checkoutData tendrá la propiedad "passengers".
"booking": [{...},{...},{...} ],
"passengers": [
{
"id": "passenger-1-0-663cc3e9519df6.37779825",
"label": "Nombre",
"type": "text",
"required": true,
"regex": null,
"options": null,
"value": "",
"uuid": null
},
{
"id": "passenger-2-0-663cc3e9519df6.37779825",
"label": "Apellidos",
"type": "text",
"required": true,
"regex": null,
"options": null,
"value": "",
"uuid": null
},
{
"id": "passenger-13-0-663cc3e9519df6.37779825",
"label": "Fecha nacimiento",
"type": "date",
"required": true,
"regex": null,
"options": null,
"value": "",
"uuid": null
},
hasOneRate: Indica si una actividad tiene una única tarifa. Si es true, el array rate de la respuesta activities/{id} tendrá un solo elemento y si es false, tendrá más de un elemento.
"rates": [
{
"id": 0,
"text": "Tour sin vuelo de regreso",
"categories": [
{
"id": 0,
"text": "Adultos",
"canBookAlone": true
},
{
"id": 1,
"text": "Niños de 7 a 12 años",
"canBookAlone": false
},
{
"id": 2,
"text": "Menores de 7 años",
"canBookAlone": false
}
]
},
{
"id": 1,
"text": "Tour con vuelo de regreso",
"categories": [{...}, {...}, {...}]
}
]
Encuentra más información sobre el endpoint GET infinite-availability aquí.
Prioriza el uso de coordenadas para evitar ambigüedades y mejorar la precisión en la disponibilidad de traslados. El endpoint recomendado es:
POST {url}/v2/transfers/destinations/{destinationId}/vehicles (detalles aquí)En este endpoint puedes enviar coordenadas de origen y destino. La información obtenida acerca del vehículo es esencial para llevar a cabo la reserva.
Legacy (compatibilidad):
/v2/transfers/{cityId}/zones/{zoneFrom}/{zoneTo}/vehicles y /v2/transfers/{cityId}/zones.Round trip (ida y vuelta):
Coordenadas disponibles en sandbox (ejemplo):
{
"fromCoordinate": {
"latitude": 41.390205,
"longitude": 2.154007
},
"toCoordinate": {
"latitude": 41.720233,
"longitude": 2.933432
},
"filters": {
"pax": 3,
"date": "2026-02-24",
"time": "10:00",
"currency": "EUR"
}
}
Una vez que el usuario ha seleccionado un traslado específico, se añade al carrito mediante una solicitud de creación de carrito. La respuesta incluirá detalles sobre el traslado agregado, así como información acerca del estado actual del carrito y los costos asociados. Puedes encontrar más información aquí.
Al crear el carrito, en el atributo time es importante indicar la hora del vuelo/tren cuando el destino es de tipo "Airport", "Port", "Train".
{
"id": 3,
"label": "Porto per navi da crociera",
"type": "Port",
"iata": "",
"minAdvance": 24
},
Obtén información preliminar sobre la reserva actual, que incluye detalles del usuario, preguntas específicas sobre el traslado o del pasajero que necesitarán respuesta en el siguiente paso, costos estimados y cualquier otro dato relevante. Para obtener detalles adicionales, consulta aquí.
Durante este paso, se introduce la información adicional necesaria para confirmar la reserva. Esto implica responder preguntas específicas sobre el traslado o proporcionar detalles adicionales sobre los pasajeros. Para más detalles sobre este proceso, haz clic aquí.
Nombre del hotel:
Antes de confirmar la reserva, se obtiene información esencial del Wallet asociado a la agencia, como su identificador único. Este Wallet Key se utiliza para identificar de manera segura la transacción durante el proceso de creación de la reserva.
Para ver más detalles haz clic aquí.
La reserva se crea oficialmente mediante una solicitud que incluye el Wallet Key obtenido anteriormente. La respuesta confirma la creación exitosa de la reserva y proporciona detalles finales, como números de confirmación y cualquier información adicional necesaria.
Para más información sobre la creación de la reserva, haz clic aquí.
Para validar la integración de traslados, sigue este checklist mínimo:
¿Cómo manejo los errores de autenticación al consumir la API de Civitatis?
Respuesta: Si recibes un código de respuesta 401 Unauthorized, significa que la solicitud no está autorizada. Esto puede deberse a problemas de autenticación con el token. Verifica la validez y vigencia del token utilizado en la solicitud y asegúrate de que estás enviando las credenciales correctas.
¿Qué significa el código de error 406 Not Acceptable?
Respuesta: El código 406 Not Acceptable indica que la solicitud ha sido bloqueada por el WAF (Firewall de Aplicaciones Web) debido a su naturaleza maliciosa o sospechosa. Asegúrate de que tu solicitud cumple con los parámetros y formatos esperados por la API y que no contiene contenido malicioso.
¿Cómo puedo evitar el error 429 Too Many Requests?
Respuesta: El error 429 Too Many Requests ocurre cuando se supera el límite máximo de peticiones por segundo, que actualmente es de 20 peticiones por segundo durante 1 minuto (1200 peticiones por minuto). Para evitar este error, implementa mecanismos de control de flujo en tu aplicación para limitar el número de solicitudes que envías a la API.
¿Cómo funcionan las políticas de cancelación en las actividades?
Respuesta: Las políticas de cancelación se definen en el atributo cancelPolicies de la actividad. Incluyen penalizaciones y reembolsos en función del tiempo restante antes de la realización de la actividad. Las penalizaciones pueden ser de tipo percent (porcentaje) o amount (monto fijo por persona). Es importante revisar estas políticas para informar adecuadamente a los usuarios sobre las condiciones de cancelación.
¿Qué son las categorías y subcategorías en una actividad?
Respuesta: La categoría es la clasificación principal o general a la que pertenece una actividad, agrupando actividades similares por sus características fundamentales. La subcategoría proporciona una clasificación más específica dentro de una categoría principal, representando una división más detallada de las actividades. Puedes obtener el listado de categorías y subcategorías mediante los endpoints correspondientes.
¿Qué es el "amountType" y cómo afecta a los precios?
Respuesta: El atributo amountType indica si los montos mostrados de las actividades son precio neto (NET) o precio de venta al público (PVP). Esta configuración se establece durante la creación del usuario y afecta cómo se muestran y calculan los precios en la API.
¿Cómo se utiliza el "wallet" para realizar reservas?
Respuesta: El wallet permite cargar saldo para realizar reservas de forma segura. Debes obtener la wallet key mediante el endpoint correspondiente y utilizarla al confirmar la reserva. Esto asegura que la transacción se realice de manera segura y autorizada.
¿Qué es el objeto "advance" y cómo afecta a las reservas?
Respuesta: El objeto advance, de la respuesta de GET activities/{id}, indica el tiempo de antelación necesario para poder reservar una actividad. Puede especificar días y hora límite para reservar o minutos de antelación. Por ejemplo, si advance indica 1 día y hora 19:00, significa que puedes reservar hasta las 19:00 horas del día anterior a la actividad.
¿Cómo valido las preguntas de tipo fecha?
Respuesta: Las respuestas a preguntas de tipo date deben tener alguno de los siguientes formatos: Y-m-d, Y/m/d, d-m-Y, d/m/Y. Si la fecha no cumple con alguno de estos formatos, se mostrará un mensaje de error indicando que el formato es incorrecto.
En particular, cuando obtenemos los datos para reservar a través de la petición GET Checkout podríamos recibir preguntas de tipo date. Por ejemplo.
{
"id": "passenger-6-0-668d0622e21af0.78717589",
"label": "Fecha caducidad pasaporte",
"type": "date",
"required": true,
"regex": null,
"options": null,
"value": "",
"uuid": null
}
Las respuestas de tipo date, a completarse en el siguiente endpoint, deben tener alguno de los siguientes formatos:
['Y-m-d', 'Y/m/d', 'd-m-Y', 'd/m/Y']
En caso de que la fecha no cumpla con el formato, se mostrará un mensaje de error.
{"error":"The parameter id 'passenger-6-0-668d0622e21af0.78717589' of type date doesn't have a correct format, current value: '18\/05\/1993 0:00:00'."}
¿Cuál es el flujo de trabajo para reservar actividades?
Respuesta: El flujo general para reservar actividades es:
¿Cómo busco actividades y su disponibilidad?
Respuesta:: Para obtener la disponibilidad, se recomienda utilizar los endpoints de calendario v2, ya que ofrecen mejoras significativas y serán mantenidos en futuras versiones:
Obtener calendario de una actividad específica:
GET /v2/calendar/activities/{activityId}
Obtener calendario de actividades por destino, zona o coordenadas:
POST /v2/calendar/activities
En este endpoint, puedes enviar en el cuerpo de la solicitud uno de los siguientes parámetros:
Por Destino:
{
"destinationId": 1
}
Por Zona:
{
"zoneId": 1
}
Por Coordenadas:
{
"coordinate": {
"latitude": "22.2951073",
"longitude": "114.169665",
"distance": "17"
}
}
Estos endpoints unifican y mejoran las funcionalidades anteriores, permitiendo obtener la disponibilidad de actividades de manera más eficiente y con menos solicitudes.
Nota: Los endpoints de calendario antiguos (legacy) aún están disponibles para mantener la compatibilidad con integraciones existentes, pero no se recomienda su uso en nuevos desarrollos:
/v2/destinations/{destinationId}/calendar/v2/activities/{activityId}/calendar/v2/findByCoord/calendar¿Cómo manejo actividades con precios dinámicos?
Respuesta: Si una actividad tiene el atributo hasDynamicPrice configurado en true, significa que los precios pueden variar según la fecha, demanda u otros factores. Debes consultar el endpoint de precios dinámicos para obtener el precio exacto en una fecha específica. Además, es recomendable verificar el precio en el resumen del carrito antes de confirmar la reserva.
¿Qué significan los atributos "availability", "quotaAvailable" y "quota" en la disponibilidad de actividades?
Respuesta:
hour.quota (cupo total del horario) y rate.quota (cupo específico de la modalidad).-1 indica disponibilidad ilimitada.availability y quotaAvailable son atributos Legacy y no aplican al Calendario V2.¿Cómo creo un carrito y agrego actividades?
Respuesta: Para crear un carrito y agregar actividades, utiliza el endpoint /v2/cart con el método POST, proporcionando la información de la actividad seleccionada, incluyendo activityId, date, currency, rate, categories y time si aplica. La respuesta incluirá detalles del carrito y la actividad agregada.
¿Cómo obtengo y envío datos adicionales necesarios para la reserva?
Respuesta: Después de crear el carrito, obtén los datos adicionales necesarios mediante el endpoint GET /cart/{cartId}/checkout. Allí recibirás preguntas adicionales y datos de pasajeros que debes completar. Envía las respuestas mediante el endpoint PUT /cart/{cartId}/checkout, asegurándote de proporcionar los IDs y valores requeridos.
¿Cómo confirmo una reserva?
Respuesta: Para confirmar una reserva, necesitas obtener la wallet key mediante el endpoint de obtención del wallet. Luego, envía una solicitud a POST /cart/{cartId}/confirm para crear la reserva, incluyendo la wallet key y los datos necesarios. La respuesta confirmará la creación exitosa de la reserva y proporcionará detalles finales.
¿Cómo funcionan las actividades de tipo "freeTour"?
Respuesta: Las actividades de tipo freeTour se confirman automáticamente después del proceso de checkout. No requieren el paso adicional de confirmación de la reserva. Puedes identificar estas actividades mediante el atributo isFreeTour en la información de la actividad.
¿Cómo reservo actividades para grupos de personas?
Respuesta: Si una actividad tiene isCategoryPaxGroup en true, significa que es para grupos de personas. En este caso, debes utilizar el campo numberOfPersons al crear el carrito en el endpoint correspondiente, indicando el número exacto de personas dentro del rango mínimo y máximo especificado en la categoría seleccionada.
¿Cuál es la diferencia entre "quota" y "numberOfPersons"?
Respuesta: quota es la disponibilidad real obtenida del Calendario V2 (cupos por horario y modalidad). numberOfPersons es el número exacto de personas que debes enviar al crear el carrito solo si la actividad es por grupos (isCategoryPaxGroup: true). Este valor debe estar dentro del rango mínimo y máximo de la categoría seleccionada.
¿Cómo obtengo disponibilidad en el entorno sandbox?
Respuesta: Para obtener disponibilidad en el entorno sandbox, puedes utilizar el endpoint de disponibilidad infinita: /v2/activities/infinite-availability. Este endpoint está diseñado para pruebas en el entorno sandbox y proporciona actividades con disponibilidad garantizada.
¿Cuál es el flujo de trabajo para reservar traslados?
Respuesta: El flujo general para reservar traslados es:
¿Cómo busco vehículos disponibles para traslados?
Respuesta: Se recomienda buscar vehículos disponibles mediante el endpoint que acepta coordenadas de origen y destino: /v2/transfers/destinations/{destinationId}/vehicles. Los endpoints basados en zonas (/v2/transfers/{cityId}/zones/...) se mantienen solo por compatibilidad con integraciones existentes.
¿Cómo indico la hora de recogida en una reserva de traslado?
Respuesta: Al crear el carrito para un traslado, debes indicar la hora en el atributo time. Es importante especificar la hora del vuelo o tren cuando el destino es de tipo Airport, Port o Train.
¿Cómo relleno los datos adicionales para una reserva de traslado?
Respuesta: Al obtener los datos de la reserva mediante el endpoint de checkout, recibirás preguntas adicionales específicas para el traslado. Debes completar estas preguntas y enviar las respuestas mediante el endpoint correspondiente, asegurándote de proporcionar los IDs y valores requeridos. Cuando se solicite, el nombre del hotel debe enviarse como respuesta a la pregunta adicional correspondiente.
¿Cómo obtengo y utilizo la "wallet key" para confirmar una reserva?
Respuesta: La wallet key se obtiene mediante el endpoint de obtención del wallet para obtener información del wallet asociado a tu agencia. Una vez obtenida, utilizas la wallet key en la solicitud de creación de la reserva, lo que permite identificar de manera segura la transacción.
¿Cómo puedo evitar errores de validación al enviar datos en la API?
Respuesta:
¿Cómo puedo conocer el número máximo y mínimo de participantes permitidos en una actividad?
Respuesta: Cada actividad puede tener restricciones específicas en cuanto al número mínimo y máximo de participantes. Estos parámetros determinan cómo y cuándo se puede realizar una reserva. Puedes consultar los siguientes campos en los detalles de la actividad realizando una petición al endpoint de la actividad. Por ejemplo:
GET {{url}}/v2/activities/{activityId}
minimumPaxPerBooking (integer): Número mínimo de personas requerido para realizar una reserva. Este campo es bloqueante para la creación del carrito con la cantidad de participantes. Si intentas reservar con una cantidad inferior, el sistema no permitirá la creación del carrito.
minimumPaxPerActivity (integer): Cantidad mínima de personas necesarias para llevar a cabo la actividad. Este campo es informativo y te indica cuántas personas se requieren en total para que la actividad se realice, independientemente de tu reserva individual.
maximumPaxPerActivity (integer o null): Número máximo de personas permitidas para una reserva. Si es nulo, no hay límite establecido. Este campo es bloqueante para la creación del carrito con la cantidad de participantes. Si intentas reservar con una cantidad que excede este límite, la reserva será rechazada.
Ejemplo de uso:
Si una actividad tiene:
minimumPaxPerBooking = 2minimumPaxPerActivity = 5maximumPaxPerActivity = 10Significa que:
Puedes encontrar más información sobre la estructura de la respuesta de este endpoint en la documentación.
¿Cómo puedo filtrar las actividades por categorías y subcategorías?
Respuesta: Para filtrar las actividades por categorías y subcategorías, puedes utilizar los parámetros category y subCategory en los siguientes endpoints:
{{url}}/v2/destinations/{id}/activities
{{url}}/v2/zones/{zoneId}/activities
{{url}}/v2/findByCoord
{{url}}/v2/findByCoord/calendar
{{url}}/v2/zones/{id}/calendar
{{url}}/v2/activities/infinite-availability
Estos parámetros te permiten obtener actividades específicas dentro de una categoría o subcategoría determinada.
¿Qué tipos de datos pueden almacenarse en caché y por cuánto tiempo?
Respuesta: Existen ciertos datos dentro de la API que pueden beneficiarse del almacenamiento en caché, permitiendo mejorar el rendimiento sin comprometer la precisión de la información. Entre estos datos se incluyen:
Se recomienda que el almacenamiento en caché de estos datos tenga una duración máxima de 4 horas, dependiendo de la naturaleza de la información, siendo los detalles de las actividades y la disponibilidad los datos que suelen variar más. Esto permite optimizar el rendimiento sin riesgo de trabajar con datos obsoletos. En caso de cambios frecuentes en un tipo de dato específico, se sugiere considerar una menor duración en el caché y aplicar mecanismos de invalidación adecuados.
A través de este endpoint, se podrá consultar directamente los cambios en actividades sin necesidad de realizar consultas generales y costosas. Los cambios pueden incluir modificaciones en el título, la descripción, los precios, los horarios, etc.
La consulta se realiza utilizando el parámetro fromDate para determinar desde qué fecha se desean obtener los cambios.
Devuelve una colección de identificadores de actividades con su correspondiente fecha de última modificación.
| fromDate required | string <date> Example: fromDate=2025-06-10 Fecha desde la cual buscar cambios en las actividades (formato YYYY-MM-DD) |
| Authentication required | string Token de autenticación. |
[- {
- "activityId": 63,
- "changedAt": "2025-06-26"
}, - {
- "activityId": 66,
- "changedAt": "2025-06-11"
}, - {
- "activityId": 77,
- "changedAt": "2025-06-26"
}
]Autentica al usuario mediante usuario y contraseña y devuelve un token de conexión, el cual deberá de ser usado en el resto de llamadas.
Parámetros de conexión
| username | string |
| password | string |
{- "username": "leonardNimoy",
- "password": "koolinar"
}{- "token": "XJsje8838j48DjxcjJDE",
- "expiresIn": "2020-03-22T10:04:58+01:00"
}| Authentication required | string Token de autenticación. |
| searchText required | string Se debe introducir un mínimo de 3 caracteres para realizar la búsqueda. |
| destinationId | number Campo opcional, filtra actividades por destino. |
| countryId | number Campo opcional, filtra actividades por pais. |
| lang | string Enum: "es" "en" "it" "fr" "pt" Campo opcional, idioma en el que mostrar las actividades. Por defecto 'es'. |
| currency | string Campo opcional, en el atributo minimunPrice va a traer los montos convertidos a esta moneda. |
| activityCurrency | string Campo opcional, filtra las actividades que tengan esta moneda. |
{- "searchText": "string",
- "destinationId": 0,
- "countryId": 0,
- "lang": "es",
- "currency": "string",
- "activityCurrency": "string"
}{- "id": 96,
- "type": 1,
- "lang": "es",
- "guideLanguages": [
- "es"
], - "destinationId": 95,
- "secondaryDestinationId": [ ],
- "title": "Tour nocturno por el Madrid iluminado",
- "voucherType": 0,
- "relatedActivities": [
- {
- "id": 4792,
- "lang": "it"
}, - {
- "id": 5014,
- "lang": "pt"
}, - {
- "id": 5367,
- "lang": "fr"
}, - {
- "id": 7616,
- "lang": "en"
}
], - "score": 9.5987565,
- "reviews": "193,",
- "isTopActivity": true,
- "description": "En este tour <b>recorreremos las plazas y los monumentos más representativos</b> de Madrid cuando la noche y la iluminación realzan la belleza de una ciudad totalmente diferente.",
- "raw_description": "En este tour recorreremos las plazas y los monumentos más representativos de Madrid cuando la noche y la iluminación realzan la belleza de una ciudad totalmente diferente.",
- "longDescription": "En este tour <b>recorreremos las plazas y los monumentos más representativos</b> de Madrid cuando la noche y la iluminación realzan la belleza de una ciudad totalmente diferente.",
- "rawLongDescription": "En este tour recorreremos las plazas y los monumentos más representativos de Madrid cuando la noche y la iluminación realzan la belleza de una ciudad totalmente diferente.",
- "minAge": 0,
- "hasAdditionalQuestions": true,
- "hasPassengersQuestions": false,
- "photos": {
- "header": [
- {
- "caption": "Tour nocturno por el Madrid iluminado",
- "paths": {
}
}
], - "gallery": [
- {
- "caption": "Catedral de la Almudena",
- "paths": {
}
}, - {
- "caption": "Plaza de la Villa",
- "paths": {
}
}
]
}, - "typologies": [
- {
- "id": 8,
- "key": "circuitos",
- "description": "Excursiones de varios días"
}
], - "category": {
- "id": 3,
- "description": "Excursiones de varios días"
}, - "subcategory": {
- "id": 13,
- "description": "Excursiones sin estancia en la ciudad"
}, - "amountType": "PVP",
- "minimumPrice": 7,
- "isFreeTour": false,
- "currency": "EUR",
- "originalPrice": 7,
- "included": [
- "Guía de habla española.",
- "Pulsera Civitatis."
], - "notIncluded": [
- "Comida y bebidas",
- "Propinas"
], - "cancelPolicy": "¡Gratis! Cancela sin gastos hasta 48 horas antes de la actividad. Si cancelas con menos tiempo, llegas tarde o no te presentas, no se ofrecerá ningún reembolso.",
- "cancelPolicies": [
- {
- "hours": 48,
- "penalty": 0,
- "type": "percent"
}
], - "MinimumPaxPerBooking": 6,
- "minimumPaxPerActivity": 4,
- "maximumPaxPerActivity": null,
- "infoVoucher": "Te enviaremos un email con un bono que podrás imprimir o llevar en tu móvil a la actividad.",
- "duration": {
- "min": 30,
- "max": 0,
- "duration": 30
}, - "advance": {
- "days": 1,
- "hour": "19:00",
- "minutes_before": null
}, - "address": {
- "address": "Civitatis Tours & Tickets, calle Montera número 32. 28013 Madrid",
- "shortAddress": "calle Montera, 32",
- "latitude": 40.418876,
- "longitude": -3.7011989,
- "zoom": 15
}, - "accessibility": {
- "code": 110,
- "description": "No (no es apto para personas de movilidad reducida)."
}, - "isCategoryPaxGroup": false,
- "hasDynamicPrice": false,
- "rates": [
- {
- "id": "0",
- "text": "Tour nocturno",
- "categories": [
- {
- "id": "0",
- "text": "Adultos",
- "canBookAlone": true,
- "group": [ ]
}, - {
- "id": "1",
- "text": "Niños de 5 a 14 años",
- "canBookAlone": false,
- "group": [ ]
}, - {
- "id": "2",
- "text": "Menores de 5 años",
- "canBookAlone": false,
- "group": [ ]
}
]
}, - {
- "id": "1",
- "text": "Tour nocturno y tour del Bernabéu",
- "categories": [
- {
- "id": "0",
- "text": "Adultos",
- "canBookAlone": true,
- "group": [ ]
}, - {
- "id": "1",
- "text": "Niños de 5 a 14 años",
- "canBookAlone": false,
- "group": [ ]
}, - {
- "id": "2",
- "text": "Menores de 5 años",
- "canBookAlone": false,
- "group": [ ]
}
]
}
]
}Detalle de una actividad.
| id required | integer Id de la actividad |
| activityCurrency | any Filtra las actividades que tengan esta moneda. |
| currency | any En el atributo minimunPrice va a traer los montos convertidos a esta moneda |
| Authentication required | string Token de autenticación. |
{- "id": 96,
- "type": 1,
- "lang": "es",
- "guideLanguages": [
- "es"
], - "destinationId": 95,
- "secondaryDestinationId": [ ],
- "title": "Tour nocturno por el Madrid iluminado",
- "voucherType": 0,
- "relatedActivities": [
- {
- "id": 4792,
- "lang": "it"
}, - {
- "id": 5014,
- "lang": "pt"
}, - {
- "id": 5367,
- "lang": "fr"
}, - {
- "id": 7616,
- "lang": "en"
}
], - "score": 9.5987565,
- "reviews": "193,",
- "isTopActivity": true,
- "description": "En este tour <b>recorreremos las plazas y los monumentos más representativos</b> de Madrid cuando la noche y la iluminación realzan la belleza de una ciudad totalmente diferente.",
- "raw_description": "En este tour recorreremos las plazas y los monumentos más representativos de Madrid cuando la noche y la iluminación realzan la belleza de una ciudad totalmente diferente.",
- "longDescription": "En este tour <b>recorreremos las plazas y los monumentos más representativos</b> de Madrid cuando la noche y la iluminación realzan la belleza de una ciudad totalmente diferente.",
- "rawLongDescription": "En este tour recorreremos las plazas y los monumentos más representativos de Madrid cuando la noche y la iluminación realzan la belleza de una ciudad totalmente diferente.",
- "minAge": 0,
- "hasAdditionalQuestions": true,
- "hasPassengersQuestions": false,
- "photos": {
- "header": [
- {
- "caption": "Tour nocturno por el Madrid iluminado",
- "paths": {
}
}
], - "gallery": [
- {
- "caption": "Catedral de la Almudena",
- "paths": {
}
}, - {
- "caption": "Plaza de la Villa",
- "paths": {
}
}
]
}, - "typologies": [
- {
- "id": 8,
- "key": "circuitos",
- "description": "Excursiones de varios días"
}
], - "category": {
- "id": 3,
- "description": "Excursiones de varios días"
}, - "subcategory": {
- "id": 13,
- "description": "Excursiones sin estancia en la ciudad"
}, - "amountType": "PVP",
- "minimumPrice": 7,
- "isFreeTour": false,
- "currency": "EUR",
- "originalPrice": 7,
- "included": [
- "Guía de habla española.",
- "Pulsera Civitatis."
], - "notIncluded": [
- "Comida y bebidas",
- "Propinas"
], - "cancelPolicy": "¡Gratis! Cancela sin gastos hasta 48 horas antes de la actividad. Si cancelas con menos tiempo, llegas tarde o no te presentas, no se ofrecerá ningún reembolso.",
- "cancelPolicies": [
- {
- "hours": 48,
- "penalty": 0,
- "type": "percent"
}
], - "MinimumPaxPerBooking": 6,
- "minimumPaxPerActivity": 4,
- "maximumPaxPerActivity": null,
- "infoVoucher": "Te enviaremos un email con un bono que podrás imprimir o llevar en tu móvil a la actividad.",
- "duration": {
- "min": 30,
- "max": 0,
- "duration": 30
}, - "advance": {
- "days": 1,
- "hour": "19:00",
- "minutes_before": null
}, - "address": {
- "address": "Civitatis Tours & Tickets, calle Montera número 32. 28013 Madrid",
- "shortAddress": "calle Montera, 32",
- "latitude": 40.418876,
- "longitude": -3.7011989,
- "zoom": 15
}, - "accessibility": {
- "code": 110,
- "description": "No (no es apto para personas de movilidad reducida)."
}, - "isCategoryPaxGroup": false,
- "hasDynamicPrice": false,
- "rates": [
- {
- "id": "0",
- "text": "Tour nocturno",
- "categories": [
- {
- "id": "0",
- "text": "Adultos",
- "canBookAlone": true,
- "group": [ ]
}, - {
- "id": "1",
- "text": "Niños de 5 a 14 años",
- "canBookAlone": false,
- "group": [ ]
}, - {
- "id": "2",
- "text": "Menores de 5 años",
- "canBookAlone": false,
- "group": [ ]
}
]
}, - {
- "id": "1",
- "text": "Tour nocturno y tour del Bernabéu",
- "categories": [
- {
- "id": "0",
- "text": "Adultos",
- "canBookAlone": true,
- "group": [ ]
}, - {
- "id": "1",
- "text": "Niños de 5 a 14 años",
- "canBookAlone": false,
- "group": [ ]
}, - {
- "id": "2",
- "text": "Menores de 5 años",
- "canBookAlone": false,
- "group": [ ]
}
]
}
]
}Obtiene el precio dinámico de una actividad.
| id required | integer Id de la actividad |
| date required | string <date> Fecha a consultar |
| category | integer Id de la categoria a consultar |
| time | string <HH:mm> Example: time=08:00 Hora a consultar |
| currency | string Moneda en la que se quiere visualizar el precio. |
{- "currency": "USD",
- "times": [
- {
- "time": "08:00",
- "rates": [
- {
- "id": "0",
- "categories": [
- {
- "id": "0",
- "price": 58.68,
- "amountType": "NET"
}
]
}
]
}
]
}Obtiene el checkout del carrito a partir de una actividad por cada modalidad
| activityId required | any Id de la actividad |
[- {
- "rateId": 0,
- "description": "(BEST OF NEW YORK)Paseo en barco",
- "data": {
- "customer": {
- "firstName": "",
- "lastName": "",
- "prefix": "",
- "phone": "",
- "email": ""
}, - "items": [
- {
- "id": "67231fsdf.jn2i318",
- "details": {
- "booking": [
- {
- "id": "",
- "label": "",
- "type": "",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "text": ""
}
], - "value": "",
- "uuid": "",
- "labelTranslated"": "comments_string"
}, - {
- "id": "",
- "label": "",
- "type": "",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "text": ""
}
], - "value": "",
- "uuid": "",
- "labelTranslated"": "comments_string"
}
], - "passengers": [
- {
- "id": "passenger-1-0-67231fsdf.jn2i318",
- "label": "Nombre-1",
- "type": "text",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}, - {
- "id": "passenger-2-0-67231fsdf.jn2i318",
- "label": "Apellidos-1",
- "type": "text",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}, - {
- "id": "passenger-13-0-67231fsdf.jn2i318",
- "label": "Fecha nacimiento-1",
- "type": "date",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}, - {
- "id": "passenger-1-1-67231fsdf.jn2i318",
- "label": "Nombre-2",
- "type": "text",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}, - {
- "id": "passenger-2-1-67231fsdf.jn2i318",
- "label": "Apellidos-2",
- "type": "text",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}, - {
- "id": "passenger-13-1-67231fsdf.jn2i318",
- "label": "Fecha nacimiento-2",
- "type": "date",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}
]
}
}
], - "amounts": [
- {
- "EUR": 40.86
}, - {
- "USD": 44.1
}
], - "amountType": "NET"
}
}
]Obtiene el checkout del carrito a partir de una actividad
| activityId required | any Id de la actividad |
| Authentication required | string |
{- "customer": {
- "firstName": "",
- "lastName": "",
- "prefix": "",
- "phone": "",
- "email": ""
}, - "items": [
- {
- "id": "67231fsdf.jn2i318",
- "details": {
- "booking": [
- {
- "id": "",
- "label": "",
- "type": "",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "text": ""
}
], - "value": "",
- "uuid": "",
- "labelTranslated"": "comments_string"
}, - {
- "id": "",
- "label": "",
- "type": "",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "text": ""
}
], - "value": "",
- "uuid": "",
- "labelTranslated"": "comments_string"
}
], - "passengers": [
- {
- "id": "passenger-1-0-67231fsdf.jn2i318",
- "label": "Nombre-1",
- "type": "text",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}, - {
- "id": "passenger-2-0-67231fsdf.jn2i318",
- "label": "Apellidos-1",
- "type": "text",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}, - {
- "id": "passenger-13-0-67231fsdf.jn2i318",
- "label": "Fecha nacimiento-1",
- "type": "date",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}, - {
- "id": "passenger-1-1-67231fsdf.jn2i318",
- "label": "Nombre-2",
- "type": "text",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}, - {
- "id": "passenger-2-1-67231fsdf.jn2i318",
- "label": "Apellidos-2",
- "type": "text",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}, - {
- "id": "passenger-13-1-67231fsdf.jn2i318",
- "label": "Fecha nacimiento-2",
- "type": "date",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}
]
}
}
], - "amounts": [
- {
- "EUR": 40.86
}, - {
- "USD": 44.1
}
], - "amountType": "NET"
}Listado de actividades de un destino concreto.
| id required | integer id de destino. |
| lang | string Enum: "es" "en" "it" "fr" "pt" Idioma |
| guideLang | string Enum: "es" "en" "it" "fr" "pt" Idioma del guía |
| activityCurrency | any Filtra las actividades que tengan esta moneda. |
| currency | any En el atributo minimunPrice va a traer los montos convertidos a esta moneda |
| category | any Id de la categoria a consultar |
| subCategory | any Id de la subcategoría a consultar |
| Authentication required | string Token de autenticación |
[- {
- "id": 123246,
- "type": 1,
- "lang": "es",
- "guideLanguages": [
- "es"
], - "destinationId": 1152,
- "secondaryDestinationId": [ ],
- "title": "Excursión a la Costa da Morte y Finisterre",
- "voucherType": 0,
- "relatedActivities": [
- {
- "id": 123247,
- "lang": "pt"
}, - {
- "id": 123470,
- "lang": "en"
}, - {
- "id": 123471,
- "lang": "fr"
}, - {
- "id": 123472,
- "lang": "it"
}
], - "score": 0,
- "reviews": 0,
- "isTopActivity": false,
- "description": "Con esta excursión <b>descubrirás la impresionante Costa da Morte de Galicia</b> y llegarás hasta el mítico faro de Finisterre. ¡Verás unos paisajes únicos!",
- "raw_description": "Con esta excursión descubrirás la impresionante Costa da Morte de Galicia y llegarás hasta el mítico faro de Finisterre. ¡Verás unos paisajes únicos!",
- "longDescription": "Con esta excursión descubrirás la impresionante Costa da Morte de Galicia y llegarás hasta el mítico faro de Finisterre. ¡Verás unos paisajes únicos!",
- "rawLongDescription": "Con esta excursión descubrirás la impresionante Costa da Morte de Galicia y llegarás hasta el mítico faro de Finisterre. ¡Verás unos paisajes únicos!",
- "minAge": 0,
- "photos": {
- "header": [
- {
- "caption": "Excursión al Acuario y Rocky Cay",
- "paths": {
}
}
], - "gallery": [
- {
- "caption": "Final del Camino de Santiago en Finisterre",
}, - {
- "caption": "Santuario de Muxía",
}, - {
- "caption": "Hórreo de Carnota",
}, - {
- "caption": "Cascada de Ézaro",
}, - {
- "caption": "Puente de Pontemaceira",
}, - {
- "caption": "Atardecer en Finisterre",
}
]
}, - "typologies": [
- {
- "id": 4,
- "key": "excursiones",
- "description": "Excursiones de un día"
}
], - "category": {
- "id": 2,
- "description": "Excursiones de un día"
}, - "subcategory": {
- "id": 9,
- "description": "Excursiones de un día"
}, - "amountType": "PVP",
- "minimumPrice": 50,
- "isFreeTour": false,
- "currency": "EUR",
- "originalPrice": 50,
- "included": [
- "Transporte en autobús.",
- "Guía en español."
], - "notIncluded": [ ],
- "cancelPolicy": "",
- "cancelPolicies": [
- {
- "hours": 6,
- "penalty": 0,
- "type": "percent"
}
], - "infoVoucher": "<p>Nos encontraremos en <b>la </b><meta charset=\"utf-8\" /><b id=\"docs-internal-guid-1d36f955-7fff-d420-4d2d-b17e783b7bd8\">Capilla de San Roque, en Pontevedra. </b>Recomendamos estar en el punto de encuentro 10 minutos antes del inicio de la actividad. </p>\n",
- "duration": {
- "min": 570,
- "max": 0,
- "duration": 570
}, - "advance": {
- "days": null,
- "hour": null,
- "minutes_before": 540
}, - "address": {
- "address": "",
- "shortAddress": "Capilla de San Roque.",
- "latitude": 42.429729,
- "longitude": -8.651056,
- "zoom": 15
}, - "accessibility": {
- "code": 200,
- "description": "No es apto para personas de movilidad reducida"
}, - "isCategoryPaxGroup": false,
- "hasDynamicPrice": false,
- "rates": [
- {
- "id": 0,
- "text": "Tour en español",
- "categories": [
- {
- "id": 0,
- "text": "Adultos",
- "canBookAlone": true
}, - {
- "id": 1,
- "text": "Niños de 3 a 12 años",
- "canBookAlone": false
}, - {
- "id": 2,
- "text": "Menores de 3 años",
- "canBookAlone": false
}
]
}
]
}, - {
- "id": 123227,
- "type": 1,
- "lang": "es",
- "destinationId": 1152,
- "title": "Excursión a Santiago de Compostela",
- "voucherType": 0,
- "relatedActivities": [
- {
- "id": 123229,
- "lang": "en"
}, - {
- "id": 123230,
- "lang": "fr"
}, - {
- "id": 123231,
- "lang": "it"
}, - {
- "id": 123232,
- "lang": "pt"
}
], - "score": 0,
- "reviews": 0,
- "description": "<b>Viaja hasta Santiago de Compostela desde Pontevedra</b> y descubre los monumentos de esta ciudad Patrimonio de la Humanidad. ¡Una excursión imprescindible!",
- "photos": {
- "header": [
- {
- "caption": "Excursión al Acuario y Rocky Cay",
- "paths": {
}
}
], - "gallery": [
- {
- "caption": "Catedral de Santiago de Compostela",
- "paths": {
}
}, - {
- "caption": "Botafumeiro",
}, - {
- "caption": "Calles de Santiago de Compostela",
- "paths": {
}
}, - {
- "caption": "Pórtico de la Gloria",
}, - {
- "caption": "Palacio de Rajoy",
}, - {
- "caption": "Placa del Camino de Santiago",
}, - {
- "caption": "Imagen del Apóstol Santiago",
}
]
}, - "typologies": [
- {
- "id": 4,
- "key": "excursiones",
- "description": "Excursiones de un día"
}
], - "category": {
- "id": 2,
- "description": "Excursiones de un día"
}, - "subcategory": {
- "id": 9,
- "description": "Excursiones de un día"
}, - "amountType": "PVP",
- "minimumPrice": 50,
- "isFreeTour": false,
- "currency": "EUR",
- "originalPrice": 50,
- "included": [
- "Transporte en minibús.",
- "Guía en español.",
- "Entradas."
], - "notIncluded": [
- "Comida."
], - "cancelPolicy": "",
- "cancelPolicies": [
- {
- "hours": 24,
- "penalty": 0,
- "type": "percent"
}
], - "infoVoucher": "<p>Nos encontraremos en la entrada de la Capilla de San Roque, situada en Rúa Nostramo Lourido, s/n, 36001 Pontevedra. Recomendamos estar en el punto de encuentro al menos 15 minutos antes del inicio del tour. </p>\n",
- "duration": {
- "min": 570,
- "max": 0,
- "duration": 570
}, - "advance": {
- "days": null,
- "hour": null,
- "minutes_before": 540
}, - "address": {
- "address": "",
- "shortAddress": "Capilla de San Roque.",
- "latitude": 42.429806977123604,
- "longitude": -8.651218828088048,
- "zoom": 15
}, - "accessibility": {
- "code": 200,
- "description": "No es apto para personas de movilidad reducida"
}, - "isCategoryPaxGroup": false,
- "hasDynamicPrice": false,
- "rates": [
- {
- "id": 0,
- "text": "Tour en español",
- "categories": [
- {
- "id": 0,
- "text": "Adultos",
- "canBookAlone": true
}, - {
- "id": 1,
- "text": "Niños de 3 a 12 años",
- "canBookAlone": false
}, - {
- "id": 2,
- "text": "Menores de 3 años",
- "canBookAlone": false
}
]
}
]
}
]Lista de nuevas actividades basadas en el destino, idioma y/o fecha.
| destinationId | integer ID del destino para el que se recuperan las actividades. Si no se proporciona, devuelve actividades de todos los destinos. |
| lang | string Enum: "es" "en" "it" "fr" "pt" El idioma en el que se desean obtener los detalles de las actividades. |
| guideLang | string Enum: "es" "en" "it" "fr" "pt" El idioma del guía en que que se desea obtener el detalle de las actividades. |
| date | string <date> La fecha de inicio para filtrar actividades que comienzan a partir de este día. Formato YYYY-MM-DD. |
| currency | string Moneda. |
| Authentication required | string Token de autenticación necesario para acceder al endpoint. |
[- {
- "id": 123246,
- "type": 1,
- "lang": "es",
- "guideLanguages": [
- "es"
], - "destinationId": 1152,
- "secondaryDestinationId": [ ],
- "title": "Excursión a la Costa da Morte y Finisterre",
- "voucherType": 0,
- "relatedActivities": [
- {
- "id": 123247,
- "lang": "pt"
}, - {
- "id": 123470,
- "lang": "en"
}, - {
- "id": 123471,
- "lang": "fr"
}, - {
- "id": 123472,
- "lang": "it"
}
], - "score": 0,
- "reviews": 0,
- "isTopActivity": false,
- "description": "Con esta excursión <b>descubrirás la impresionante Costa da Morte de Galicia</b> y llegarás hasta el mítico faro de Finisterre. ¡Verás unos paisajes únicos!",
- "raw_description": "Con esta excursión descubrirás la impresionante Costa da Morte de Galicia y llegarás hasta el mítico faro de Finisterre. ¡Verás unos paisajes únicos!",
- "longDescription": "Con esta excursión descubrirás la impresionante Costa da Morte de Galicia y llegarás hasta el mítico faro de Finisterre. ¡Verás unos paisajes únicos!",
- "rawLongDescription": "Con esta excursión descubrirás la impresionante Costa da Morte de Galicia y llegarás hasta el mítico faro de Finisterre. ¡Verás unos paisajes únicos!",
- "minAge": 0,
- "photos": {
- "header": [
- {
- "caption": "Excursión al Acuario y Rocky Cay",
- "paths": {
}
}
], - "gallery": [
- {
- "caption": "Final del Camino de Santiago en Finisterre",
}, - {
- "caption": "Santuario de Muxía",
}, - {
- "caption": "Hórreo de Carnota",
}, - {
- "caption": "Cascada de Ézaro",
}, - {
- "caption": "Puente de Pontemaceira",
}, - {
- "caption": "Atardecer en Finisterre",
}
]
}, - "typologies": [
- {
- "id": 4,
- "key": "excursiones",
- "description": "Excursiones de un día"
}
], - "category": {
- "id": 2,
- "description": "Excursiones de un día"
}, - "subcategory": {
- "id": 9,
- "description": "Excursiones de un día"
}, - "amountType": "PVP",
- "minimumPrice": 50,
- "isFreeTour": false,
- "currency": "EUR",
- "originalPrice": 50,
- "included": [
- "Transporte en autobús.",
- "Guía en español."
], - "notIncluded": [ ],
- "cancelPolicy": "",
- "cancelPolicies": [
- {
- "hours": 6,
- "penalty": 0,
- "type": "percent"
}
], - "infoVoucher": "<p>Nos encontraremos en <b>la </b><meta charset=\"utf-8\" /><b id=\"docs-internal-guid-1d36f955-7fff-d420-4d2d-b17e783b7bd8\">Capilla de San Roque, en Pontevedra. </b>Recomendamos estar en el punto de encuentro 10 minutos antes del inicio de la actividad. </p>\n",
- "duration": {
- "min": 570,
- "max": 0,
- "duration": 570
}, - "advance": {
- "days": null,
- "hour": null,
- "minutes_before": 540
}, - "address": {
- "address": "",
- "shortAddress": "Capilla de San Roque.",
- "latitude": 42.429729,
- "longitude": -8.651056,
- "zoom": 15
}, - "accessibility": {
- "code": 200,
- "description": "No es apto para personas de movilidad reducida"
}, - "isCategoryPaxGroup": false,
- "hasDynamicPrice": false,
- "rates": [
- {
- "id": 0,
- "text": "Tour en español",
- "categories": [
- {
- "id": 0,
- "text": "Adultos",
- "canBookAlone": true
}, - {
- "id": 1,
- "text": "Niños de 3 a 12 años",
- "canBookAlone": false
}, - {
- "id": 2,
- "text": "Menores de 3 años",
- "canBookAlone": false
}
]
}
]
}, - {
- "id": 123227,
- "type": 1,
- "lang": "es",
- "destinationId": 1152,
- "title": "Excursión a Santiago de Compostela",
- "voucherType": 0,
- "relatedActivities": [
- {
- "id": 123229,
- "lang": "en"
}, - {
- "id": 123230,
- "lang": "fr"
}, - {
- "id": 123231,
- "lang": "it"
}, - {
- "id": 123232,
- "lang": "pt"
}
], - "score": 0,
- "reviews": 0,
- "description": "<b>Viaja hasta Santiago de Compostela desde Pontevedra</b> y descubre los monumentos de esta ciudad Patrimonio de la Humanidad. ¡Una excursión imprescindible!",
- "photos": {
- "header": [
- {
- "caption": "Excursión al Acuario y Rocky Cay",
- "paths": {
}
}
], - "gallery": [
- {
- "caption": "Catedral de Santiago de Compostela",
- "paths": {
}
}, - {
- "caption": "Botafumeiro",
}, - {
- "caption": "Calles de Santiago de Compostela",
- "paths": {
}
}, - {
- "caption": "Pórtico de la Gloria",
}, - {
- "caption": "Palacio de Rajoy",
}, - {
- "caption": "Placa del Camino de Santiago",
}, - {
- "caption": "Imagen del Apóstol Santiago",
}
]
}, - "typologies": [
- {
- "id": 4,
- "key": "excursiones",
- "description": "Excursiones de un día"
}
], - "category": {
- "id": 2,
- "description": "Excursiones de un día"
}, - "subcategory": {
- "id": 9,
- "description": "Excursiones de un día"
}, - "amountType": "PVP",
- "minimumPrice": 50,
- "isFreeTour": false,
- "currency": "EUR",
- "originalPrice": 50,
- "included": [
- "Transporte en minibús.",
- "Guía en español.",
- "Entradas."
], - "notIncluded": [
- "Comida."
], - "cancelPolicy": "",
- "cancelPolicies": [
- {
- "hours": 24,
- "penalty": 0,
- "type": "percent"
}
], - "infoVoucher": "<p>Nos encontraremos en la entrada de la Capilla de San Roque, situada en Rúa Nostramo Lourido, s/n, 36001 Pontevedra. Recomendamos estar en el punto de encuentro al menos 15 minutos antes del inicio del tour. </p>\n",
- "duration": {
- "min": 570,
- "max": 0,
- "duration": 570
}, - "advance": {
- "days": null,
- "hour": null,
- "minutes_before": 540
}, - "address": {
- "address": "",
- "shortAddress": "Capilla de San Roque.",
- "latitude": 42.429806977123604,
- "longitude": -8.651218828088048,
- "zoom": 15
}, - "accessibility": {
- "code": 200,
- "description": "No es apto para personas de movilidad reducida"
}, - "isCategoryPaxGroup": false,
- "hasDynamicPrice": false,
- "rates": [
- {
- "id": 0,
- "text": "Tour en español",
- "categories": [
- {
- "id": 0,
- "text": "Adultos",
- "canBookAlone": true
}, - {
- "id": 1,
- "text": "Niños de 3 a 12 años",
- "canBookAlone": false
}, - {
- "id": 2,
- "text": "Menores de 3 años",
- "canBookAlone": false
}
]
}
]
}
]Listado de actividades por coordenadas.
| guideLang | string Enum: "es" "en" "it" "fr" "pt" El idioma del guía en que que se desea obtener el detalle de las actividades. |
| currency | any En el atributo minimunPrice va a traer los montos convertidos a esta moneda |
| lang | string Enum: "es" "en" "it" "fr" "pt" Idioma |
| category | any Id de la categoria a consultar |
| subCategory | any Id de la subcategoría a consultar |
| Authentication required | string Token de autenticación |
| lat | number <float> Latitud |
| long | number <float> Longitud |
| distance | number <float> Distancia |
{- "lat": 0.1,
- "long": 0.1,
- "distance": 0.1
}[- {
- "id": 123246,
- "type": 1,
- "lang": "es",
- "guideLanguages": [
- "es"
], - "destinationId": 1152,
- "secondaryDestinationId": [ ],
- "title": "Excursión a la Costa da Morte y Finisterre",
- "voucherType": 0,
- "relatedActivities": [
- {
- "id": 123247,
- "lang": "pt"
}, - {
- "id": 123470,
- "lang": "en"
}, - {
- "id": 123471,
- "lang": "fr"
}, - {
- "id": 123472,
- "lang": "it"
}
], - "score": 0,
- "reviews": 0,
- "isTopActivity": false,
- "description": "Con esta excursión <b>descubrirás la impresionante Costa da Morte de Galicia</b> y llegarás hasta el mítico faro de Finisterre. ¡Verás unos paisajes únicos!",
- "raw_description": "Con esta excursión descubrirás la impresionante Costa da Morte de Galicia y llegarás hasta el mítico faro de Finisterre. ¡Verás unos paisajes únicos!",
- "longDescription": "Con esta excursión descubrirás la impresionante Costa da Morte de Galicia y llegarás hasta el mítico faro de Finisterre. ¡Verás unos paisajes únicos!",
- "rawLongDescription": "Con esta excursión descubrirás la impresionante Costa da Morte de Galicia y llegarás hasta el mítico faro de Finisterre. ¡Verás unos paisajes únicos!",
- "minAge": 0,
- "photos": {
- "header": [
- {
- "caption": "Excursión al Acuario y Rocky Cay",
- "paths": {
}
}
], - "gallery": [
- {
- "caption": "Final del Camino de Santiago en Finisterre",
}, - {
- "caption": "Santuario de Muxía",
}, - {
- "caption": "Hórreo de Carnota",
}, - {
- "caption": "Cascada de Ézaro",
}, - {
- "caption": "Puente de Pontemaceira",
}, - {
- "caption": "Atardecer en Finisterre",
}
]
}, - "typologies": [
- {
- "id": 4,
- "key": "excursiones",
- "description": "Excursiones de un día"
}
], - "category": {
- "id": 2,
- "description": "Excursiones de un día"
}, - "subcategory": {
- "id": 9,
- "description": "Excursiones de un día"
}, - "amountType": "PVP",
- "minimumPrice": 50,
- "isFreeTour": false,
- "currency": "EUR",
- "originalPrice": 50,
- "included": [
- "Transporte en autobús.",
- "Guía en español."
], - "notIncluded": [ ],
- "cancelPolicy": "",
- "cancelPolicies": [
- {
- "hours": 6,
- "penalty": 0,
- "type": "percent"
}
], - "infoVoucher": "<p>Nos encontraremos en <b>la </b><meta charset=\"utf-8\" /><b id=\"docs-internal-guid-1d36f955-7fff-d420-4d2d-b17e783b7bd8\">Capilla de San Roque, en Pontevedra. </b>Recomendamos estar en el punto de encuentro 10 minutos antes del inicio de la actividad. </p>\n",
- "duration": {
- "min": 570,
- "max": 0,
- "duration": 570
}, - "advance": {
- "days": null,
- "hour": null,
- "minutes_before": 540
}, - "address": {
- "address": "",
- "shortAddress": "Capilla de San Roque.",
- "latitude": 42.429729,
- "longitude": -8.651056,
- "zoom": 15
}, - "accessibility": {
- "code": 200,
- "description": "No es apto para personas de movilidad reducida"
}, - "isCategoryPaxGroup": false,
- "hasDynamicPrice": false,
- "rates": [
- {
- "id": 0,
- "text": "Tour en español",
- "categories": [
- {
- "id": 0,
- "text": "Adultos",
- "canBookAlone": true
}, - {
- "id": 1,
- "text": "Niños de 3 a 12 años",
- "canBookAlone": false
}, - {
- "id": 2,
- "text": "Menores de 3 años",
- "canBookAlone": false
}
]
}
]
}, - {
- "id": 123227,
- "type": 1,
- "lang": "es",
- "destinationId": 1152,
- "title": "Excursión a Santiago de Compostela",
- "voucherType": 0,
- "relatedActivities": [
- {
- "id": 123229,
- "lang": "en"
}, - {
- "id": 123230,
- "lang": "fr"
}, - {
- "id": 123231,
- "lang": "it"
}, - {
- "id": 123232,
- "lang": "pt"
}
], - "score": 0,
- "reviews": 0,
- "description": "<b>Viaja hasta Santiago de Compostela desde Pontevedra</b> y descubre los monumentos de esta ciudad Patrimonio de la Humanidad. ¡Una excursión imprescindible!",
- "photos": {
- "header": [
- {
- "caption": "Excursión al Acuario y Rocky Cay",
- "paths": {
}
}
], - "gallery": [
- {
- "caption": "Catedral de Santiago de Compostela",
- "paths": {
}
}, - {
- "caption": "Botafumeiro",
}, - {
- "caption": "Calles de Santiago de Compostela",
- "paths": {
}
}, - {
- "caption": "Pórtico de la Gloria",
}, - {
- "caption": "Palacio de Rajoy",
}, - {
- "caption": "Placa del Camino de Santiago",
}, - {
- "caption": "Imagen del Apóstol Santiago",
}
]
}, - "typologies": [
- {
- "id": 4,
- "key": "excursiones",
- "description": "Excursiones de un día"
}
], - "category": {
- "id": 2,
- "description": "Excursiones de un día"
}, - "subcategory": {
- "id": 9,
- "description": "Excursiones de un día"
}, - "amountType": "PVP",
- "minimumPrice": 50,
- "isFreeTour": false,
- "currency": "EUR",
- "originalPrice": 50,
- "included": [
- "Transporte en minibús.",
- "Guía en español.",
- "Entradas."
], - "notIncluded": [
- "Comida."
], - "cancelPolicy": "",
- "cancelPolicies": [
- {
- "hours": 24,
- "penalty": 0,
- "type": "percent"
}
], - "infoVoucher": "<p>Nos encontraremos en la entrada de la Capilla de San Roque, situada en Rúa Nostramo Lourido, s/n, 36001 Pontevedra. Recomendamos estar en el punto de encuentro al menos 15 minutos antes del inicio del tour. </p>\n",
- "duration": {
- "min": 570,
- "max": 0,
- "duration": 570
}, - "advance": {
- "days": null,
- "hour": null,
- "minutes_before": 540
}, - "address": {
- "address": "",
- "shortAddress": "Capilla de San Roque.",
- "latitude": 42.429806977123604,
- "longitude": -8.651218828088048,
- "zoom": 15
}, - "accessibility": {
- "code": 200,
- "description": "No es apto para personas de movilidad reducida"
}, - "isCategoryPaxGroup": false,
- "hasDynamicPrice": false,
- "rates": [
- {
- "id": 0,
- "text": "Tour en español",
- "categories": [
- {
- "id": 0,
- "text": "Adultos",
- "canBookAlone": true
}, - {
- "id": 1,
- "text": "Niños de 3 a 12 años",
- "canBookAlone": false
}, - {
- "id": 2,
- "text": "Menores de 3 años",
- "canBookAlone": false
}
]
}
]
}
]| Authentication required | string Token de autenticación. |
| activityId required | integer Identificador de la actividad |
| date required | string <date> Fecha de la actividad |
| currency required | string Moneda en la que se hace la reserva |
required | object (ItemRate) Tarifas de un item |
| time | string Hora de la actividad |
{- "activityId": 0,
- "date": "2019-08-24",
- "currency": "string",
- "rate": {
- "id": "0",
- "categories": [
- {
- "id": "0",
- "quantity": 2
}, - {
- "id": "1",
- "quantity": 1
}
]
}, - "time": "string"
}{- "cartId": "string",
- "items": {
- "itemId": "string",
- "date": "2019-08-24",
- "activity": {
- "id": 0,
- "title": "string"
}, - "time": "string",
- "rate": {
- "id": "string",
- "rate": "string",
- "categories": [
- {
- "id": "string",
- "category": null,
- "price": 0.1,
- "totalPrice": 0.1,
- "quantity": 0,
- "amountType": "PVP"
}
]
}
}, - "warnings": null,
- "prices": {
- "EUR": null,
- "USD": null,
- "GBP": null,
- "BRL": null,
- "MXN": null,
- "COP": null,
- "CLP": null,
- "PEN": null,
- "amountType": "PVP"
}, - "agencyPrices": {
- "EUR": null,
- "USD": null,
- "GBP": null,
- "BRL": null,
- "MXN": null,
- "COP": null,
- "CLP": null,
- "PEN": null,
- "amountType": "PVP"
}
}Recuperar un carrito existente
| cartId required | string Id de carrito |
| currency | string Enum: "EUR" "GBP" "USD" Moneda en la que se quiere visualizar el precio. Por defecto es EUR. |
{- "cartId": "string",
- "items": {
- "itemId": "string",
- "date": "2019-08-24",
- "activity": {
- "id": 0,
- "title": "string"
}, - "time": "string",
- "rate": {
- "id": "string",
- "rate": "string",
- "categories": [
- {
- "id": "string",
- "category": null,
- "price": 0.1,
- "totalPrice": 0.1,
- "quantity": 0,
- "amountType": "PVP"
}
]
}
}, - "warnings": null,
- "prices": {
- "EUR": null,
- "USD": null,
- "GBP": null,
- "BRL": null,
- "MXN": null,
- "COP": null,
- "CLP": null,
- "PEN": null,
- "amountType": "PVP"
}, - "agencyPrices": {
- "EUR": null,
- "USD": null,
- "GBP": null,
- "BRL": null,
- "MXN": null,
- "COP": null,
- "CLP": null,
- "PEN": null,
- "amountType": "PVP"
}
}| cartId required | string Id de carrito |
| Authentication | any |
| activityId required | integer Identificador de la actividad |
| date required | string <date> Fecha de la actividad |
| currency required | string Moneda en la que se hace la reserva |
required | object (ItemRate) Tarifas de un item |
| time | string Hora de la actividad |
{- "activityId": 0,
- "date": "2019-08-24",
- "currency": "string",
- "rate": {
- "id": "0",
- "categories": [
- {
- "id": "0",
- "quantity": 2
}, - {
- "id": "1",
- "quantity": 1
}
]
}, - "time": "string"
}{- "cartId": "string",
- "items": {
- "itemId": "string",
- "date": "2019-08-24",
- "activity": {
- "id": 0,
- "title": "string"
}, - "time": "string",
- "rate": {
- "id": "string",
- "rate": "string",
- "categories": [
- {
- "id": "string",
- "category": null,
- "price": 0.1,
- "totalPrice": 0.1,
- "quantity": 0,
- "amountType": "PVP"
}
]
}
}, - "warnings": null,
- "prices": {
- "EUR": null,
- "USD": null,
- "GBP": null,
- "BRL": null,
- "MXN": null,
- "COP": null,
- "CLP": null,
- "PEN": null,
- "amountType": "PVP"
}, - "agencyPrices": {
- "EUR": null,
- "USD": null,
- "GBP": null,
- "BRL": null,
- "MXN": null,
- "COP": null,
- "CLP": null,
- "PEN": null,
- "amountType": "PVP"
}
}Recuperar un carrito existente
| cartId required | string Id de carrito |
| itemId required | string Id del item del carrito |
| currency | string Enum: "EUR" "GBP" "USD" Moneda en la que se quiere visualizar el precio. Por defecto es EUR. |
{- "itemId": "string",
- "date": "2019-08-24",
- "activity": {
- "id": 0,
- "title": "string"
}, - "time": "string",
- "rate": {
- "id": "string",
- "rate": "string",
- "categories": [
- {
- "id": "string",
- "category": null,
- "price": 0.1,
- "totalPrice": 0.1,
- "quantity": 0,
- "amountType": "PVP"
}
]
}
}Comprueba la disponibilidad de los items de un carrito en caso de que la actividad sea integrada
| cartId required | string Id de carrito |
{- "itemId": "string",
- "isAvailable": true
}Añade un traslado al carrito
| from required | integer <int32> Pick up zone |
| to required | integer <int32> |
| vehicle required | integer <int32> |
| pax required | integer <int32> how many people |
| date required | string <full-date> Y-m-d date format |
| time required | string <date-time> H:i date format |
{- "from": 50,
- "to": 53,
- "vehicle": 42,
- "pax": 3,
- "date": "2021-12-01",
- "currency": "EUR",
- "time": "09:45"
}{- "cartId": "string",
- "items": {
- "transfer": {
- "cityId": 0,
- "fromZone": 0,
- "toZone": 0,
- "vehicleId": 0
}, - "itemId": "string",
- "date": "2019-08-24",
- "activity": {
- "id": 0,
- "title": "string"
}, - "time": "string",
- "rate": {
- "id": "string",
- "rate": "string",
- "categories": [
- {
- "id": "string",
- "category": null,
- "price": 0.1,
- "totalPrice": 0.1,
- "quantity": 0,
- "amountType": "PVP"
}
]
}
}, - "warnings": null,
- "prices": {
- "EUR": null,
- "USD": null,
- "GBP": null,
- "BRL": null,
- "MXN": null,
- "COP": null,
- "CLP": null,
- "PEN": null,
- "amountType": "PVP"
}, - "agencyPrices": {
- "EUR": null,
- "USD": null,
- "GBP": null,
- "BRL": null,
- "MXN": null,
- "COP": null,
- "CLP": null,
- "PEN": null,
- "amountType": "PVP"
}
}Añade un traslado al carrito
| from required | integer <int32> Pick up zone |
| to required | integer <int32> |
| vehicle required | integer <int32> |
| pax required | integer <int32> how many people |
| date required | string <full-date> Y-m-d date format |
| time required | string <date-time> H:i date format |
{- "from": 50,
- "to": 53,
- "vehicle": 42,
- "pax": 5,
- "date": "2021-12-31",
- "time": "10:00"
}{- "cartId": "string",
- "items": {
- "transfer": {
- "cityId": 0,
- "fromZone": 0,
- "toZone": 0,
- "vehicleId": 0
}, - "itemId": "string",
- "date": "2019-08-24",
- "activity": {
- "id": 0,
- "title": "string"
}, - "time": "string",
- "rate": {
- "id": "string",
- "rate": "string",
- "categories": [
- {
- "id": "string",
- "category": null,
- "price": 0.1,
- "totalPrice": 0.1,
- "quantity": 0,
- "amountType": "PVP"
}
]
}
}, - "warnings": null,
- "prices": {
- "EUR": null,
- "USD": null,
- "GBP": null,
- "BRL": null,
- "MXN": null,
- "COP": null,
- "CLP": null,
- "PEN": null,
- "amountType": "PVP"
}, - "agencyPrices": {
- "EUR": null,
- "USD": null,
- "GBP": null,
- "BRL": null,
- "MXN": null,
- "COP": null,
- "CLP": null,
- "PEN": null,
- "amountType": "PVP"
}
}Países
| lang | string Enum: "es" "en" "it" "fr" "pt" Idioma |
| Authentication required | string Token de conexión |
[- {
- "id": 47,
- "isoNum": 724,
- "ISO2": "some text",
- "ISO3": "some text",
- "travelInsurance": true,
- "nombre": "some text",
- "name": "some text",
- "prefix": "+34",
- "photos": {
- "header": [
- {
- "caption": "some text",
- "paths": {
- "original": "some text",
- "thumbnail": "some text"
}
}, - {
- "caption": "some text",
- "paths": {
- "original": "some text",
- "thumbnail": "some text"
}
}
]
}
}, - {
- "id": 58,
- "isoNum": 724,
- "ISO2": "some text",
- "ISO3": "some text",
- "travelInsurance": true,
- "nombre": "some text",
- "name": "some text",
- "prefix": "+34",
- "photos": {
- "header": [
- {
- "caption": "some text",
- "paths": {
- "original": "some text",
- "thumbnail": "some text"
}
}, - {
- "caption": "some text",
- "paths": {
- "original": "some text",
- "thumbnail": "some text"
}
}
]
}
}
]País
| id required | integer Id del país |
| lang | string Enum: "es" "en" "it" "fr" "pt" Idioma |
| Authentication required | string Token de conexión |
{- "id": 50,
- "name": "some text",
- "ISO3": "some text",
- "ISONum": "some text",
- "ISO2": "some text",
- "photos": {
- "header": [
- {
- "caption": { },
- "paths": {
- "original": "some text",
- "thumbnail": "some text"
}
}, - {
- "caption": { },
- "paths": {
- "original": "some text",
- "thumbnail": "some text"
}
}
], - "gallery": [
- {
- "caption": { },
- "paths": {
- "original": "some text",
- "thumbnail": "some text"
}
}, - {
- "caption": { },
- "paths": {
- "original": "some text",
- "thumbnail": "some text"
}
}
]
}, - "travelInsurance": true
}Destinos
| lang | string Enum: "es" "en" "it" "fr" "pt" Idioma |
| Authentication required | string Token de conexión |
[- {
- "id": 1,
- "countryId": 112,
- "name": "Venice",
- "hasTransfers": true,
- "hasActivities": true,
- "gps": {
- "latitude": 45.43472,
- "longitude": 12.338333
}, - "iata": "VCE",
- "photos": {
- "header": [
- {
- "caption": "Venice",
- "paths": {
}
}
]
}
}, - {
- "id": 2,
- "countryId": 73,
- "name": "Madrid",
- "hasTransfers": true,
- "hasActivities": true,
- "gps": {
- "latitude": 40.416143,
- "longitude": -3.700418
}, - "iata": "MAD",
- "photos": {
- "header": [
- {
- "caption": "Madrid",
- "paths": {
}
}
]
}
}
]Detalle de un destino
| id required | integer Id del destino |
| lang | string Enum: "es" "en" "it" "fr" "pt" Idioma |
| Authentication required | string Token de autenticación |
{- "id": 1,
- "countryId": "112,",
- "name": "Madrid",
- "hasTranfers": true,
- "hasActivities": true,
- "gps": {
- "latitude": 40.416143,
- "longitude": -3.700418
}, - "iata": "MAD",
- "photos": {
- "header": [
- {
- "caption": "Madrid",
- "paths": {
}
}
]
}
}| id required | integer Identificativo de país |
| lang | string Enum: "es" "en" "it" "fr" "pt" Idioma en el que recibir el listado |
| Authentication required | string Token de autenticación |
[- {
- "id": 77,
- "countryId": 112,
- "name": "some text",
- "hasTranfers": true,
- "hasActivities": true,
- "gps": {
- "latitude": 40.416143,
- "longitude": -3.700418
}, - "photos": {
- "header": [
- {
- "caption": "some text",
- "paths": {
- "original": "some text",
- "thumbnail": "some text"
}
}, - {
- "caption": "some text",
- "paths": {
- "original": "some text",
- "thumbnail": "some text"
}
}
]
}
}, - {
- "id": 46,
- "countryId": 112,
- "name": "some text",
- "hasTranfers": true,
- "hasActivities": true,
- "photos": {
- "header": [
- {
- "caption": "some text",
- "paths": {
- "original": "some text",
- "thumbnail": "some text"
}
}, - {
- "caption": "some text",
- "paths": {
- "original": "some text",
- "thumbnail": "some text"
}
}
]
}
}
]Calendario de un destino
| id required | string Id de destinations. |
| dateFrom | string <date> Fecha de inicio de disponibilidad (YYYY-MM-DD) |
| dateTo | string <date> Fecha fin de disponibilidad (YYYY-MM-DD) |
| lang | string Enum: "es" "mx" "ar" "en" "it" "fr" "pt" "br" Language |
| guideLang | string Enum: "es" "en" "it" "fr" "pt" El idioma del guía en que que se desea obtener el detalle de las actividades. |
| currency | string Moneda |
| category | any Id de la categoria a consultar |
| subCategory | any Id de la subcategoría a consultar |
| Authentication required | string Token de autenticación |
{- "activityId": 65,
- "currency": "EUR",
- "timeZone": "America/New_York",
- "hasHours": true,
- "schedule": [
- {
- "date": "2021-05-08",
- "availability": 0,
- "times": [
- {
- "time": "09:15",
- "quota": 0,
- "quotaAvailable": false
}
], - "rates": {
- "0": {
- "0": {
- "price": "49",
- "offerPrice": "49",
- "canBookAlone": true,
- "amountType": "PVP"
}, - "1": {
- "price": "27",
- "offerPrice": "27",
- "canBookAlone": false,
- "amountType": "PVP"
}, - "2": {
- "price": "0",
- "offerPrice": "0",
- "canBookAlone": false,
- "amountType": "PVP"
}
}
}
}, - {
- "date": "2021-05-08",
- "availability": 0,
- "times": [
- {
- "time": "09:15",
- "quota": 0,
- "quotaAvailable": false
}
], - "rates": {
- "0": {
- "0": {
- "price": "49",
- "offerPrice": "49",
- "canBookAlone": true,
- "amountType": "PVP"
}, - "1": {
- "price": "27",
- "offerPrice": "27",
- "canBookAlone": false,
- "amountType": "PVP"
}, - "2": {
- "price": "0",
- "offerPrice": "0",
- "canBookAlone": false,
- "amountType": "PVP"
}
}
}
}
]
}Calendario por coordenadas
| dateFrom | string <date> Fecha de inicio de disponibilidad (YYYY-MM-DD) |
| dateTo | string <date> Fecha fin de disponibilidad (YYYY-MM-DD) |
| lang | string Enum: "es" "en" "it" "fr" "pt" Language |
| guideLang | string Enum: "es" "en" "it" "fr" "pt" El idioma del guía en que que se desea obtener el detalle de las actividades. |
| currency | string Moneda |
| category | any Id de la categoria a consultar |
| subCategory | any Id de la subcategoría a consultar |
| Authentication required | string Token de autenticación |
| lat | number <float> Latitud |
| long | number <float> Longitud |
| distance | number <float> Distancia |
{- "lat": 0.1,
- "long": 0.1,
- "distance": 0.1
}{- "activityId": 65,
- "currency": "EUR",
- "timeZone": "America/New_York",
- "hasHours": true,
- "schedule": [
- {
- "date": "2021-05-08",
- "availability": 0,
- "times": [
- {
- "time": "09:15",
- "quota": 0,
- "quotaAvailable": false
}
], - "rates": {
- "0": {
- "0": {
- "price": "49",
- "offerPrice": "49",
- "canBookAlone": true,
- "amountType": "PVP"
}, - "1": {
- "price": "27",
- "offerPrice": "27",
- "canBookAlone": false,
- "amountType": "PVP"
}, - "2": {
- "price": "0",
- "offerPrice": "0",
- "canBookAlone": false,
- "amountType": "PVP"
}
}
}
}, - {
- "date": "2021-05-08",
- "availability": 0,
- "times": [
- {
- "time": "09:15",
- "quota": 0,
- "quotaAvailable": false
}
], - "rates": {
- "0": {
- "0": {
- "price": "49",
- "offerPrice": "49",
- "canBookAlone": true,
- "amountType": "PVP"
}, - "1": {
- "price": "27",
- "offerPrice": "27",
- "canBookAlone": false,
- "amountType": "PVP"
}, - "2": {
- "price": "0",
- "offerPrice": "0",
- "canBookAlone": false,
- "amountType": "PVP"
}
}
}
}
]
}Calendario de una actividad
| id required | string Id de actividad. |
| dateFrom | string <date> Fecha de inicio de disponibilidad (YYYY-MM-DD) |
| dateTo | string <date> Fecha fin de disponibilidad (YYYY-MM-DD) |
| currency | string Moneda |
| Authentication required | string Token de autenticación |
{- "activityId": 65,
- "currency": "EUR",
- "timeZone": "America/New_York",
- "hasHours": true,
- "schedule": [
- {
- "date": "2021-05-08",
- "availability": 0,
- "times": [
- {
- "time": "09:15",
- "quota": 0,
- "quotaAvailable": false
}
], - "rates": {
- "0": {
- "0": {
- "price": "49",
- "offerPrice": "49",
- "canBookAlone": true,
- "amountType": "PVP"
}, - "1": {
- "price": "27",
- "offerPrice": "27",
- "canBookAlone": false,
- "amountType": "PVP"
}, - "2": {
- "price": "0",
- "offerPrice": "0",
- "canBookAlone": false,
- "amountType": "PVP"
}
}
}
}, - {
- "date": "2021-05-08",
- "availability": 0,
- "times": [
- {
- "time": "09:15",
- "quota": 0,
- "quotaAvailable": false
}
], - "rates": {
- "0": {
- "0": {
- "price": "49",
- "offerPrice": "49",
- "canBookAlone": true,
- "amountType": "PVP"
}, - "1": {
- "price": "27",
- "offerPrice": "27",
- "canBookAlone": false,
- "amountType": "PVP"
}, - "2": {
- "price": "0",
- "offerPrice": "0",
- "canBookAlone": false,
- "amountType": "PVP"
}
}
}
}
]
}| activityId required | string El id de la actividad |
| dateFrom | string <date> La fecha de inicio del calendario |
| dateTo | string <date> La fecha de fin del calendario |
| currency | string El código de la moneda |
{- "activityId": "373",
- "currency": "COP",
- "timeZone": "Europe/Rome",
- "hasHours": true,
- "schedule": [
- {
- "date": "2024-12-04",
- "baseRatesId": [
- "e1d014a"
]
}
], - "baseRates": {
- "property1": {
- "baseRateId": "e1d014a",
- "hours": [
- {
- "hour": "09:30",
- "quota": -1,
- "rates": [
- {
- "id": 0,
- "text": "Milán al completo",
- "quota": -1,
- "supplements": [
- {
- "type": "solo-booking",
- "amount": 108,
- "amountType": "NET"
}
], - "categories": [
- {
- "id": "0",
- "text": "Adultos",
- "age": [
- { }
], - "group": [
- { }
], - "price": 326727,
- "originalPrice": 326727,
- "supplement": [
- { }
], - "canBookAlone": true,
- "amountType": "NET"
}
]
}
]
}
]
}, - "property2": {
- "baseRateId": "e1d014a",
- "hours": [
- {
- "hour": "09:30",
- "quota": -1,
- "rates": [
- {
- "id": 0,
- "text": "Milán al completo",
- "quota": -1,
- "supplements": [
- {
- "type": "solo-booking",
- "amount": 108,
- "amountType": "NET"
}
], - "categories": [
- {
- "id": "0",
- "text": "Adultos",
- "age": [
- { }
], - "group": [
- { }
], - "price": 326727,
- "originalPrice": 326727,
- "supplement": [
- { }
], - "canBookAlone": true,
- "amountType": "NET"
}
]
}
]
}
]
}
}
}| dateFrom | string <date> La fecha de inicio del calendario |
| dateTo | string <date> La fecha de fin del calendario |
| lang | string Enum: "es" "mx" "ar" "en" "it" "fr" "pt" "br" Language |
| guideLang | string Enum: "es" "mx" "ar" "en" "it" "fr" "pt" "br" El idioma del guía en que que se desea obtener el detalle de las actividades. |
| currency | string El código de la moneda |
| page | integer Pagina a consultar |
| destinationId | integer El ID del destino |
{- "destinationId": 1
}{- "currentPage": 0,
- "totalPages": 0,
- "calendars": [
- {
- "activityId": "373",
- "currency": "COP",
- "timeZone": "Europe/Rome",
- "hasHours": true,
- "schedule": [
- {
- "date": "2024-12-04",
- "baseRatesId": [
- "e1d014a"
]
}
], - "baseRates": {
- "property1": {
- "baseRateId": "e1d014a",
- "hours": [
- {
- "hour": "09:30",
- "quota": -1,
- "rates": [
- {
- "id": 0,
- "text": "Milán al completo",
- "quota": -1,
- "supplements": [
- null
], - "categories": [
- { }
]
}
]
}
]
}, - "property2": {
- "baseRateId": "e1d014a",
- "hours": [
- {
- "hour": "09:30",
- "quota": -1,
- "rates": [
- {
- "id": 0,
- "text": "Milán al completo",
- "quota": -1,
- "supplements": [
- null
], - "categories": [
- { }
]
}
]
}
]
}
}
}, - {
- "activityId": "373",
- "currency": "COP",
- "timeZone": "Europe/Rome",
- "hasHours": true,
- "schedule": [
- {
- "date": "2024-12-04",
- "baseRatesId": [
- "e1d014a"
]
}
], - "baseRates": {
- "property1": {
- "baseRateId": "e1d014a",
- "hours": [
- {
- "hour": "09:30",
- "quota": -1,
- "rates": [
- {
- "id": 0,
- "text": "Milán al completo",
- "quota": -1,
- "supplements": [
- null
], - "categories": [
- { }
]
}
]
}
]
}, - "property2": {
- "baseRateId": "e1d014a",
- "hours": [
- {
- "hour": "09:30",
- "quota": -1,
- "rates": [
- {
- "id": 0,
- "text": "Milán al completo",
- "quota": -1,
- "supplements": [
- null
], - "categories": [
- { }
]
}
]
}
]
}
}
}
]
}Calendario de un zona
| id required | string Id de la zona. |
| dateFrom | string <date> Fecha de inicio de disponibilidad (YYYY-MM-DD) |
| dateTo | string <date> Fecha fin de disponibilidad (YYYY-MM-DD) |
| lang | string Enum: "es" "mx" "ar" "en" "it" "fr" "pt" "br" Language |
| guideLang | string Enum: "es" "en" "it" "fr" "pt" Idioma del guía |
| currency | string Moneda |
| category | any Id de la categoria a consultar |
| subCategory | any Id de la subcategoría a consultar |
| Authentication required | string Token de autenticación |
{- "activityId": 65,
- "currency": "EUR",
- "timeZone": "America/New_York",
- "hasHours": true,
- "schedule": [
- {
- "date": "2021-05-08",
- "availability": 0,
- "times": [
- {
- "time": "09:15",
- "quota": 0,
- "quotaAvailable": false
}
], - "rates": {
- "0": {
- "0": {
- "price": "49",
- "offerPrice": "49",
- "canBookAlone": true,
- "amountType": "PVP"
}, - "1": {
- "price": "27",
- "offerPrice": "27",
- "canBookAlone": false,
- "amountType": "PVP"
}, - "2": {
- "price": "0",
- "offerPrice": "0",
- "canBookAlone": false,
- "amountType": "PVP"
}
}
}
}, - {
- "date": "2021-05-08",
- "availability": 0,
- "times": [
- {
- "time": "09:15",
- "quota": 0,
- "quotaAvailable": false
}
], - "rates": {
- "0": {
- "0": {
- "price": "49",
- "offerPrice": "49",
- "canBookAlone": true,
- "amountType": "PVP"
}, - "1": {
- "price": "27",
- "offerPrice": "27",
- "canBookAlone": false,
- "amountType": "PVP"
}, - "2": {
- "price": "0",
- "offerPrice": "0",
- "canBookAlone": false,
- "amountType": "PVP"
}
}
}
}
]
}Detalle de una zona
| zoneId required | integer Id de la zona |
| Authentication required | string Token de autenticación. |
{- "id": 1,
- "name": "Rías Baixas",
- "hasTransfers": false,
- "hasActivities": true,
- "photos": {
- "header": [
- {
- "caption": "Rías Baixas",
- "paths": {
}
}
]
}
}| Authentication required | string Token de autenticación. |
[- {
- "id": 1,
- "name": "Rías Baixas",
- "hasTransfers": false,
- "hasActivities": true,
- "photos": {
- "header": [
- {
- "caption": "Rías Baixas",
- "paths": {
}
}
]
}
}, - {
- "id": 2,
- "name": "Cantabria",
- "hasTransfers": false,
- "hasActivities": true,
- "photos": {
- "header": [
- {
- "caption": "Cantabria",
- "paths": {
}
}
]
}
}, - {
- "id": 3,
- "name": "Canary Islands",
- "hasTransfers": false,
- "hasActivities": true,
- "photos": {
- "header": [
- {
- "caption": "Canary Islands",
- "paths": {
}
}
]
}
}, - {
- "id": 4,
- "name": "The East Coast",
- "hasTransfers": false,
- "hasActivities": true,
- "photos": {
- "header": [
- {
- "caption": "The East Coast",
- "paths": {
}
}
]
}
}, - {
- "id": 5,
- "name": "The West Coast",
- "hasTransfers": false,
- "hasActivities": true,
- "photos": {
- "header": [
- {
- "caption": "The West Coast",
- "paths": {
}
}
]
}
}
]| zoneId required | any |
| category | any Id de la categoria a consultar |
| subCategory | any Id de la subcategoría a consultar |
| lang | string Enum: "es" "en" "it" "fr" "pt" Idioma |
| guideLang | string Enum: "es" "en" "it" "fr" "pt" El idioma del guía en que que se desea obtener el detalle de las actividades. |
| currency | string Moneda |
| Authentication required | string Token de autenticación. |
[- {
- "id": 123246,
- "type": 1,
- "lang": "es",
- "guideLanguages": [
- "es"
], - "destinationId": 1152,
- "secondaryDestinationId": [ ],
- "title": "Excursión a la Costa da Morte y Finisterre",
- "voucherType": 0,
- "relatedActivities": [
- {
- "id": 123247,
- "lang": "pt"
}, - {
- "id": 123470,
- "lang": "en"
}, - {
- "id": 123471,
- "lang": "fr"
}, - {
- "id": 123472,
- "lang": "it"
}
], - "score": 0,
- "reviews": 0,
- "isTopActivity": false,
- "description": "Con esta excursión <b>descubrirás la impresionante Costa da Morte de Galicia</b> y llegarás hasta el mítico faro de Finisterre. ¡Verás unos paisajes únicos!",
- "raw_description": "Con esta excursión descubrirás la impresionante Costa da Morte de Galicia y llegarás hasta el mítico faro de Finisterre. ¡Verás unos paisajes únicos!",
- "longDescription": "Con esta excursión descubrirás la impresionante Costa da Morte de Galicia y llegarás hasta el mítico faro de Finisterre. ¡Verás unos paisajes únicos!",
- "rawLongDescription": "Con esta excursión descubrirás la impresionante Costa da Morte de Galicia y llegarás hasta el mítico faro de Finisterre. ¡Verás unos paisajes únicos!",
- "minAge": 0,
- "photos": {
- "header": [
- {
- "caption": "Excursión al Acuario y Rocky Cay",
- "paths": {
}
}
], - "gallery": [
- {
- "caption": "Final del Camino de Santiago en Finisterre",
}, - {
- "caption": "Santuario de Muxía",
}, - {
- "caption": "Hórreo de Carnota",
}, - {
- "caption": "Cascada de Ézaro",
}, - {
- "caption": "Puente de Pontemaceira",
}, - {
- "caption": "Atardecer en Finisterre",
}
]
}, - "typologies": [
- {
- "id": 4,
- "key": "excursiones",
- "description": "Excursiones de un día"
}
], - "category": {
- "id": 2,
- "description": "Excursiones de un día"
}, - "subcategory": {
- "id": 9,
- "description": "Excursiones de un día"
}, - "amountType": "PVP",
- "minimumPrice": 50,
- "isFreeTour": false,
- "currency": "EUR",
- "originalPrice": 50,
- "included": [
- "Transporte en autobús.",
- "Guía en español."
], - "notIncluded": [ ],
- "cancelPolicy": "",
- "cancelPolicies": [
- {
- "hours": 6,
- "penalty": 0,
- "type": "percent"
}
], - "infoVoucher": "<p>Nos encontraremos en <b>la </b><meta charset=\"utf-8\" /><b id=\"docs-internal-guid-1d36f955-7fff-d420-4d2d-b17e783b7bd8\">Capilla de San Roque, en Pontevedra. </b>Recomendamos estar en el punto de encuentro 10 minutos antes del inicio de la actividad. </p>\n",
- "duration": {
- "min": 570,
- "max": 0,
- "duration": 570
}, - "advance": {
- "days": null,
- "hour": null,
- "minutes_before": 540
}, - "address": {
- "address": "",
- "shortAddress": "Capilla de San Roque.",
- "latitude": 42.429729,
- "longitude": -8.651056,
- "zoom": 15
}, - "accessibility": {
- "code": 200,
- "description": "No es apto para personas de movilidad reducida"
}, - "isCategoryPaxGroup": false,
- "hasDynamicPrice": false,
- "rates": [
- {
- "id": 0,
- "text": "Tour en español",
- "categories": [
- {
- "id": 0,
- "text": "Adultos",
- "canBookAlone": true
}, - {
- "id": 1,
- "text": "Niños de 3 a 12 años",
- "canBookAlone": false
}, - {
- "id": 2,
- "text": "Menores de 3 años",
- "canBookAlone": false
}
]
}
]
}, - {
- "id": 123227,
- "type": 1,
- "lang": "es",
- "destinationId": 1152,
- "title": "Excursión a Santiago de Compostela",
- "voucherType": 0,
- "relatedActivities": [
- {
- "id": 123229,
- "lang": "en"
}, - {
- "id": 123230,
- "lang": "fr"
}, - {
- "id": 123231,
- "lang": "it"
}, - {
- "id": 123232,
- "lang": "pt"
}
], - "score": 0,
- "reviews": 0,
- "description": "<b>Viaja hasta Santiago de Compostela desde Pontevedra</b> y descubre los monumentos de esta ciudad Patrimonio de la Humanidad. ¡Una excursión imprescindible!",
- "photos": {
- "header": [
- {
- "caption": "Excursión al Acuario y Rocky Cay",
- "paths": {
}
}
], - "gallery": [
- {
- "caption": "Catedral de Santiago de Compostela",
- "paths": {
}
}, - {
- "caption": "Botafumeiro",
}, - {
- "caption": "Calles de Santiago de Compostela",
- "paths": {
}
}, - {
- "caption": "Pórtico de la Gloria",
}, - {
- "caption": "Palacio de Rajoy",
}, - {
- "caption": "Placa del Camino de Santiago",
}, - {
- "caption": "Imagen del Apóstol Santiago",
}
]
}, - "typologies": [
- {
- "id": 4,
- "key": "excursiones",
- "description": "Excursiones de un día"
}
], - "category": {
- "id": 2,
- "description": "Excursiones de un día"
}, - "subcategory": {
- "id": 9,
- "description": "Excursiones de un día"
}, - "amountType": "PVP",
- "minimumPrice": 50,
- "isFreeTour": false,
- "currency": "EUR",
- "originalPrice": 50,
- "included": [
- "Transporte en minibús.",
- "Guía en español.",
- "Entradas."
], - "notIncluded": [
- "Comida."
], - "cancelPolicy": "",
- "cancelPolicies": [
- {
- "hours": 24,
- "penalty": 0,
- "type": "percent"
}
], - "infoVoucher": "<p>Nos encontraremos en la entrada de la Capilla de San Roque, situada en Rúa Nostramo Lourido, s/n, 36001 Pontevedra. Recomendamos estar en el punto de encuentro al menos 15 minutos antes del inicio del tour. </p>\n",
- "duration": {
- "min": 570,
- "max": 0,
- "duration": 570
}, - "advance": {
- "days": null,
- "hour": null,
- "minutes_before": 540
}, - "address": {
- "address": "",
- "shortAddress": "Capilla de San Roque.",
- "latitude": 42.429806977123604,
- "longitude": -8.651218828088048,
- "zoom": 15
}, - "accessibility": {
- "code": 200,
- "description": "No es apto para personas de movilidad reducida"
}, - "isCategoryPaxGroup": false,
- "hasDynamicPrice": false,
- "rates": [
- {
- "id": 0,
- "text": "Tour en español",
- "categories": [
- {
- "id": 0,
- "text": "Adultos",
- "canBookAlone": true
}, - {
- "id": 1,
- "text": "Niños de 3 a 12 años",
- "canBookAlone": false
}, - {
- "id": 2,
- "text": "Menores de 3 años",
- "canBookAlone": false
}
]
}
]
}
]Zonas de un destino
| id required | string Id del destino |
| lang | string Enum: "es" "en" "it" "fr" "pt" Idioma |
| Authentication required | string Token de autenticación |
[- {
- "id": 1,
- "name": "Rías Baixas",
- "hasTransfers": false,
- "hasActivities": true,
- "photos": {
- "header": [
- {
- "caption": "Rías Baixas",
- "paths": {
}
}
]
}
}, - {
- "id": 2,
- "name": "Cantabria",
- "hasTransfers": false,
- "hasActivities": true,
- "photos": {
- "header": [
- {
- "caption": "Cantabria",
- "paths": {
}
}
]
}
}, - {
- "id": 3,
- "name": "Canary Islands",
- "hasTransfers": false,
- "hasActivities": true,
- "photos": {
- "header": [
- {
- "caption": "Canary Islands",
- "paths": {
}
}
]
}
}, - {
- "id": 4,
- "name": "The East Coast",
- "hasTransfers": false,
- "hasActivities": true,
- "photos": {
- "header": [
- {
- "caption": "The East Coast",
- "paths": {
}
}
]
}
}, - {
- "id": 5,
- "name": "The West Coast",
- "hasTransfers": false,
- "hasActivities": true,
- "photos": {
- "header": [
- {
- "caption": "The West Coast",
- "paths": {
}
}
]
}
}
][- {
- "key": "305018a97ba5",
- "client_type": 3,
- "currency": "EUR",
- "amount": "4872.34",
- "alert": 1,
- "alert_amount": "2000.00",
- "name": null,
- "surname": null,
- "clientName": "Travel Compositor",
- "clientTypeName": "Agencia",
- "walletInit": 1,
- "pendingCommissions": [
- null,
- null
]
}
]| cartId required | any Id del carrito |
| Authentication required | string |
{- "customer": {
- "firstName": "",
- "lastName": "",
- "prefix": "",
- "phone": "",
- "email": ""
}, - "items": [
- {
- "id": "67231fsdf.jn2i318",
- "details": {
- "booking": [
- {
- "id": "",
- "label": "",
- "type": "",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "text": ""
}
], - "value": "",
- "uuid": "",
- "labelTranslated"": "comments_string"
}, - {
- "id": "",
- "label": "",
- "type": "",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "text": ""
}
], - "value": "",
- "uuid": "",
- "labelTranslated"": "comments_string"
}
], - "passengers": [
- {
- "id": "passenger-1-0-67231fsdf.jn2i318",
- "label": "Nombre-1",
- "type": "text",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}, - {
- "id": "passenger-2-0-67231fsdf.jn2i318",
- "label": "Apellidos-1",
- "type": "text",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}, - {
- "id": "passenger-13-0-67231fsdf.jn2i318",
- "label": "Fecha nacimiento-1",
- "type": "date",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}, - {
- "id": "passenger-1-1-67231fsdf.jn2i318",
- "label": "Nombre-2",
- "type": "text",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}, - {
- "id": "passenger-2-1-67231fsdf.jn2i318",
- "label": "Apellidos-2",
- "type": "text",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}, - {
- "id": "passenger-13-1-67231fsdf.jn2i318",
- "label": "Fecha nacimiento-2",
- "type": "date",
- "required": true,
- "regex": "",
- "options": [
- {
- "id": "",
- "label": ""
}
]
}
]
}
}
], - "amounts": [
- {
- "EUR": 40.86
}, - {
- "USD": 44.1
}
], - "amountType": "NET"
}En caso de que la actividad sea de tipo freeTour, la reserva se confirmará automáticamente después del proceso de checkout y devolverá la respuesta de tipo Root type for voucher. Puedes ver un ejemplo cambiando Cart por Root type for voucher en la sección Response samples, a la derecha de la pantalla.
| cartId required | any Id del carrito |
| Authentication required | string |
required | object |
required | Array of objects |
{- "customer": {
- "firstName": "Name",
- "lastName": "last Name",
- "prefix": "+34",
- "phone": "600112233",
- "email": "test@civitatis.com",
- "agencyFile": "EXP-0003-UNO"
}, - "items": [
- {
- "id": "67231fsdf.jn2i318",
- "details": {
- "booking": [
- {
- "id": "comentarios-67231fsdf.jn2i318",
- "value": "null"
}, - {
- "id": "1",
- "value": "preguntaTitulo_0-67231fsdf.jn2i318"
}
], - "passengers": [
- {
- "id": "passenger-1-0-67231fsdf.jn2i318",
- "value": "1"
}, - {
- "id": "passenger-2-0-67231fsdf.jn2i318",
- "value": "1"
}, - {
- "id": "passenger-3-0-67231fsdf.jn2i318",
- "value": "1"
}, - {
- "id": "passenger-1-1-67231fsdf.jn2i318",
- "value": "1"
}, - {
- "id": "passenger-2-1-67231fsdf.jn2i318",
- "value": "1"
}, - {
- "id": "passenger-3-1-67231fsdf.jn2i318",
- "value": "1"
}
]
}
}
]
}{- "cartId": "string",
- "items": {
- "itemId": "string",
- "date": "2019-08-24",
- "activity": {
- "id": 0,
- "title": "string"
}, - "time": "string",
- "rate": {
- "id": "string",
- "rate": "string",
- "categories": [
- {
- "id": "string",
- "category": null,
- "price": 0.1,
- "totalPrice": 0.1,
- "quantity": 0,
- "amountType": "PVP"
}
]
}
}, - "warnings": null,
- "prices": {
- "EUR": null,
- "USD": null,
- "GBP": null,
- "BRL": null,
- "MXN": null,
- "COP": null,
- "CLP": null,
- "PEN": null,
- "amountType": "PVP"
}, - "agencyPrices": {
- "EUR": null,
- "USD": null,
- "GBP": null,
- "BRL": null,
- "MXN": null,
- "COP": null,
- "CLP": null,
- "PEN": null,
- "amountType": "PVP"
}
}| cartId required | any Id del carrito |
| Authentication required | string |
| walletKey required | string |
{- "walletKey": "nhuidshf98"
}{- "items": [
], - "warnings": null,
- "prices": null,
- "agencyPrices": null,
- "bookingId": "r343423rsdcfw43"
}Devuelve una lista de reservas con sus detalles.
| creationDateTo | any Fecha límite de creación de reserva (opcional) |
| creationDateFrom | any Fecha de inicio de creación de reserva (opcional) |
| realizationDateTo | any Fecha límite de realización de reserva (opcional) |
| realizationDateFrom | any Fecha de inicio de realización de reserva (opcional) |
{- "id": 0,
- "type": "string",
- "activityId": 0,
- "cartId": "string",
- "description": "string",
- "status": "string",
- "creationDate": "2019-08-24T14:15:22Z",
- "realizationDate": "2019-08-24T14:15:22Z",
- "amount": 0.1,
- "currency": "string"
}Recupera la politica de cancelación de un carrito
| cartId required | string Id del carrito |
| lang | string Enum: "es" "en" "it" "fr" "pt" Idioma |
[- {
- "bookingId": "9657091",
- "cancelTerms": [
- "Si cancelas la reserva antes de las 07:00 horas (7:00am) del 06 de marzo de 2024 (hora de Bangkok) obtendrás un reintegro total.",
- "Si cancelas la reserva antes de las 07:00 horas (7:00am) del 11 de marzo de 2024 (hora de Bangkok) obtendrás un reintegro del 50%.",
- "Si cancelas con menos tiempo, llegas tarde o no te presentas, no se ofrecerá ningún reembolso."
]
}
]| bookingId required | integer ID de la reserva a recuperar |
{- "bookingId": 0,
- "cartId": "string",
- "status": "UNPAID",
- "reservationDate": "2022-12-20 08:29:47",
- "activityName": "string",
- "activityDateTime": "2022-12-29 6:58:00",
- "duration": {
- "min": 0,
- "max": 0
}, - "name": "string",
- "phone": "string",
- "email": "user@example.com",
- "numberOfPeople": [
- {
- "name": "string",
- "quantity": "string"
}
], - "passengerQuestions": [
- {
- "question": "string",
- "answer": "string"
}
], - "additionalQuestions": [
- {
- "question": "string",
- "answer": "string"
}
], - "freeCancellation": [
- {
- "until": "2025-11-07T14:00:00-05:00",
- "timezone": "America/New_York"
}
]
}Recupera información de reembolso para un cart id específico.
| cartId required | integer Id del carrito |
[- {
- "bookingId": 9657142,
- "date": "2024-04-22 13:44:06",
- "amountRefund": 39.06,
- "currencyRefund": "EUR"
}
]Devuelve los detalles completos de una reserva
| bookingId required | integer ID de la reserva a recuperar |
[- {
- "bookingId": 2145550,
- "cartId": "c9B7nG2jJtlZ8tr9oZCDIRPxQGm",
- "zoneStartEnd": "La Habana - Varadero",
- "pickUpDate": "2024-12-21 09:00",
- "creationDate": "2024-12-16 16:24",
- "modificationDateTime": "2024-12-16 16:19",
- "from": {
- "name": "La Habana",
- "type": "Zone"
}, - "to": {
- "name": "Varadero",
- "type": "Zone"
}, - "vehicle": "Vehículo de 7 plazas",
- "clientName": "Prueba",
- "clientLastName": "Transfer",
- "clientPhone": 9511112233,
- "email": "reservaciones@civitatis.com",
- "numberOfPeople": 2,
- "status": "CONFIRMED",
- "freeCancellation": {
- "until": "2025-11-07T14:00:00-05:00",
- "timeZone": "America/New_York"
}
}
]Listado de tipologias
| lang | string Enum: "es" "en" "it" "fr" "pt" Idioma |
[- {
- "id": -2,
- "key": "traslados-categoria",
- "description": "Traslados al aeropuerto"
}, - {
- "id": 1,
- "key": "visitas-guiadas",
- "description": "Visitas guiadas"
}, - {
- "id": 2,
- "key": "paseos-barco",
- "description": "Paseos en barco"
}, - {
- "id": 3,
- "key": "espectaculos",
- "description": "Espectáculos"
}, - {
- "id": 4,
- "key": "excursiones",
- "description": "Excursiones de un día"
}, - {
- "id": 5,
- "key": "gastronomicas",
- "description": "Gastronómicas"
}, - {
- "id": 6,
- "key": "aereas",
- "description": "Actividades aéreas"
}
]Listado de categorías
| lang | string Enum: "es" "en" "it" "fr" "pt" Idioma |
[- {
- "id": 1,
- "key": "activity_main_category_1",
- "description": "Visites guidées et free tours",
- "subCategory": [
- [
- {
- "id": 1,
- "key": "activity_sub_category_1",
- "description": "Visite guidée à pied"
}, - {
- "id": 2,
- "key": "activity_sub_category_2",
- "description": "Visite guidée dans les musées ou monuments"
}, - {
- "id": 3,
- "key": "activity_sub_category_3",
- "description": "Visite à bord d’un véhicule"
}, - {
- "id": 4,
- "key": "activity_sub_category_4",
- "description": "Bus touristique"
}, - {
- "id": 5,
- "key": "activity_sub_category_5",
- "description": "Train touristique"
}, - {
- "id": 6,
- "key": "activity_sub_category_6",
- "description": "Balade à vélo"
}, - {
- "id": 7,
- "key": "activity_sub_category_7",
- "description": "Balade en trottinette"
}, - {
- "id": 8,
- "key": "activity_sub_category_8",
- "description": "Virée shopping"
}, - {
- "id": 99,
- "key": "activity_sub_category_99",
- "description": "Pub crawl"
}, - {
- "id": 109,
- "key": "activity_sub_category_109",
- "description": "Free Tours"
}
]
]
}
]| cityId required | any Id del destino obtenido en la ruta /destinations |
| lang | string Enum: "es" "en" "it" "fr" "pt" Idioma |
| iataCodeFrom | string Código IATA del aeropuerto de origen (opcional). Permite filtrar los resultados por el código IATA del aeropuerto de origen. |
| iataCodeTo | string Código IATA del aeropuerto de destino (opcional). Permite filtrar los resultados por el código IATA del aeropuerto de destino. |
[- {
- "id": 86,
- "label": "Aeroporto Internacional do Dubai",
- "type": "Airport",
- "iata": "DXB",
- "related": [
- {
- "id": 98,
- "label": "Porto de cruzeiros",
- "type": "Port",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 87,
- "label": "Hotel no Dubai",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 2663,
- "label": "Aeroporto Al Maktoum",
- "type": "Airport",
- "iata": "DWC",
- "minAdvance": 12
}, - {
- "id": 2672,
- "label": "Abu Dhabi",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 2675,
- "label": "Al Ain",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 2678,
- "label": "Fujairah",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 2666,
- "label": "Ibn Battuta e Jebel Ali",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 2681,
- "label": "Ras Al Khaimah",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 2669,
- "label": "Sharjah & Ajman",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}
]
}, - {
- "id": 87,
- "label": "Hotel no Dubai",
- "type": "Zone",
- "iata": "",
- "related": [
- {
- "id": 2672,
- "label": "Abu Dhabi",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 2675,
- "label": "Al Ain",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 2678,
- "label": "Fujairah",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 2681,
- "label": "Ras Al Khaimah",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 2669,
- "label": "Sharjah & Ajman",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}
]
}, - {
- "id": 98,
- "label": "Porto de cruzeiros",
- "type": "Port",
- "iata": "",
- "related": [
- {
- "id": 87,
- "label": "Hotel no Dubai",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 2672,
- "label": "Abu Dhabi",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 2675,
- "label": "Al Ain",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 2678,
- "label": "Fujairah",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 2681,
- "label": "Ras Al Khaimah",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 2669,
- "label": "Sharjah & Ajman",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}
]
}, - {
- "id": 2663,
- "label": "Aeroporto Al Maktoum",
- "type": "Airport",
- "iata": "DWC",
- "related": [
- {
- "id": 87,
- "label": "Hotel no Dubai",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 2666,
- "label": "Ibn Battuta e Jebel Ali",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}
]
}, - {
- "id": 2666,
- "label": "Ibn Battuta e Jebel Ali",
- "type": "Zone",
- "iata": "",
- "related": [ ]
}, - {
- "id": 2669,
- "label": "Sharjah & Ajman",
- "type": "Zone",
- "iata": "",
- "related": [ ]
}, - {
- "id": 2672,
- "label": "Abu Dhabi",
- "type": "Zone",
- "iata": "",
- "related": [ ]
}, - {
- "id": 2675,
- "label": "Al Ain",
- "type": "Zone",
- "iata": "",
- "related": [ ]
}, - {
- "id": 2678,
- "label": "Fujairah",
- "type": "Zone",
- "iata": "",
- "related": [ ]
}, - {
- "id": 2681,
- "label": "Ras Al Khaimah",
- "type": "Zone",
- "iata": "",
- "related": [ ]
}
]| destinationId required | integer Id del destino |
| lang | string Enum: "es" "en" "it" "fr" "pt" Idioma |
required | object (Coordinate) |
| toZone required | integer ID de la zona de destino |
object (TransferFilter) |
{- "fromCoordinate": {
- "latitude": 0,
- "longitude": 0
}, - "toZone": 0,
- "filters": {
- "pax": 2,
- "date": "2022-12-31",
- "time": "10:00"
}
}[- {
- "id": 42,
- "label": "Turismo de 3 plazas",
- "advance": 12,
- "meetAndGreet": 1,
- "adapted": 0,
- "vehicleType": 0,
- "zone": {
- "from": 160,
- "to": 50
}, - "places": 3,
- "large_suitcase": 2,
- "hand_suitcase": 2,
- "type": "private",
- "cancellation": 24,
- "prices": {
- "EUR": 88.6,
- "USD": 105,
- "GBP": 79.3,
- "BRL": 602.1,
- "MXN": 2254.3,
- "COP": 404731.7,
- "CLP": 84000.2,
- "PEN": 399.2,
- "amountType": "NET"
}, - "babyChair": {
- "availability": "to_12_years",
- "weightMin": 0,
- "weight": 10,
- "yearsMin": 0,
- "years": 12,
- "required": 2,
- "supplement": 35
}, - "supplements": [ ]
}, - {
- "id": 43,
- "label": "Furgoneta de 10 plazas",
- "zone": {
- "from": 160,
- "to": 50
}, - "advance": 12,
- "meetAndGreat": 1,
- "adapted": "0,",
- "vehicleType": 0,
- "places": 10,
- "large_suitcase": 8,
- "hand_suitcase": 4,
- "type": "private",
- "cancellation": 24,
- "prices": {
- "EUR": 173.1,
- "USD": 205,
- "GBP": 154.8,
- "BRL": 1175.5,
- "MXN": 4401.3,
- "COP": 790190.4,
- "CLP": 164000.5,
- "PEN": 779.4,
- "amountType": "NET"
}, - "babyChair": {
- "availability": "to_12_years",
- "weightMin": 0,
- "weight": 10,
- "yearsMin": 0,
- "years": 12,
- "required": 2,
- "supplement": 35
}, - "supplements": [ ]
}, - {
- "id": 46,
- "label": "Vehículo SUV de 6 plazas",
- "zone": {
- "from": 160,
- "to": 50
}, - "advance": 12,
- "meetAndGreet": 1,
- "adapted": 0,
- "vehicleType": 0,
- "places": 6,
- "large_suitcase": 4,
- "hand_suitcase": 4,
- "type": "private",
- "cancellation": 24,
- "prices": {
- "EUR": 113.9,
- "USD": 135,
- "GBP": 101.9,
- "BRL": 774.1,
- "MXN": 2898.4,
- "COP": 520369.3,
- "CLP": 108000.3,
- "PEN": 513.3,
- "amountType": "NET"
}, - "babyChair": {
- "availability": "to_12_years",
- "weightMin": 0,
- "weight": 10,
- "yearsMin": 0,
- "years": 12,
- "required": 2,
- "supplement": 35
}, - "supplements": [ ]
}, - {
- "id": 45,
- "label": "Limusina de 8 plazas",
- "zone": {
- "from": 160,
- "to": 50
}, - "advance": 12,
- "meetAndGreet": 1,
- "adapted": 0,
- "vehicleType": 0,
- "places": 8,
- "large_suitcase": 4,
- "hand_suitcase": 3,
- "type": "private",
- "cancellation": 24,
- "prices": {
- "EUR": 173.1,
- "USD": 205,
- "GBP": 154.8,
- "BRL": 1175.5,
- "MXN": 4401.3,
- "COP": 790190.4,
- "CLP": 164000.5,
- "PEN": 779.4,
- "amountType": "NET"
}, - "babyChair": {
- "availability": "to_12_years",
- "weightMin": 0,
- "weight": 10,
- "yearsMin": 0,
- "years": 12,
- "required": 2,
- "supplement": 35
}, - "supplements": [ ]
}, - {
- "id": 44,
- "label": "Minibús de 20 plazas",
- "zone": {
- "from": 160,
- "to": 50
}, - "advance": 12,
- "meetAndGreet": 1,
- "adapted": 0,
- "vehicleType": 0,
- "places": 20,
- "large_suitcase": 20,
- "hand_suitcase": 10,
- "type": "private",
- "cancellation": 24,
- "prices": {
- "EUR": 409.5,
- "USD": 485,
- "GBP": 366.3,
- "BRL": 2781.1,
- "MXN": 10412.8,
- "COP": 1869475,
- "CLP": 388001.1,
- "PEN": 1844.1,
- "amountType": "NET"
}, - "babyChair": {
- "availability": "to_12_years",
- "weightMin": 0,
- "weight": 10,
- "yearsMin": 0,
- "years": 12,
- "required": 2,
- "supplement": 35
}, - "supplements": [ ]
}, - {
- "id": 41,
- "label": "Minibús de 14 plazas",
- "zone": {
- "from": 160,
- "to": 50
}, - "advance": 12,
- "meetAndGreet": 1,
- "adapted": 0,
- "vehicleType": 0,
- "places": 14,
- "large_suitcase": 14,
- "hand_suitcase": 7,
- "type": "private",
- "cancellation": 24,
- "prices": {
- "EUR": 223.7,
- "USD": 265,
- "GBP": 200.1,
- "BRL": 1519.6,
- "MXN": 5689.5,
- "COP": 1021465.7,
- "CLP": 212000.6,
- "PEN": 1007.6,
- "amountType": "NET"
}, - "babyChair": {
- "availability": "to_12_years",
- "weightMin": 0,
- "weight": 10,
- "yearsMin": 0,
- "years": 12,
- "required": 2,
- "supplement": 35
}, - "supplements": [ ]
}, - {
- "id": 529,
- "label": "Traslado compartido",
- "zone": {
- "from": 160,
- "to": 50
}, - "advance": 24,
- "meetAndGreet": 1,
- "adapted": 0,
- "vehicleType": 0,
- "places": 59,
- "large_suitcase": 59,
- "hand_suitcase": 59,
- "type": "shared",
- "cancellation": 24,
- "prices": {
- "EUR": 18.6,
- "USD": 22,
- "GBP": 16.6,
- "BRL": 126.1,
- "MXN": 472.3,
- "COP": 84800.9,
- "CLP": 17600,
- "PEN": 83.6,
- "amountType": "NET"
}, - "babyChair": {
- "availability": "unavailable",
- "weightMin": 0,
- "weight": 10,
- "yearsMin": 0,
- "years": 12,
- "required": 0,
- "supplement": 35
}, - "supplements": [ ]
}
]| cityId required | integer |
| zoneFrom required | string ID de la zona de origen o código IATA del aeropuerto. Puede ser un número entero (ID de zona) o un código IATA de 3 letras (ej: DXB, JFK). |
| zoneTo required | string ID de la zona de destino o código IATA del aeropuerto. Puede ser un número entero (ID de zona) o un código IATA de 3 letras (ej: DXB, JFK). |
| lang | string Enum: "es" "en" "it" "fr" "pt" Idioma |
[- {
- "id": 42,
- "label": "Turismo de 3 plazas",
- "advance": 12,
- "meetAndGreet": 1,
- "adapted": 0,
- "vehicleType": 0,
- "zone": {
- "from": 160,
- "to": 50
}, - "places": 3,
- "large_suitcase": 2,
- "hand_suitcase": 2,
- "type": "private",
- "cancellation": 24,
- "prices": {
- "EUR": 88.6,
- "USD": 105,
- "GBP": 79.3,
- "BRL": 602.1,
- "MXN": 2254.3,
- "COP": 404731.7,
- "CLP": 84000.2,
- "PEN": 399.2,
- "amountType": "NET"
}, - "babyChair": {
- "availability": "to_12_years",
- "weightMin": 0,
- "weight": 10,
- "yearsMin": 0,
- "years": 12,
- "required": 2,
- "supplement": 35
}, - "supplements": [ ]
}, - {
- "id": 43,
- "label": "Furgoneta de 10 plazas",
- "zone": {
- "from": 160,
- "to": 50
}, - "advance": 12,
- "meetAndGreat": 1,
- "adapted": "0,",
- "vehicleType": 0,
- "places": 10,
- "large_suitcase": 8,
- "hand_suitcase": 4,
- "type": "private",
- "cancellation": 24,
- "prices": {
- "EUR": 173.1,
- "USD": 205,
- "GBP": 154.8,
- "BRL": 1175.5,
- "MXN": 4401.3,
- "COP": 790190.4,
- "CLP": 164000.5,
- "PEN": 779.4,
- "amountType": "NET"
}, - "babyChair": {
- "availability": "to_12_years",
- "weightMin": 0,
- "weight": 10,
- "yearsMin": 0,
- "years": 12,
- "required": 2,
- "supplement": 35
}, - "supplements": [ ]
}, - {
- "id": 46,
- "label": "Vehículo SUV de 6 plazas",
- "zone": {
- "from": 160,
- "to": 50
}, - "advance": 12,
- "meetAndGreet": 1,
- "adapted": 0,
- "vehicleType": 0,
- "places": 6,
- "large_suitcase": 4,
- "hand_suitcase": 4,
- "type": "private",
- "cancellation": 24,
- "prices": {
- "EUR": 113.9,
- "USD": 135,
- "GBP": 101.9,
- "BRL": 774.1,
- "MXN": 2898.4,
- "COP": 520369.3,
- "CLP": 108000.3,
- "PEN": 513.3,
- "amountType": "NET"
}, - "babyChair": {
- "availability": "to_12_years",
- "weightMin": 0,
- "weight": 10,
- "yearsMin": 0,
- "years": 12,
- "required": 2,
- "supplement": 35
}, - "supplements": [ ]
}, - {
- "id": 45,
- "label": "Limusina de 8 plazas",
- "zone": {
- "from": 160,
- "to": 50
}, - "advance": 12,
- "meetAndGreet": 1,
- "adapted": 0,
- "vehicleType": 0,
- "places": 8,
- "large_suitcase": 4,
- "hand_suitcase": 3,
- "type": "private",
- "cancellation": 24,
- "prices": {
- "EUR": 173.1,
- "USD": 205,
- "GBP": 154.8,
- "BRL": 1175.5,
- "MXN": 4401.3,
- "COP": 790190.4,
- "CLP": 164000.5,
- "PEN": 779.4,
- "amountType": "NET"
}, - "babyChair": {
- "availability": "to_12_years",
- "weightMin": 0,
- "weight": 10,
- "yearsMin": 0,
- "years": 12,
- "required": 2,
- "supplement": 35
}, - "supplements": [ ]
}, - {
- "id": 44,
- "label": "Minibús de 20 plazas",
- "zone": {
- "from": 160,
- "to": 50
}, - "advance": 12,
- "meetAndGreet": 1,
- "adapted": 0,
- "vehicleType": 0,
- "places": 20,
- "large_suitcase": 20,
- "hand_suitcase": 10,
- "type": "private",
- "cancellation": 24,
- "prices": {
- "EUR": 409.5,
- "USD": 485,
- "GBP": 366.3,
- "BRL": 2781.1,
- "MXN": 10412.8,
- "COP": 1869475,
- "CLP": 388001.1,
- "PEN": 1844.1,
- "amountType": "NET"
}, - "babyChair": {
- "availability": "to_12_years",
- "weightMin": 0,
- "weight": 10,
- "yearsMin": 0,
- "years": 12,
- "required": 2,
- "supplement": 35
}, - "supplements": [ ]
}, - {
- "id": 41,
- "label": "Minibús de 14 plazas",
- "zone": {
- "from": 160,
- "to": 50
}, - "advance": 12,
- "meetAndGreet": 1,
- "adapted": 0,
- "vehicleType": 0,
- "places": 14,
- "large_suitcase": 14,
- "hand_suitcase": 7,
- "type": "private",
- "cancellation": 24,
- "prices": {
- "EUR": 223.7,
- "USD": 265,
- "GBP": 200.1,
- "BRL": 1519.6,
- "MXN": 5689.5,
- "COP": 1021465.7,
- "CLP": 212000.6,
- "PEN": 1007.6,
- "amountType": "NET"
}, - "babyChair": {
- "availability": "to_12_years",
- "weightMin": 0,
- "weight": 10,
- "yearsMin": 0,
- "years": 12,
- "required": 2,
- "supplement": 35
}, - "supplements": [ ]
}, - {
- "id": 529,
- "label": "Traslado compartido",
- "zone": {
- "from": 160,
- "to": 50
}, - "advance": 24,
- "meetAndGreet": 1,
- "adapted": 0,
- "vehicleType": 0,
- "places": 59,
- "large_suitcase": 59,
- "hand_suitcase": 59,
- "type": "shared",
- "cancellation": 24,
- "prices": {
- "EUR": 18.6,
- "USD": 22,
- "GBP": 16.6,
- "BRL": 126.1,
- "MXN": 472.3,
- "COP": 84800.9,
- "CLP": 17600,
- "PEN": 83.6,
- "amountType": "NET"
}, - "babyChair": {
- "availability": "unavailable",
- "weightMin": 0,
- "weight": 10,
- "yearsMin": 0,
- "years": 12,
- "required": 0,
- "supplement": 35
}, - "supplements": [ ]
}
]| cityId required | any Id del destino obtenido en la ruta /destinations |
| zoneFrom required | string ID de la zona de origen o código IATA del aeropuerto. Puede ser un número entero (ID de zona) o un código IATA de 3 letras (ej: DXB, JFK). |
| lang | string Enum: "es" "en" "it" "fr" "pt" idioma |
{- "id": 52,
- "label": "Aeropuerto Newark",
- "type": "Airport",
- "iata": "EWR",
- "relatedZones": [
- {
- "id": 53,
- "label": "Manhattan",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 50,
- "label": "Aeropuerto JFK",
- "type": "Airport",
- "iata": "JFK",
- "minAdvance": 12
}, - {
- "id": 51,
- "label": "Aeropuerto LaGuardia",
- "type": "Airport",
- "iata": "LGA",
- "minAdvance": 12
}, - {
- "id": 157,
- "label": "Bronx",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 159,
- "label": "Brooklyn",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 158,
- "label": "Queens",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}, - {
- "id": 160,
- "label": "New Jersey",
- "type": "Zone",
- "iata": "",
- "minAdvance": 12
}
]
}[- {
- "from": {
- "id": 50,
- "label": "Aeropuerto JFK"
}, - "to": {
- "id": 53,
- "label": "Hotel en Manhattan"
}, - "priority": 9,
- "currency": "USD",
- "isShared": false,
- "prices": {
- "EUR": 88.6,
- "USD": 105,
- "GBP": 79.3,
- "BRL": 602.1,
- "MXN": 2254.3,
- "COP": 404731.7,
- "CLP": 84000.2,
- "PEN": 399.2,
- "amountType": "NET"
}
}, - {
- "from": {
- "id": 51,
- "label": "Aeropuerto LaGuardia"
}, - "to": {
- "id": 53,
- "label": "Hotel en Manhattan"
}, - "priority": 8,
- "currency": "USD",
- "isShared": false,
- "prices": {
- "EUR": 80.2,
- "USD": 95,
- "GBP": 71.7,
- "BRL": 544.7,
- "MXN": 2039.6,
- "COP": 366185.8,
- "CLP": 76000.2,
- "PEN": 361.2,
- "amountType": "NET"
}
}, - {
- "from": {
- "id": 52,
- "label": "Aeropuerto Newark"
}, - "to": {
- "id": 53,
- "label": "Hotel en Manhattan"
}, - "priority": 7,
- "currency": "USD",
- "isShared": false,
- "prices": {
- "EUR": 112.3,
- "USD": 133,
- "GBP": 100.4,
- "BRL": 762.6,
- "MXN": 2855.4,
- "COP": 512660.1,
- "CLP": 106400.3,
- "PEN": 505.7,
- "amountType": "NET"
}
}
]| cityId required | integer |
| lang | any |
[- {
- "title": "¿Con cuánta antelación debo reservar el traslado?",
- "answer": "Es posible reservar traslados en Nueva York con un mínimo de 24 horas de antelación",
- "orden": 1,
- "lang": "es"
}, - {
- "title": "¿Cuánto tiempo se tarda desde el hotel hasta el aeropuerto?",
- "answer": {
- "value": "<p>Recomendamos contratar el servicio de traslado desde el hotel hasta el aeropuerto con <b>4 horas de antelación</b> para vuelos internacionales, y con 3 horas para vuelos nacionales.</p>\r\n\r\n<p>En Nueva York las sillas para niños no son obligatorias en vehículos de transporte profesionales.</p>"
}, - "orden": 1,
- "lang": "es"
}, - {
- "title": "¿Qué hora de recogida tengo que indicar?",
- "answer": "<p>En los traslados con origen en el aeropuerto debes indicar la hora de llegada programada del vuelo. Lo mismo sucede en puertos de cruceros y estaciones de tren, debes indicar la hora programada de llegada.</p>\r\n\r\n<p>En los traslados desde el hotel debes indicar cuándo quieres que te recojamos. Es decir, no debes indicar la hora de salida del vuelo, sino la hora a la que quieres que pasemos a por tí. Puedes ver nuestras recomendaciones en la siguiente pregunta.</p>\r\n\r\n<p>En los traslados compartidos, las horas podrán ser modificadas por el proveedor para su planificación. En ese caso nos pondremos en contacto contigo para confirmarte la hora reprogramada.<br />\r\n </p>\r\n",
- "orden": 3,
- "lang": "es"
}, - {
- "title": "¿Cuánto tiempo me esperará el conductor?",
- "answer": "<ul class=\"listado\">\r\n\t<li>Aeropuertos: 1 hora desde la hora efectiva de aterrizaje del vuelo.</li>\r\n\t<li>Puertos de cruceros: 1 hora desde la hora efectiva de atraque del barco. </li>\r\n\t<li>Estaciones de tren: 15 minutos desde la hora efectiva de llegada del tren.</li>\r\n\t<li>Hoteles y apartamentos: 15 minutos a partir de la hora indicada al hacer la reserva.</li>\r\n</ul>\r\n\r\n<p>Si por algún motivo necesitáis más tiempo, deberéis llamar al teléfono de contacto que aparece en la reserva. En este caso, se podrán aplicar suplementos.</p>\r\n",
- "orden": 8,
- "lang": "es"
}, - {
- "title": "¿Dónde me estará esperando el conductor?",
- "answer": "<ul>\r\n\t<li>Aeropuertos: el conductor esperará en el hall de llegadas, justo después de la sala de recogida de equipajes.</li>\r\n\t<li>Puertos: el conductor esperará en la terminal de llegadas del puerto.</li>\r\n\t<li>Estaciones de tren: el conductor esperará en la salida del andén de llegada del tren.</li>\r\n\t<li>Hoteles y apartamentos: el conductor estará esperando en el exterior del edificio. Si tiene la posibilidad de estacionar el vehículo, en ocasiones podrá esperar en la recepción.</li>\r\n</ul>\r\n\r\n<p>En todos los casos, el conductor estará esperando sosteniendo un cartel con tu nombre.</p>\r\n",
- "orden": 13,
- "lang": "es"
}, - {
- "title": "¿Los precios son finales? ¿Existen suplementos? ",
- "answer": "<p>A diferencia de nuestros competidores, nuestros precios son finales e incluyen todos los gastos, incluyendo peajes y propinas.<br />\r\nPueden existir suplementos en los casos donde el destino no se encuentre en la zona indicada o se necesite hacer una parada adicional durante el trayecto.<br />\r\n </p>\r\n",
- "orden": 14,
- "lang": "es"
}, - {
- "title": "¿Cuántas personas pueden viajar en el vehículo?",
- "answer": "<p>El número de plazas indicadas para cada vehículo es el máximo de personas que pueden viajar además del conductor. Todos los pasajeros, incluidos los niños pequeños, independientemente de su edad, cuentan como pasajeros.<br />\r\nSi sois un grupo numeroso, deberéis reservar varios vehículos.<br />\r\n </p>\r\n",
- "orden": 17,
- "lang": "es"
}, - {
- "title": "¿Cuántas maletas puedo llevar?",
- "answer": "<p>Durante el proceso de reserva podréis ver la cantidad de equipaje que admite cada vehículo. En cada vehículo viene indicada su capacidad en número de maletas grandes y número de maletas de mano.<br />\r\nLas medidas máximas por tipo de maleta son:</p>\r\n\r\n<ul>\r\n\t<li>Maleta de mano: la suma del largo, alto y ancho no exceda de 115 cm.</li>\r\n\t<li>Maleta grande: la suma del largo, alto y ancho no exceda de 155 cm.</li>\r\n</ul>\r\n",
- "orden": 22,
- "lang": "es"
}, - {
- "title": "¿Tenéis sillas para niños pequeños?",
- "answer": "<p>Cuando avancéis en el proceso de reserva veréis información relativa a las sillas de niños. Dependiendo de las regulaciones de cada destino, éstas son obligatorias u opcionales, y pueden ser gratuitas o tener un coste. Este coste lo veréis reflejado a la hora de reservar.</p>\r\n",
- "orden": 25,
- "lang": "es"
}, - {
- "title": "¿Cómo puedo saber el número de vuelo?",
- "answer": "<p>El número de vuelo se compone de 2 caracteres que representan la aerolínea, y 4 números que completan el número de vuelo. Algunos ejemplos son IB3506, UX1254 o 5Z1826. Podrás encontrar tu número de vuelo en el email de confirmación de la reserva de la aerolínea.</p>\r\n",
- "orden": 28,
- "lang": "es"
}, - {
- "title": "¿Tengo que avisar si el vuelo, barco o tren se retrasa?",
- "answer": "<p>Los vuelos, trenes y barcos son monitorizados en todo momento, por lo que no tienes que preocuparte de contactar con nosotros. En caso de retrasos excesivos, si no pudiéramos reprogramar el traslado debido a la falta de disponibilidad de vehículos, se reembolsará el importe total del servicio.</p>\r\n",
- "orden": 31,
- "lang": "es"
}, - {
- "title": "¿Por qué necesito tener un teléfono móvil operativo?",
- "answer": "<p>Es imprescindible llevar un teléfono móvil operativo, ya que podríamos tener que llamarte en caso de emergencia, por ejemplo, si el conductor ha tenido una avería o simplemente tiene dificultades para encontrarte.</p>\r\n",
- "orden": 34,
- "lang": "es"
}, - {
- "title": "¿Quién se responsabiliza de una pérdida de vuelo?",
- "answer": "<p>La empresa de traslados nunca se hará cargo de la pérdida de un vuelo. Los clientes son los únicos responsables de conocer la hora de salida de su vuelo y solicitar el servicio de recogida con la antelación suficiente. </p>\r\n",
- "orden": 35,
- "lang": "es"
}, - {
- "title": "¿Es posible hacer varias paradas?",
- "answer": "<p>Si os alojáis en diferentes hoteles o tenéis que hacer una parada para recoger las llaves de un apartamento, tenéis que tener en cuenta que este servicio conlleva suplementos. Una vez realizada la reserva, os enviaremos un email con el importe del suplemento. Podrás aceptarlo, o cancelar el servicio sin coste. Se puede pagar en línea o directamente en destino.</p>\r\n",
- "orden": 38,
- "lang": "es"
}, - {
- "title": "¿Puedo compartir el vehículo con otras personas?",
- "answer": "<p>Ofrecemos servicios de traslados privados y compartidos. En los servicios privados, el vehículo será de uso exclusivo para vosotros. En los traslados compartidos, el vehículo se compartirá con otros viajeros.</p>\r\n",
- "orden": 41,
- "lang": "es"
}, - {
- "title": "¿El conductor habla español?",
- "answer": "<p>Aunque en la mayoría de los países los conductores hablan varios idiomas, no podemos garantizar que el conductor asignado hable español. No obstante, el idioma no es necesario para realizar el traslado, ya que que el conductor dispone de todos los datos necesarios de antemano para llevar a cabo el servicio.</p>\r\n",
- "orden": 44,
- "lang": "es"
}
]| cityId required | integer |
| lang | any |
[- {
- "text": "Excelente servicio, el chófer muy servicial.",
- "name": "Luis",
- "rating": 5
}, - {
- "text": "Alberto buen conductor, rápido y eficiente",
- "name": "Alejandro",
- "rating": 5
}, - {
- "text": "El chofer era un gran profesional y un gran conversador sobre todo teniendo en cuenta que eran las 4.00 am",
- "name": "Nuria",
- "rating": 5
}, - {
- "text": "Vehículo espectacular, limpio y cuidado. Conductor atento y muy amable. Repetiremos",
- "name": "Isabella",
- "rating": 5
}, - {
- "text": "Muy buen servicio, llegó con mucho tiempo y muy amable",
- "name": "Alvaro",
- "rating": 5
}
]| cityId required | integer |
| lang | any |
{- "sharedAdvices": "<p>Una vez que hayáis pasado inmigración, tenéis que seguir los carteles de \"Ground Transportation\" hasta llegar al \"Welcome Center\" un gran mostrador azul. Aquí debéis enseñar el nuestro bono de SuperShuttle. También podéis ir directamente al mostrador oficial de SuperShuttle. Si no hubiera nadie en este mostrador, podéis utilizar el teléfono que encontraréis allí, marcando el número 29.</p>\r\n\r\n<p>Invoicing SSV# is 1936</p>",
- "particularSharedAdvice": "<p>Una vez que hayáis pasado inmigración, tenéis que seguir los carteles de \"Ground Transportation\" hasta llegar al \"Welcome Center\" un gran mostrador azul. Aquí debéis enseñar el nuestro bono de SuperShuttle. También podéis ir directamente al mostrador oficial de SuperShuttle. Si no hubiera nadie en este mostrador, podéis utilizar el teléfono que encontraréis allí, marcando el número 29.</p>\r\n\r\n<p>Invoicing SSV# is 1936</p>",
- "transferDetails": {
- "advance": 24,
- "total_people": 122506,
- "reviews": 10782,
- "reviews_private": 10291,
- "reviews_shared": 490,
- "rating": 9.3378,
- "rating_private": 9.5174,
- "rating_shared": 5.5633,
- "punctuality_rating": 9.25276882,
- "vehicle_rating": 9.554745548,
- "driver_rating": 9.49418197,
- "recommend": 94.2026658
}
}Este endpoint devuelve las actividades que tienen disponibilidad infinita en el entorno de sandbox.
| destinationId | integer ID del destino para filtrar las actividades por destino. |
| lang | string Enum: "es" "en" "it" "fr" "pt" El idioma en el que se desea obtener los detalles de las actividades. |
| guideLang | string Enum: "es" "en" "it" "fr" "pt" El idioma del guía en que que se desea obtener el detalle de las actividades. |
| category | any Id de la categoria a consultar |
| subCategory | any Id de la subcategoría a consultar |
[- {
- "id": 177230,
- "title": "Visita al birrificio Blue Coast",
- "lang": "es",
- "destinationId": 91,
- "destination": "Niza",
- "hasCalendarHours": true,
- "isCategoryPaxGroup": false,
- "hasAdditionalQuestions": false,
- "hasPassengersQuestions": false,
- "hasOneRate": true
}, - {
- "id": 177229,
- "title": "Blue Coast Brewery Nice Tour",
- "lang": "en",
- "destinationId": 91,
- "destination": "Niza",
- "hasCalendarHours": true,
- "isCategoryPaxGroup": false,
- "hasAdditionalQuestions": false,
- "hasPassengersQuestions": false,
- "hasOneRate": true
}
]Este endpoint devuelve las actividades que tienen disponibilidad infinita en el entorno de sandbox.
| activityId required | integer ID de la actividad de la cual se quiere consultar la informacion de sus proveedores |
[- {
- "id": 76,
- "legal_name": "Las Torres S.R.O.",
- "fiscal_address": "Skolska 3106, 28294, Milovice",
- "nif": "CZ60408508",
- "contact_email": "incoming@julia.net",
- "contact_phone": "Madrid (+34) 91 559 96 05",
- "eu_compliance_notice": "Este proveedor se compromete a ofrecer servicios que cumplan con las disposiciones aplicables del Derecho de la Unión Europea."
}, - {
- "id": 18673,
- "legal_name": "Rocket Ride",
- "fiscal_address": "RM D 10/F A BILLION CTR, 1 WANG KWONG RD KOWLOON BAY KL, 999077, Hong Kong",
- "nif": "2769971",
- "contact_email": "pavo.pulitika@yahoo.com",
- "contact_phone": "",
- "eu_compliance_notice": "Este proveedor se compromete a ofrecer servicios que cumplan con las disposiciones aplicables del Derecho de la Unión Europea."
}
]