API Civitatis (2.0.2)

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.

Audiencia

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.

Introducción

Civitatis provee de un interfaz de programación de aplicaciones (API) que proporciona acceso a información y funcionalidad relacionada con la representación los productos que ofrece. A continuación se detalla el flujo completo de consulta del catálogo.

Gestión de Errores de Seguridad y Límites de Peticiones

Se listan los posibles códigos de respuesta a continuación

401 Unauthorized

Este código de respuesta indica que la solicitud no está autorizada. Puede deberse a problemas de autenticación con el token. Se recomienda verificar la validez y vigencia del token utilizado en la solicitud.

406 Not Acceptable

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.

HTTP 429 Too Many Requests

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.

Changelog

Fecha Tipo Descripción
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í .
2024-09-19 Feat Se ha agregado el campo "iata" en el endpoint de destinos. 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-20 Feat A partir de ahora, el endpoint /activities/{id} tiene el nuevo campo "secondaryDestinationId", en el que se consultan los destinos secundarios de la actividad.
2024-07-23 Feat Se han agregado dos nuevos campos en el objeto Activity: hasAdditionalQuestions y hasPassengersQuestions /activities/{id}.

Glosario

Políticas de cancelación

En el atributo "cancelPolicies", ubicado en el endpoint de actividades, se definen las políticas asociadas a la cancelación de reservas. Aqui se especifica 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 la penalización de 15% (reembolso 85%), 120 horas antes sería el 25% de penalización (75% reembolso).

"cancelPolicies": [
  {
    "hours": 0,
    "penalty": 100,
    "type": "percent"
  }
],

Esto quiere decir que no es reembolsable

Categoría

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í

Subcategoría

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í

Tipo de monto

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.

Advance

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
}

AUTENTICACIÓN

Autenticación

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.

Authorizations:
None
Request Body schema: application/json
required

Parámetros de conexión

username
string
password
string

Responses

Request samples

Content type
application/json
{
  • "username": "leonardNimoy",
  • "password": "koolinar"
}

Response samples

Content type
application/json
{
  • "token": "XJsje8838j48DjxcjJDE",
  • "expiresIn": "2020-03-22T10:04:58+01:00"
}

BUSCADOR

/search

Authorizations:
Security
header Parameters
Authentication
required
string

Token de autenticación.

Request Body schema: application/json
required
searchText
string

Se debe introducir un mínimo de 3 caracteres para realizar la búsqueda.

destinationId
number

Filtrar actividades por destino.

countryId
number

Filtrar actividades por pais.

lang
string
Enum: "es" "en" "it" "fr" "pt"

Idioma en el que mostrar las actividades. Por defecto 'es'.

currency
string

En el atributo minimunPrice va a traer los montos convertidos a esta moneda.

activityCurrency
string

Filtra las actividades que tengan esta moneda.

Responses

Request samples

Content type
application/json
{
  • "searchText": "string",
  • "destinationId": 0,
  • "countryId": 0,
  • "lang": "es",
  • "currency": "string",
  • "activityCurrency": "string"
}

Response samples

Content type
application/json
{
  • "id": 96,
  • "type": 1,
  • "lang": "es",
  • "guideLanguages": [
    ],
  • "destinationId": 95,
  • "secondaryDestinationId": [ ],
  • "title": "Tour nocturno por el Madrid iluminado",
  • "voucherType": 0,
  • "relatedActivities": [
    ],
  • "score": 9.5987565,
  • "reviews": "193,",
  • "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,
  • "typologies": [
    ],
  • "category": {
    },
  • "subcategory": {
    },
  • "amountType": "PVP",
  • "minimumPrice": 7,
  • "isFreeTour": false,
  • "currency": "EUR",
  • "originalPrice": 7,
  • "included": [
    ],
  • "notIncluded": [
    ],
  • "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": [
    ],
  • "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": {
    },
  • "advance": {
    },
  • "address": {
    },
  • "accessibility": {
    },
  • "isCategoryPaxGroup": false,
  • "hasDynamicPrice": false,
  • "rates": [
    ]
}

ACTIVIDADES

Actividad

Detalle de una actividad.

Authorizations:
Security
path Parameters
id
required
integer

Id de la actividad

query Parameters
activityCurrency
any

Filtra las actividades que tengan esta moneda.

currency
any

En el atributo minimunPrice va a traer los montos convertidos a esta moneda

header Parameters
Authentication
required
string

Token de autenticación.

Responses

Response samples

Content type
application/json
{
  • "id": 96,
  • "type": 1,
  • "lang": "es",
  • "guideLanguages": [
    ],
  • "destinationId": 95,
  • "secondaryDestinationId": [ ],
  • "title": "Tour nocturno por el Madrid iluminado",
  • "voucherType": 0,
  • "relatedActivities": [
    ],
  • "score": 9.5987565,
  • "reviews": "193,",
  • "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,
  • "typologies": [
    ],
  • "category": {
    },
  • "subcategory": {
    },
  • "amountType": "PVP",
  • "minimumPrice": 7,
  • "isFreeTour": false,
  • "currency": "EUR",
  • "originalPrice": 7,
  • "included": [
    ],
  • "notIncluded": [
    ],
  • "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": [
    ],
  • "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": {
    },
  • "advance": {
    },
  • "address": {
    },
  • "accessibility": {
    },
  • "isCategoryPaxGroup": false,
  • "hasDynamicPrice": false,
  • "rates": [
    ]
}

Actividades por destino

Listado de actividades de un destino concreto.

Authorizations:
Security
path Parameters
id
required
integer

id de destino.

query Parameters
lang
required
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.

activityCurrency
any

Filtra las actividades que tengan esta moneda.

currency
any

En el atributo minimunPrice va a traer los montos convertidos a esta moneda

header Parameters
Authentication
required
string

Token de autenticación

Responses

Response samples

Content type
application/json
[]

Nuevas actividades

Lista de nuevas actividades basadas en el destino, idioma y/o fecha.

Authorizations:
Security
query Parameters
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.

header Parameters
Authentication
required
string

Token de autenticación necesario para acceder al endpoint.

Responses

Response samples

Content type
application/json
[]

Actividades por coordenadas

Listado de actividades por coordenadas.

Authorizations:
Security
query Parameters
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

header Parameters
Authentication
required
string

Token de autenticación

Request Body schema: application/json
required
lat
number <float>

Latitud

long
number <float>

Longitud

distance
number <float>

Distancia

Responses

Request samples

Content type
application/json
{
  • "lat": 0.1,
  • "long": 0.1,
  • "distance": 0.1
}

Response samples

Content type
application/json
[]

PAISES

Listado de paises

Países

Authorizations:
Security
query Parameters
lang
string
Enum: "es" "en" "it" "fr" "pt"

Idioma

header Parameters
Authentication
required
string

Token de conexión

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

País

País

Authorizations:
Security
path Parameters
id
required
integer

Id del país

query Parameters
lang
string
Enum: "es" "en" "it" "fr" "pt"

Idioma

header Parameters
Authentication
required
string

Token de conexión

Responses

Response samples

Content type
application/json
{
  • "id": 50,
  • "name": "some text",
  • "ISO3": "some text",
  • "ISONum": "some text",
  • "ISO2": "some text",
  • "photos": {
    },
  • "travelInsurance": true
}

DESTINOS

Listado de destinos

Destinos

Authorizations:
Security
query Parameters
lang
string
Enum: "es" "en" "it" "fr" "pt"

Idioma

header Parameters
Authentication
required
string

Token de conexión

Responses

Response samples

Content type
application/json
[]

Destino

Detalle de un destino

Authorizations:
Security
path Parameters
id
required
integer

Id del destino

query Parameters
lang
string
Enum: "es" "en" "it" "fr" "pt"

Idioma

header Parameters
Authentication
required
string

Token de autenticación

Responses

Response samples

Content type
application/json
{}

Destinos de un país

Authorizations:
Security
path Parameters
id
required
integer

Identificativo de país

query Parameters
lang
string
Enum: "es" "en" "it" "fr" "pt"

Idioma en el que recibir el listado

header Parameters
Authentication
required
string

Token de autenticación

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

TRASLADOS

Lista de enlaces de traslados activos por destino que pueden ser reservados

Authorizations:
Security
query Parameters
lang
string
Enum: "es" "en" "it" "fr" "pt"

Idioma en el que recibir el listado

header Parameters
Authentication
required
string

Token de autenticación

Responses

Response samples

Content type
application/json
[]

CALENDARIO

Calendario de una actividad

Calendario de una actividad

Authorizations:
Security
path Parameters
id
required
string

Id de actividad.

query Parameters
dateFrom
string <date>

Fecha de inicio de disponibilidad (YYYY-MM-DD)

dateTo
string <date>

Fecha fin de disponibilidad (YYYY-MM-DD)

currency
string

Moneda

header Parameters
Authentication
required
string

Token de autenticación

Responses

Response samples

Content type
application/json
{
  • "activityId": 65,
  • "currency": "EUR",
  • "timeZone": "America/New_York",
  • "hasHours": true,
  • "schedule": [
    ]
}

TIPOLOGIAS

Listado de tipologias

Listado de tipologias

Authorizations:
Security
query Parameters
lang
string
Enum: "es" "en" "it" "fr" "pt"

Idioma

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

CATEGORÍAS

Listado de categorías

Listado de categorías

Authorizations:
Security
query Parameters
lang
string
Enum: "es" "en" "it" "fr" "pt"

Idioma

Responses

Response samples

Content type
application/json
[
  • {
    }
]

ZONAS

Zona

Detalle de una zona

Authorizations:
Security
path Parameters
zoneId
required
integer

Id de la zona

header Parameters
Authentication
required
string

Token de autenticación.

Responses

Response samples

Content type
application/json
{}

Obtiene todas las zonas

Authorizations:
Security
header Parameters
Authentication
required
string

Token de autenticación.

Responses

Response samples

Content type
application/json
[]

Obtiene las actividades asociadas a una

Authorizations:
Security
path Parameters
zoneId
required
any
query Parameters
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

header Parameters
Authentication
required
string

Token de autenticación.

Responses

Response samples

Content type
application/json
[]

Zonas de un destino

Zonas de un destino

Authorizations:
Security
path Parameters
id
required
string

Id del destino

query Parameters
lang
string
Enum: "es" "en" "it" "fr" "pt"

Idioma

header Parameters
Authentication
required
string

Token de autenticación

Responses

Response samples

Content type
application/json
[]