Movimientos

Tabla de contenidos

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 Código de la empresa. Proporcionado por HotelDataHub.
contact Integer Identificador en HotelDataHub, del contacto que realiza el movimiento.
date Datetime
YYYY-MM-DDTHH:MM:SS
Fecha del movimiento
entrance Date
YYYY-MM-DD
Fecha de entrada
departure Date
YYYY-MM-DD
Fecha de salida
localizer String Localizador
hotel Integer 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 = Stay
2 = Visitante
3 = Otros
4 = Mesa en restaurante
5 = Acceso a gimnasio o SPA
6 = Actividades de animación
7 = Tratamiento de SPA
8 = Cama balinesa
9 = Excursión
10 = Transfer
11 = Room service
12 = Reposición de minibar
13 = Alquiler de vehículo
14 = Cotización
15 = Bar
16 = Restaurante
17 = Acceso al SPA
18 = Gimnasio
19 = Actividad deportiva
20 = Golf
21 = Parking
22 = Upselling
23 = 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=1
Inactiva=0
Default= 1
sub_status Integer No Estado del movimiento:
Anulado=1
Confirmado=2
Pendiente=3
Cancelado=4
No show=5
Modificado=6
Cotización=7
Estancia=8
Salida=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éfono
1 = WEB
2 = APP
3 = WiFi
4 = PMS
5 = API
6 = IMPORT
7 = BE
8 = CHATBOT
9 = CONCIERGE
10 = CALL CENTER
12 = CHANNEL MANAGER
13 = PMS (otros)
14 = PMS Restaurante
15 = PMS SPA
16 = BE (otros)
17 = BE Restaurante
18 = BE SPA
19 = CONNECTOR HUB
20 = Plataforma de llave digital
21 = CRM
22 = Formulario en redes sociales
23 = POS Restaurante
24 = POS SPA
25 = TTOO
26 = B2C
27 = B2B
28 = Agencia
29 = 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éfono
1 = WEB
2 = APP
3 = WiFi
4 = PMS
5 = API
6 = IMPORT
7 = BE
8 = CHATBOT
9 = CONCIERGE
10 = CALL CENTER
12 = CHANNEL MANAGER
13 = PMS (otros)
14 = PMS Restaurante
15 = PMS SPA
16 = BE (otros)
17 = BE Restaurante
18 = BE SPA
19 = CONNECTOR HUB
20 = Plataforma de llave digital
21 = CRM
22 = Formulario en redes sociales
23 = POS Restaurante
24 = POS SPA
25 = TTOO
26 = B2C
27 = B2B
28 = Agencia
29 = 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
}