Bookings
Table of Contents¶
Introduction¶
This article covers the API requests related to Bookings.
Processing a booking¶
The endpoint handles the creation/update of the booking in question, as well as its stays and associated contacts.
The API user needs the "bookings" permission to use this endpoint.
- Endpoint:
https://app.hoteldatahub.io/api/v1/bookings/ - Swagger:
https://app.hoteldatahub.io/swagger/#/bookings
Use cases¶
The booking management endpoint is very useful for bringing new bookings into Fideltour from different sources. For bookings that already exist, it lets you enrich the information in their record, improving the quality of the database. Multiple data sources let you gather different information that is then centralized in Fideltour.
Available methods¶
| Method | Endpoint |
|---|---|
| POST | https://app.hoteldatahub.io/api/v1/bookings/ |
Parameter table¶
Booking¶
| Key | Type | Required | Description |
|---|---|---|---|
hotel_chain |
String | Yes | Company code. Provided by HotelDataHub. |
external_object_id |
String | Yes | External identifier of the booking in HotelDataHub |
date |
Datetime (YYYY-MM-DDTHH:MM:SS) | Yes | Creation date |
entrance |
Date (YYYY-MM-DD) | Yes | Check-in date |
departure |
Date (YYYY-MM-DD) | Yes | Check-out date |
localizer |
String | Yes | Localizer |
hotel |
Integer | Yes | Hotel identifier. Provided by HotelDataHub. |
agency |
String | No | Agency name |
amount |
Float | No | Total amount |
currency |
String | No | Currency in ISO 4217 |
status |
Integer | No | Status: 1 = Voided 2 = Confirmed 3 = Pending 4 = Cancelled 5 = No show 6 = Modified 7 = Quote 8 = Stay 9 = Departure |
input_channel |
Integer | No | Input channel of the movement: 0 = Phone 1 = Web 2 = App 3 = Wifi 4 = PMS 5 = API 6 = Import 7 = BE 8 = Chatbot 9 = Concierge 10 = Call center 11 = IBE (ad-hoc BE) 12 = Channel manager 14 = PMS Restaurant 15 = PMS Spa 17 = BE Restaurant 18 = BE Spa 19 = Connector HUB 20 = Digital key platform 21 = Corporate CRM 22 = Social media form |
regime |
String | No | Name of the meal plan |
room_type |
String | No | Name of the room type |
fare_type |
String | No | Name of the rate type |
offer |
String | No | Name of the offer |
event_type |
String | No | Name of the event type |
package |
String | No | Name of the package |
category |
String | No | Name of the category (segment) |
url |
String (max. 2048 characters) | No | Lets you send a URL associated with the booking |
notes |
String (max. 1024 characters) | No | Comments about the booking |
tags |
List[String] | No | List of tags associated with the booking |
stays |
List[Stay] | Yes | See the Stay table below |
extras |
List[Extra] | No | See the Extra table below |
Stay¶
Note: For convenience, fields already present in the booking with the same value in the stay can be omitted; the stay will then inherit those values from the booking.
| Key | Type | Required | Description |
|---|---|---|---|
hotel_chain |
String | Yes | Company code. Provided by HotelDataHub. |
external_object_id |
Integer | Yes | Identifier in HotelDataHub |
date |
Datetime (YYYY-MM-DDTHH:MM:SS) | Yes | Creation date |
entrance |
Date (YYYY-MM-DD) | Yes | Check-in date |
departure |
Date (YYYY-MM-DD) | Yes | Check-out date |
localizer |
String | Yes | Localizer |
hotel |
Integer | Yes | Hotel identifier. Provided by HotelDataHub. |
agency |
String | No | Agency name |
amount |
Float | No | Total amount |
currency |
String | No | Currency in ISO 4217 |
status |
Integer | No | Movement status: 1 = Voided 2 = Confirmed 3 = Pending 4 = Cancelled 5 = No show 6 = Modified 7 = Quote 8 = Stay 9 = Departure |
room |
String | No | Room number |
adults |
Integer | No | Number of adults in the movement |
juniors |
Integer | No | Number of juniors in the movement |
children |
Integer | No | Number of children in the movement |
babies |
Integer | No | Number of babies in the movement |
regime |
String | No | Name of the meal plan |
contracted_regime |
String | No | Originally contracted meal plan |
upgraded_regime |
String | No | Meal plan assigned after an upgrade |
room_type |
String | No | Name of the room type |
contracted_room_type |
String | No | Contracted room type |
upgraded_room_type |
String | No | Room type assigned after an upgrade |
fare_type |
String | No | Name of the rate type |
offer |
String | No | Name of the offer |
event_type |
String | No | Name of the event type |
package |
String | No | Name of the package |
category |
String | No | Name of the category (segment) |
url |
String (max. 2048 characters) | No | Lets you send a URL associated with the stay |
notes |
String (max. 1024 characters) | No | Comments about the stay |
guests |
List[Guest] | Yes | See the Guest table below |
Extra¶
| Key | Type | Required | Description |
|---|---|---|---|
id |
String | Yes | Extra's ID |
localizer |
String | Yes | Extra's localizer |
name |
String | Yes | Extra's name |
date |
Datetime (YYYY-MM-DDTHH:MM:SS) | No | Extra's creation date |
start |
Date (YYYY-MM-DD) | No | Extra's start date |
end |
Date (YYYY-MM-DD) | No | Extra's end date |
amount |
Numeric | No | Extra's total |
currency |
String | No | Extra's payment currency |
Guest¶
| Key | Type | Required | Description |
|---|---|---|---|
email |
String | Yes | Unique field in the Fideltour DB, used as the guest's identifier |
external_object_id |
String | No | Guest's external identifier |
is_owner |
Boolean | No | Indicates the booking's main guest |
name |
String | No | First name |
surname |
String | No | Last name |
phone |
String | No | Phone number |
birthday |
Date (YYYY-MM-DD) | No | Date of birth |
gender |
Integer | No | Gender: 0 = not specified (default) 1 = male 2 = female 3 = non-binary 4 = genderfluid 5 = prefer not to say |
address |
String | No | Address |
post_code |
String | No | Postal code |
zone |
String | No | Name of the zone |
town |
String | No | Name of the town |
province |
String | No | Name of the province |
country |
String | No | ISO 3166-1 alpha-2 |
language |
String | No | ISO 639-1 Code |
identification_document_type |
Numeric | No | Identity document type: 0 = Other 1 = National ID 2 = Foreigner ID 3 = Passport |
identification_number |
String | No | Identity document number |
business_name |
String | No | Company name |
work_place |
String | No | Job title |
business_address |
String | No | Company address |
fiscal_address |
String | No | Fiscal address |
url |
String (max. 2048 characters) | No | URL associated with the guest |
notes |
String | No | Notes |
custom_tags |
List[String] | No | List of tag names |
custom_fields |
Object | No | Key-value dictionary with the contact's custom fields |
subscribed |
Boolean | No | Subscribed to marketing communications. true = subscribed, false = not subscribed (default) |
accept_terms |
Boolean | No | Accepts the terms and conditions |
accept_personalized_communications |
Boolean | No | Accepts personalized marketing communications |
accept_sms |
Boolean | No | Accepts SMS marketing communications |
accept_webpush |
Boolean | No | Accepts web push notifications |
accept_whatsapp |
Boolean | No | Accepts WhatsApp marketing communications |
subscribed_datetime |
Datetime (YYYY-MM-DDTHH:MM:SS) | No | Date and time of the subscription |
opt_in |
String | No | Opt-in type: • S = Simple opt-in• D = Double opt-in• P = Double opt-in pending |
loyalty_subscribed |
Boolean | No | If true, enrolls the guest in the loyalty program |
loyalty_unsubscribed |
Boolean | No | If true, removes the guest from the loyalty program |
loyalty_datetime |
Datetime (YYYY-MM-DDTHH:MM:SS) | No | Date and time of enrollment in the loyalty program |
loyalty_id |
String | No | Loyalty program card number |
loyalty_level |
String | No | Loyalty level identifier |
loyalty_nights |
Integer | No | Total nights accumulated in the program |
loyalty_bookings |
Integer | No | Total bookings accumulated in the program |
loyalty_last_booking |
Date (YYYY-MM-DD) | No | Date of the last booking in the program |
Examples¶
Below is an example of processing a booking:
Request (POST)¶
Protocol: HTTP/1.1
Method: POST
Endpoint: https://app.hoteldatahub.io/api/v1/bookings/
Headers:
Content-Type: application/json
Authorization: Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Body:
{
"hotel": 2293,
"hotel_chain": "6NOK",
"date": "2025-11-27T10:08:08",
"entrance": "2026-10-02",
"departure": "2026-10-04",
"localizer": "91764088833/6",
"external_object_id": "12345726",
"agency": "Empresa de prueba",
"offer": "Black Friday",
"category": "Adultos consumistas",
"amount": 280,
"currency": "EUR",
"input_channel": 4,
"status": 2,
"stays": [
{
"entrance": "2026-10-02",
"departure": "2026-10-04",
"localizer": "91764088833/6",
"external_object_id": "123456112",
"amount": 280,
"currency": "EUR",
"room": "0A Doble 2 camas",
"room_type": "Habitación Doble",
"regime": "Alojamiento",
"adults": 2,
"children": 0,
"status": 2,
"guests": [
{
"id": "3183465",
"name": "BETTINA",
"is_owner": true,
"surname": "STROBEL",
"email": "bettinastrobel@web.de",
"phone": "0049772691980",
"gender": 2,
"language": "es",
"birthday": "1990-12-12",
"post_code": "07009",
"notes": "",
"country": "DE",
"custom_tags": [],
"subscribed": false
}
]
}
]
}