API OTA

1. Introducción

1.1 Credenciales

Para poder acceder al API se necesita un API Key y un Secret Key que se facilitará al usuario.

El API Key se utiliza para identificar al usuario de la petición. El Secret Key se utiliza para generar la firma digital que nos permitirá asegurar que la petición llega desde la fuente correcta.

Se utiliza HMAC-SHA256 para la encriptación de la firma digital. La firma digital se calculará a partir de la URL y el body de la petición junto con el Secret Key facilitados.

1.1.1 Cálculo firma para una petición GET

require 'openssl'
SECRET_KEY='MI-SECRET-KEY'
# Para calcular la firma se usará la URL sin el dominio
url='/api/booking/ota/availability?date-from=2022-05-03&time-from=10:30&pickup-place=1&date-to=2022-05-06&time-to=10:30&return-place=1&customer-language=es'
signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha1'), SECRET_KEY, url)

1.1.2 Cálculo de la firma para una petición POST con datos JSON

require 'openssl'
SECRET_KEY='MI-SECRET-KEY'
# Para calcular la firma se usará la URL sin el dominio y el cuerpo del mensaje a enviar
url="/api/booking/ota/booking"
body='{"reservation":{"date_from":"2019-05-03","time_from":"10:00","date_to":"2019-05-07","time_to":"10:00","pickup_place":1,"return_place":1,"customer_language": "es","customer_name": "Tyrion","customer_surname": "Lannister","customer_document_id": "55555555R","customer_phone_number": "935551010","customer_email":"info@games.com","products": [{"code":"A","quantity":1}],"extras":[{"code":"ELEVADOR","quantity":1}],"agency_reservation_id":"1000"}}'
data = url + body
signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha1'), SECRET_KEY, data)

1.1.3 Petición a un end-point GET usando la firma y el API Key

Una vez obtenida la firma, puede hacerse una llamada al end-point correspondiente

Se usará una cabecera HTTP Authorization con el API Key y la firma obtenida separados por :

curl -H "Authorization: {API_KEY}:{signature}" -H "Content-Type: application/json"  -X GET 'https://micuenta.com/api/booking/ota/location-list'

1.1.4 Petición a un end-point POST usando la firma y el API Key

Se usará una cabecera HTTP Authorization con el API Key y la firma obtenida separados por :

curl -H "Authorization: {API_KEY}:{signature}" -H "Content-Type: application/json" -d '{}' -X POST 'https://micuenta.com/api/booking/ota/booking'

2. API

2.1 Consulta lugares de entrega y devolución

GET /api/booking/ota/location-list

Obtiene los lugares de entrega y devolución

Petición

Respuesta de la petición

2.2 Consulta la disponibilidad

GET /api/booking/ota/availability

Obtiene los productos, el precio y la disponibilidad para el período deseado.

Petición:

Respuesta de la petición

2.3 Crea una reserva

POST /api/booking/ota/booking

Crea una reserva

Petición:

Respuesta de la petición

2.4 Consulta reserva

GET /api/booking/ota/booking

Consulta reserva

Petición

Respuesta de la petición

Respuesta reserva no existe

2.5 Cancelar reserva

POST /api/booking/ota/cancel-booking

Cancela una reserva

Petición

Respuesta de la petición