Movimientos
Tabla de contenidos¶
- Introducción
- Casos de uso
- Métodos disponibles
- Tabla de parámetros
- Ejemplos
- Petición (POST)
- Respuesta (POST)
- Petición (GET)
- Respuesta (GET)
- Petición (PATCH)
- Respuesta (PATCH)
Introducción¶
En este artículo hablamos sobre las peticiones de la API relacionadas con los Movimientos (Entries).
Operaciones disponibles: - Crear movimiento - Actualizar movimiento - Listar y filtrar movimientos
Se entiende por movimiento cualquier conjunto de datos que implique una acción de un cliente a través de una plataforma de terceros, como por ejemplo:
- Una reserva desde el motor de la web.
- Una estancia desde el PMS.
- Una conexión desde el portal cautivo.
- La compra de un servicio del hotel desde una aplicación de conserjería virtual...
Endpoint: https://app.hoteldatahub.io/api/v1/entries/
Swagger: https://app.hoteldatahub.io/swagger/#/entries
Casos de uso¶
La gestión de movimientos resulta de gran utilidad para segmentar y automatizar el envío de campañas de email marketing, o para añadir puntos a la ficha de un contacto fidelizado.
Gestión de campañas¶
En Fideltour, las campañas de email marketing pueden automatizarse en base a los datos de un movimiento. Por ejemplo, es posible enviar campañas según la fecha de entrada o salida de un huésped, también podemos utilizar la fecha de creación de la reserva para enviar un correo de agradecimiento, de venta cruzada o simplemente informativo.
Programa de fidelización¶
Si el cliente tiene contratado el módulo Loyalty de Fideltour, se utilizan los movimientos para otorgar puntos de fidelización a los contactos.
Métodos disponibles¶
Todos los métodos y filtros disponibles para trabajar con movimientos se pueden consultar aquí.
En este artículo nos centramos en los siguientes:
- GET: Consulta de datos de uno o varios movimientos
- POST: Creación de un nuevo movimiento
- PATCH: Actualización de los datos de un movimiento ya existente
En algunos métodos es necesario conocer el ID del entry, y para obtener dicho ID, recomendamos utilizar el endpoint https://app.hoteldatahub.io/api/v1/entries/ con los siguientes parámetros de URL:
- Localizador (
localizer) - ID del contacto al que pertenece (
contact) - Canal de entrada del movimiento (
input_channel)
Tabla de parámetros¶
| Campo | Tipo | Obl. | Descripción |
|---|---|---|---|
hotel_chain |
String | Sí | Código de la empresa. Proporcionado por HotelDataHub. |
contact |
Integer | Sí | Identificador en HotelDataHub, del contacto que realiza el movimiento. |
date |
DatetimeYYYY-MM-DDTHH:MM:SS |
Sí | Fecha del movimiento |
entrance |
DateYYYY-MM-DD |
Sí | Fecha de entrada |
departure |
DateYYYY-MM-DD |
Sí | Fecha de salida |
localizer |
String | Sí | Localizador |
hotel |
Integer | Sí | Identificador del hotel. Proporcionado por HotelDataHub. |
agency |
String | No | Dos opciones: - Identificador de la agencia ya creada. - Nombre de la agencia. El sistema la crea si no existe ninguna con ese nombre |
booking_type |
Integer | No | Tipo de movimiento:0 = Booking (Default)1 = Stay2 = Visitante3 = Otros4 = Mesa en restaurante5 = Acceso a gimnasio o SPA6 = Actividades de animación7 = Tratamiento de SPA8 = Cama balinesa9 = Excursión10 = Transfer11 = Room service12 = Reposición de minibar13 = Alquiler de vehículo14 = Cotización15 = Bar16 = Restaurante17 = Acceso al SPA18 = Gimnasio19 = Actividad deportiva20 = Golf21 = Parking22 = Upselling23 = Cross-selling |
amount |
Float | No | Importe total. |
amount_paid |
Float | No | Importe pagado. |
paid |
Booleano | No | Si el pago total está confirmado |
currency |
String | No | Moneda en ISO 4217 |
status |
Integer | No | Estado del movimiento:Activa=1Inactiva=0Default= 1 |
sub_status |
Integer | No | Estado del movimiento:Anulado=1Confirmado=2Pendiente=3Cancelado=4No show=5Modificado=6Cotización=7Estancia=8Salida=9 |
room_number |
String | No | Número de habitación |
adults |
Integer | No | Cantidad de adultos en el movimiento |
juniors |
Integer | No | Cantidad de juniors en el movimiento |
children |
Integer | No | Cantidad de niños en el movimiento |
babies |
Integer | No | Cantidad de bebés en el movimiento |
input_channel |
Integer | No | Canal de entrada del movimiento. El servidor lo determina automáticamente según el tipo de empresa; solo es necesario enviarlo en casos especiales.0 = Teléfono1 = WEB2 = APP3 = WiFi4 = PMS5 = API6 = IMPORT7 = BE8 = CHATBOT9 = CONCIERGE10 = CALL CENTER12 = CHANNEL MANAGER13 = PMS (otros)14 = PMS Restaurante15 = PMS SPA16 = BE (otros)17 = BE Restaurante18 = BE SPA19 = CONNECTOR HUB20 = Plataforma de llave digital21 = CRM22 = Formulario en redes sociales23 = POS Restaurante24 = POS SPA25 = TTOO26 = B2C27 = B2B28 = Agencia29 = DMC |
original_input_channel |
Integer | No | Canal de origen tal como lo registró el sistema externo (PMS/BE). A diferencia de input_channel (que el servidor puede forzar según el tipo de empresa), este campo preserva el canal original informado por el sistema externo.0 = Teléfono1 = WEB2 = APP3 = WiFi4 = PMS5 = API6 = IMPORT7 = BE8 = CHATBOT9 = CONCIERGE10 = CALL CENTER12 = CHANNEL MANAGER13 = PMS (otros)14 = PMS Restaurante15 = PMS SPA16 = BE (otros)17 = BE Restaurante18 = BE SPA19 = CONNECTOR HUB20 = Plataforma de llave digital21 = CRM22 = Formulario en redes sociales23 = POS Restaurante24 = POS SPA25 = TTOO26 = B2C27 = B2B28 = Agencia29 = DMC |
is_checkin_realized |
Booleano | No | Indica si se ha confirmado/realizado el checkin. Default: False |
is_checkout_realized |
Booleano | No | Indica si se ha confirmado/realizado el checkout. Default: False |
regime |
String | No | Nombre del tipo de regimen. El sistema la crea si no existe ninguna con ese nombre |
contracted_regime |
String | No | Régimen contratado originalmente. Acepta ID numérico o nombre; el sistema lo crea si no existe ninguno con ese nombre |
upgraded_regime |
String | No | Régimen asignado tras upgrade. Acepta ID numérico o nombre; el sistema lo crea si no existe ninguno con ese nombre |
room_type |
String | No | Nombre del tipo de habitación. El sistema la crea si no existe ninguna con ese nombre |
contracted_room_type |
String | No | Tipo de habitación contratada. Acepta ID numérico o nombre; el sistema lo crea si no existe ninguno con ese nombre |
upgraded_room_type |
String | No | Tipo de habitación asignada tras upgrade. Acepta ID numérico o nombre; el sistema lo crea si no existe ninguno con ese nombre |
fare_type |
String | No | Nombre del tipo de tarifa. El sistema la crea si no existe ninguna con ese nombre |
offer |
String | No | Nombre de la oferta. El sistema la crea si no existe ninguna con ese nombre |
event_type |
String | No | Nombre del tipo de evento. El sistema lo crea si no existe ninguno con ese nombre |
package |
String | No | Nombre del paquete. El sistema lo crea si no existe ninguno con ese nombre |
category |
String | No | Nombre de la categoría(segmento). El sistema la crea si no existe ninguna con ese nombre |
fare_type |
String | No | Nombre del tipo de tarifa. El sistema lo crea si no existe ninguno con ese nombre |
offer |
String | No | Nombre de la oferta. El sistema la crea si no existe ninguna con ese nombre |
event_type |
String | No | Nombre del tipo de evento. El sistema lo crea si no existe ninguno con ese nombre |
package |
String | No | Nombre del paquete. El sistema lo crea si no existe ninguno con ese nombre |
category |
String | No | Nombre de la categoría (segmento). El sistema la crea si no existe ninguna con ese nombre |
amount_paid |
Float | No | Importe pagado |
paid |
Booleano | No | Si el pago total está confirmado |
url |
String (máx. 2048 caracteres) | No | Permite enviar una URL asociada al movimiento. Este campo puede ser aprovechado en el editor de campañas gracias a la etiqueta [BOOKING_URL]. Utiliza este campo si quieres incluir en tus campañas un enlace a un servicio externo a Fideltour, como podría ser un enlace a un sistema de check-in online o un portal externo de encuestas de satisfacción, para el que además necesitas una URL única para cada reserva. |
external_object_id |
String | No | Identificador del movimiento en el sistema externo (PMS, BE, etc.). Se usa como clave de unicidad junto con hotel, booking_type y contact para identificar y deduplicar movimientos en Fideltour. |
notes |
String (máx. 1024 caracteres) | No | Comentarios sobre la reserva |
custom_fields |
Objeto | No | Diccionario clave-valor con campos personalizados del movimiento. Las claves son los identificadores de los campos definidos en Fideltour. Ejemplo: {"cf_promo_code": "VERANO24"} |
Ejemplos¶
A continuación mostramos algunos ejemplos de creación, actualización y visualización de movimientos.
Petición (POST)¶
En el siguiente ejemplo se muestra una solicitud para crear un movimiento de reserva del contacto con identificador 12345.
PROTOCOLO: HTTP/1.1
METODO: POST
HOST/ENDPOINT: https://app.hoteldatahub.io/api/v1/entries/
HEADERS:
Content-type: application/json
Authorization: Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
BODY:
{
"hotel_chain": "HotelChain",
"hotel": 50,
"contact": 12345,
"date": "2022-12-12T12:12:12",
"entrance": "2022-12-12",
"departure": "2022-12-20",
"localizer": "XxXxXx-A",
"status": 1,
"room_number": "315",
"adults": 2,
"children": 3,
"babies": 1,
"amount": "576.56",
"currency": "EUR",
"booking_type": 0,
"is_checkout_realized": false,
"url": "https://checkin.hotel.com/XxXxXx-A",
"room_type": "Suite",
"regime": "Media pensión",
"agency": "Agencia de prueba"
}
Respuesta (POST)¶
{
"id": 718011,
"hotel_chain": "HotelChain",
"hotel": 50,
"contact": 12345,
"date": "2022-12-12T12:12:12",
"entrance": "2022-12-12",
"departure": "2022-12-20",
"localizer": "XxXxXx-A",
"status": 1,
"room_number": "315",
"input_channel": 7,
"adults": 2,
"childs": 3,
"babies": 1,
"amount": "576.56",
"currency": "EUR",
"booking_type": 0,
"is_checkout_realized": false,
"url": "https://checkin.hotel.com/XxXxXx-A",
"room_type": 98,
"regime": 34,
"agency": 4
}
Petición (GET)¶
En el siguiente ejemplo se muestra una solicitud para consultar la información de la reserva con localizador "XxXxXx-A", perteneciente al contacto 12345.
PROTOCOLO: HTTP/1.1
METODO: GET
HOST/ENDPOINT: https://app.hoteldatahub.io/api/v1/entries/?contact=12345&localizer=XxXxXx-A
HEADERS:
Authorization: Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
BODY: En este caso al ser un método de tipo GET no incluimos datos en el cuerpo de la petición, ya que se incluyen en la url.
Respuesta (GET)¶
{
"count": 1,
"next": null,
"previous": null,
"results": [{
"id": 718011,
"hotel_chain": "HotelChain",
"hotel": 50,
"contact": 12345,
"date": "2022-12-12T12:12:12",
"entrance": "2022-12-12",
"departure": "2022-12-20",
"localizer": "XxXxXx-A",
"status": 1,
"room_number": "315",
"input_channel": 7,
"adults": 2,
"childs": 3,
"babies": 1,
"amount": "576.56",
"currency": "EUR",
"booking_type": 0,
"is_checkout_realized": false,
"url": "https://checkin.hotel.com/XxXxXx-A",
"room_type": 98,
"regime": 34,
"agency": 4
}]
}
Petición (PATCH)¶
En el siguiente ejemplo se muestra una solicitud para actualizar la reserva con ID 718011.
PROTOCOLO: HTTP/1.1
METODO: PATCH
HOST/ENDPOINT: https://app.hoteldatahub.io/api/v1/entries/718011/
HEADERS:
Content-type: application/json
Authorization: Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
BODY:
{
"hotel_chain": "HotelChain",
"room_number": "Suite Junior",
"adults": 5,
"children": 3,
"babies": 0,
"entrance": "2022-12-22",
"departure": "2022-12-26",
"amount": "876.56"
}
Respuesta (PATCH)¶
{
"id": 718011,
"hotel_chain": "HotelChain",
"hotel": 50,
"contact": 12345,
"date": "2022-12-12T12:12:12",
"entrance": "2022-12-22",
"departure": "2022-12-26",
"localizer": "XxXxXx-A",
"status": 1,
"room_number": "Suite Junior",
"input_channel": 7,
"adults": 5,
"childs": 3,
"babies": 0,
"amount": "876.56",
"currency": "EUR",
"booking_type": 0,
"is_checkout_realized": false,
"url": "https://checkin.hotel.com/XxXxXx-A",
"room_type": 98,
"regime": 34,
"agency": 4
}