Pre-Book
This document provides the specification for the Bonotel Pre-Book API method, which would allow customers to verify that a specific hotel, room, rate plan and occupancy is still available and to verify the rate before they attempt the booking. This method bypasses caching and returns the current rate and status. If you have any questions, contact us at: [email protected]
Bonotel will be monitoring and tracking the Pre-Book requests per customer per day to ensure that the Pre-Book method is only used right before making a reservation request. For example, if your account normally generates 20 reservation requests in a day, we expect ~20 Pre-Book requests. Any excessive use of the Pre-Book method will be throttled.
Before making a Pre-Book request, you would need to have already posted an availability request and extracted out the necessary details from the response to generate a Pre-Book request.
To help customers leverage existing code, we have modeled the Pre-Book method after our reservation method format. The primary difference is that we remove the guest names and comments from the request. The response will include a status per room, the total rate per room and for the booking, and any exclusive hotel fees. A room can have zero or more hotel fees regardless of the fee type.
Endpoint:
Parent/Group | Element/ Attribute Name | Type | Req. | Data/Format | Description |
---|---|---|---|---|---|
preBookRequest | | Group | Yes | | Root element |
preBookRequest | control | Group | Yes | | Authentication group |
control | userName | Element | Yes | String | Your username |
control | passWord | Element | Yes | String | Your password |
preBookRequest | requestDetails | Group | Yes | | Pre-book request details |
requestDetails | timeStamp | Attribute | Yes | ISO 8601 | UTC: YYYYMMDDThh🇲🇲ss |
requestDetails | checkIn | Element | Yes | MM-DDD-YYY | Check-In date |
requestDetails | checkOut | Element | Yes | MM-DDD-YYY | Check-Out date |
requestDetails | noOfRooms | Element | Yes | Integer | Number of rooms – 9 max. |
requestDetails | noOfNights | Element | Yes | Integer | Number of nights – 30 max |
requestDetails | hotelCode | Element | Yes | Integer | hotelCode from Avail Response |
requestDetails | total | Element | Yes | Decimal | Total including all rooms |
total | currency | Attribute | Yes | ISO 4217 | Currency, usually USD |
requestDetails | totalTax | Element | Yes | Decimal | Total including all rooms - usually 0.00 |
totalTax | currency | Attribute | Yes | ISO 4217 | Currency, usually USD |
requestDetails | roomData | Group | Yes | | Room Block, 9 max. |
roomData | roomNo | Element | Yes | integer | Room Number, first is 1 |
roomData | roomCode | Element | Yes | integer | ID from Avail Response |
roomData | roomTypeCode | Element | Yes | integer | ID from Avail Response |
roomData | bedTypeCode | Element | Yes | integer | ID from Avail Response |
roomData | ratePlanCode | Element | Yes | integer | ID from Avail Response |
roomData | noOfAdults | Element | Yes | integer | Num of adults: 1 or more |
roomData | noOfChildren | Element | Yes | integer | Num of children: 0 or more |
roomData | childAges | Group | Yes | | Ages for children that are <= 18 |
childAges | childAge | Element | No | Integer | One age per child, only required for children. |
roomData | total | Element | Yes | Decimal | Total for current room |
total | currency | Attribute | Yes | ISO 4217 | Currency, usually USD |
roomData | totalTax | Element | Yes | Decimal | Total tax for current room - usually 0.00 |
totalTax | currency | Attribute | Yes | ISO 4217 | Currency, usually USD |
Parent/Group | Element/ Attribute Name | Type | Required | Data/ Format | Description |
---|---|---|---|---|---|
preBookResponse | | Group | Yes | | Root element |
preBookResponse | status | Attribute | Yes | Y/N | Y=1 or more successful, N=none successful |
preBookResponse | roomDetails | Group | Yes | | |
roomDetails | room | Element | Yes | Y/N | Room was successful or not. Note, if a room returns with a rate change, it is successful, it just has a new rate. |
room | roomNo | Attribute | Yes | Integer | The number of the room, starting with 1. |
roomDetails | total | Element | No | Decimal | Total rate for the room. Compare against the availability rate to check for rate changes. |
total | currency | Attribute | No | ISO 4217 | Currency, usually USD |
roomDetails | totalTax | Element | No | Decimal | Total tax for current room - usually 0.00 |
totalTax | currency | Attribute | No | ISO 4217 | Currency, usually USD |
roomDetails | hotelFees | Group | No | | All hotelFee groups |
hotelFees | hotelFee | Group | No | | A specific hotelFee with elements |
hotelFee | feeType | Element | No | String | Amenity, Cleaning, National Park Entrance, Resort, Security Deposit |
hotelFee | feeMethod | Element | No | String | Only "Exclusive" currently |
hotelFee | requiredFee | Element | No | Yes/No | |
hotelFee | feeTotal | Element | No | Decimal | Inclusive of any taxes |
Parent/Group | Element/ Attribute Name | Type | Required | Data/Format | Description |
---|---|---|---|---|---|
preBookResponse | | Group | Yes | | Root element |
preBookResponse | Status | Attribute | Yes | Y/N | Y=1 or more successful, N=none successful |
preBookResponse | errors | Group | No | | Only one error will ever return |
errors | code | Element | No | String | See table of Result Codes |
errors | description | Element | No | String | Description of result code |
Response
Method: /PreBookCheck.do
It is possible to see a response where one or more rooms are available and one or more other rooms are not available.
Please take note of this example if you support booking two or more rooms. The top level status setting is ‘Y’ here because at least one of the requested rooms was available: