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
1.1.2 Cálculo de la firma para una petición POST con datos JSON
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 :
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 :
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
Parámetro | Descripción | Detalle | |
customer-language | Idioma de la respuesta | Usar el código ISO-639-1 | Opcional |
pickup-place-id | Lugar de entrega | Obtiene los lugares de devolución válidos para el lugar de entrega | Opcional |
Respuesta de la petición
Devuelve un JSON con los siguientes atributos
Atributo | Descripción | Detalle |
success | Resultado de la operación | true si la operación se ha podido realizar false en el caso de que se hayan producido errores |
errors | Detalle del error | Si se produce un error, se detallan los errores que se hayan podido producir |
response | Respuesta | array[Object] |
| id | Identificador del lugar de entrega/devolución |
| name | Nombre del lugar de entrega/devolución |
| price | Suplemento por el lugar de entrega |
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:
Parámetro | Descripción | Detalle | |
date-from | Fecha de inicio | Formato yyyy-mm-dd | Obligatorio |
time-from | Hora de inicio | Formato hh:mm | Obligatorio |
pickup-place | Lugar de entrega | ID del lugar | Obligatorio |
date-to | Fecha de fin | Formato yyyy-mm-dd | Obligatorio |
time-to | Fecha de fin | Formato hh:mm | Obligatorio |
return-place | Lugar de devolución | ID del lugar | Obligatorio |
customer-language | Idioma de la respuesta | Usar el código ISO-639-1 | Opcional |
sales-chanel-code | Canal de venta | Sólo si el sistema está configurado para múltiples canales de venta | Opcional |
driver-age | Edad del conductor | Edad del conductor | Opcional |
Respuesta de la petición
Devuelve un JSON con los siguientes atributos
Atributo | Descripción | Detalle |
success | Resultado de la operación | true si la operación se ha podido realizar false en el caso de que se hayan producido errores |
errors | Detalle del error | Si se produce un error, se detallan los errores que se hayan podido producir |
response | Respuesta | Si la operación se ha llevado a cabo, retorna el resultado |
response | Respuesta | [Object] |
| date_from | Fecha entrega |
| time_from | Hora de entrega |
| date_to | Fecha devolución |
| time_to | Hora de devolución |
| pickup_place_id | Identificador lugar de entrega |
| pickup_place | Nombre del lugar de entrega |
| pickup_place_customer_translation | Nombre del lugar de entrega traducido al idioma de la petición |
| return_place_id | Identificador lugar de devolución |
| return_place | Nombre del lugar de devolución |
| return_place_customer_translation | Nombre del lugar de devolución traducido al idioma de la petición |
| days | Número de días de alquiler |
| time_from_cost | Suplemento hora de entrega |
| time_to_cost | Suplemento hora de devolución |
| pickup_place_cost | Suplemento lugar de entrega |
| return_place_cost | Suplemento lugar de devolución |
| driver_age_cost | Suplemento edad conductor |
| products | array[Object] Productos |
| - code | Código del producto |
| - name | Nombre del producto |
| - vat_type | Tipo de impuestos |
| - days | Días facturación |
| - price | Precio total con impuestos |
| - price_without_taxes | Precio total sin impuestos |
| - available | Disponible (true) |
| extras | array[Object] Extras |
| - code | Código del extra |
| - name | Nombre del extra |
| - days | Días facturación |
| - unit_price | Precio una unidad (todos los días) |
| - price_without_taxes | Precio total sin impuestos |
| - max_quantity | Cantidad máxima que puede seleccionarse |
| - available | Disponible (true) |
2.3 Crea una reserva
POST /api/booking/ota/booking
Crea una reserva
Petición:
Se enviará un objeto JSON con los siguientes atributos
Parámetro | Descripción | Detalle | |
reservation | [Object] | Detalle de la reserva | Obligatorio |
| date_from | Fecha entrega | Obligatorio |
| time_from | Hora de entrega | Obligatorio |
| date_to | Fecha devolución | Obligatorio |
| time_to | Hora de devolución | Obligatorio |
| pickup_place | Identificador lugar de entrega | Obligatorio |
| return_place | Identificador del lugar de devolución | Obligatorio |
| customer_name | Nombre del cliente | Obligatorio |
| customer_surname | Apellidos del cliente | Obligatorio |
| agency_reservation_id | Referencia de la reserva para la agencia | Obligatorio |
| sales_channel_code | Canal de venta | Opcional |
| products | array[Object] Productos | Obligatorio |
| - code | Código del producto | Obligatorio |
| - quantity | Cantidad del producto | Opcional |
| extras | array[Object] Extras | Obligatorio |
| - code | Código del extra | Obligatorio |
| - quantity | Cantidad del extra | Opcional |
Respuesta de la petición
Devuelve un JSON con los siguientes atributos
Atributo | Descripción | Detalle |
success | Resultado de la operación | true si la operación se ha podido realizar false en el caso de que se hayan producido errores |
errors | Detalle del error | Si se produce un error, se detallan los errores que se hayan podido producir |
response | Respuesta | [Object] Si la operación se ha llevado a cabo, retorna el resultado |
| status | "reserved" si la reserva se llevó a cabo |
| reservation | [Object] La reserva |
| - id | Identificador reserva |
| - agency_reservation_id | Identificador reserva agencia |
| - date_from | Fecha entrega |
| - time_from | Hora de entrega |
| - date_to | Fecha devolución |
| - time_to | Hora de devolución |
| - pickup_place_id | Identificador lugar de entrega |
| - pickup_place | Nombre del lugar de entrega |
| - pickup_place_customer_translation | Nombre del lugar de entrega traducido al idioma de la petición |
| - return_place_id | Identificador lugar de devolución |
| - return_place | Nombre del lugar de devolución |
| - return_place_customer_translation | Nombre del lugar de devolución traducido al idioma de la petición |
| - customer_language | Código ISO idioma reserva |
| - days | Número de días de alquiler |
| - item_cost | Coste del producto |
| - extras_cost | Coste de los extras |
| - time_from_cost | Suplemento hora de entrega |
| - time_to_cost | Suplemento hora de devolución |
| - pickup_place_cost | Suplemento lugar de entrega |
| - return_place_cost | Suplemento lugar de devolución |
| - driver_age_cost | Suplemento edad conductor |
| - category_supplement_1_cost | Coste combustible |
| - total_cost | Coste total |
| - product_deposit_cost | Fianza producto |
| - product_guarantee_cost | Garantía producto |
| - driver_age_deposit | Fianza edad del conductor |
| - total_deposit | Fianza total |
| products | array[Object] Productos |
| - item_id | Código del producto |
| - item_description | Nombre del producto |
| - item_description_customer_translation | Nombre del producto idioma cliente |
| - item_unit_cost | Coste producto (1 unidad) |
| - item_cost | Coste producto (todas las unidades) |
| - quantity | Cantidad |
| - category_supplement_1_unit_cost | Suplemento combustible (1 unidad) |
| - category_supplement_1_cost | Suplemento combustible (todas las unidades) |
| - product_deposit_unit_cost | Franquicia (1 unidad) |
| - product_deposit_cost | Franquicia (todas las unidades) |
| - product_guarantee_unit_cost | Garantía (1 unidad) |
| - product_guarantee_cost | Garantía (todas las unidades) |
| extras | array[Object] Productos |
| - extra_id | Código del extra |
| - extra_description | Nombre del extra |
| - item_description_customer_translation | Nombre del extra idioma cliente |
| - extra_unit_cost | Coste extra (1 unidad) |
| - quantity | Cantidad |
| - extra_cost | Coste extra (todas las unidades) |
2.4 Consulta reserva
GET /api/booking/ota/booking
Consulta reserva
Petición
Parámetro | Descripción | Detalle | |
agency-reservation-id | Identificador reserva | Identificador de la reserva con el identificador de la agencia | Obligatorio |
Respuesta de la petición
Devuelve un JSON con los mismos atributos que el end-point de creación de reserva
Ver el ejemplo del end-point de creación de reserva
Respuesta reserva no existe
2.5 Cancelar reserva
POST /api/booking/ota/cancel-booking
Cancela una reserva
Petición
Parámetro | Descripción | Detalle | |
reservation | [Object] | Detalle de la reserva | Obligatorio |
| agency-reservation-id | Identificador de la reserva para la agencia | Obligatorio |
Respuesta de la petición
Devuelve un JSON con los siguientes atributos
Atributo | Descripción | Detalle |
success | Resultado de la operación | true si la operación se ha podido realizar false en el caso de que se hayan producido errores |
errors | Detalle del error | Si se produce un error, se detallan los errores que se hayan podido producir |
response | Respuesta | [Object] Si la operación se ha llevado a cabo, retorna el resultado |
| status | "canceled" si la reserva se canceló |