EnhancedHotelBookRQ
Important! Refer to the Enhanced Hotel Book User Guide for full documentation.
This API integrates multiple sources of content from the Sabre Global Distribution System (GDS) and non-GDS sources, such as re-distributors, agency-sourced hotel content, and various aggregators.
Features include:
- Books Aggregator hotel content through the Content Services for Lodging product suite
- Books GDS as a Content Service for Lodging segment or as a legacy segment
- Provides the ability to specify a hotel booking ID that uniquely identifies the hotel property, room type, room rate, number of guests, etc. This is the key element to trigger the hotel booking process.
- Provides the ability to identify failures during the orchestrated process, and provides notification of the failure.
The API performs several steps when booking a single room:
- Decrypts and retrieves shopped rate details based on the provided booking key.
- Depending on the type of booking key and values entered, follows three strategies to book the desired hotel rate: Aggregator hotel via CSL, GDS via CSL, or GDS as a legacy segment.
- If the booking is successful, validates the newly added segment statuses returned by the hotel vendor (
HK
/SS
/NN
/UC
/NO
). - Returns the current state of the session in the response payload (an internal call to TravelItineraryReadRQ).
- If the booking is successful, validates the newly added segment statuses returned by the hotel vendor (
Booking a Hotel Room
Note: To successfully book a hotel room, prior to calling Enhanced Hotel Book API, it is necessary to either retrieve an existing reservation (using GetReservationRQ) or add the agency name and address to the area (using PassengerDetailsRQ or UpdateReservationRQ).
The shopped hotel rate is encrypted within the hotel booking ID, which is generated after calling the HotelPriceCheckRQ API:
For the booking process to commence, the booking ID needs to be passed at /EnhancedHotelBookRQ/Booking/@key
.
Enhanced Hotel Book will automatically decode the booking key, obtain the hotel rate, determine the source (GDS or Aggregator), and check the value of the attribute @bookGDSviaCSL
.
If the @bookGDSviaCSL
attribute is set to false
, the GDS rate will be booked as a legacy segment. If the attribute is set to true
, the GDS rate will be booked as a Content Service for Lodging segment.
To sum it up, there are three strategies that the API can follow:
- Book Aggregator as Content Service for Lodging segment
- Book GDS as Content Service for Lodging segment
- Book GDS as legacy segment
Important! Ensure to pass guarantee or deposit details (such as credit card information) in the request, as lack of information will result in an unsuccessful transaction.
Upon the successful booking of any type of hotel segment, Enhanced Hotel Book will attempt to retrieve the current state of the session. It will internally call TravelItineraryReadRQ and pass its response as the final EnhancedHotelRS payload. At the same time, a final check is performed to validate whether the newly booked segment status equals HK
, NN
, or SS
(these are determined as successful segment statuses). If not, the transaction will be terminated.
Booking a hotel room using a Virtual Card
Starting with version 2.1.0, Enhanced Hotel Book API provides capability to book CSL content by means of a Virtual Card booking method.
To successfully book a room using the Virtual Card you need to pass the payment details at: /EnhancedHotelBookRQ/PaymentInformation/FormOfPayment/VirtualCard
Element/Attribute Name | Description |
---|---|
/PaymentInformation/@Type | Payment type. Choose “GUARANTEE” or “DEPOSIT” |
CustomerAccountCode | virtual card number |
Agency/@Email | Agency contact email address |
/HotelInfo/@Fax | Hotel fax number |
/HotelInfo/@HotelName | Hotel name. Pass the value from: HotelPriceCheckRS/PriceCheckInfo/HotelInfo/@HotelName |
/RoomDescription/@Name | Room name. Pass the value from: HotelPriceCheckRS/PriceCheckInfo/HotelRateInfo/Rooms/Room/RoomDescription/@Name |
/RoomDescription/Text | Room text description. Pass the value from: HotelPriceCheckRS/PriceCheckInfo/HotelRateInfo/Rooms/oom/RoomDescription/Text |
/RateInfo/@AmountAfterTax | Booking total amount. Pass the value from: HotelPriceCheckRS/PriceCheckInfo/HotelRateInfo/RateInfos/RateInfo/@AmountAfterTax |
/RateInfo/@CurrencyCode | Currency code. Pass the value from: HotelPriceCheckRS/PriceCheckInfo/HotelRateInfo/RateInfos/RateInfo/@CurrencyCode |
/SpecialInstructions/SpecialInstruction | Use this to inform the hotel of any extra charges that will be covered by the virtual card. If the card is used to cover room only, pass “Room Only” value. |
Error Handling
The below table illustrates error handling for EnhancedHotelBookRQ:
Location | Scenario | Error Message |
---|---|---|
Schema RQ | Customer request schema validation has failed, customer provided an invalid input. | SOAP Fault in response with schema validation details |
Booking key retrieval error | Booking key cannot be retrieved or decoded | EnhancedHotelBookRS with Business error: 1. Unable to read Enterprise Shared Cache data - no data for provided key 2. Unable to read Enterprise Shared Cache data - data content is empty for provided key 3. Unable to read rateKey - wrong data format returned by Shared Cache 4. Unable to decode rateKey 5. Unable to decode rateKey - not supported type of rate key 6. Unable to use rateKey data - no XXX or empty 7. Unable to use rateKey data - XXX, "value should be higher than 0 |
Main business error | Main error returned by the SP application. Will be followed by system specific errors generated by the application or the content providers. | EnhancedHotelBookRS with Business error: Unable to perform hotel booking step. See below messages for details |
HotelProperty DescriptionLLSRQ | GDS as legacy only. Low level error coming from the provider. | EnhancedHotelBookRS with Provider error: Unable to perform HotelPropertyDescriptionLLSRQ call. See below messages for details |
HotelProperty DescriptionLLSRQ Multiple calls | GDS as legacy only. Unable to find matching rate within any of the responses from the low-level API. | EnhancedHotelBookRS with Business error: Unable to find a matching room rate code within HotelPropertyDescriptionLLSRQ response |
HotelProperty DescriptionLLSRQ | GDS as legacy only. Shopped rate was found but its price does not match the amount decoded from the booking key | EnhancedHotelBookRS with Business error: The total booking price does not match price returned during shopping |
HotelRateDescription LLSRQ | GDS as legacy only. Low level error coming from the provider | EnhancedHotelBookRS with Provider error: Unable to perform HotelRateDescriptionLLSRQ call. See below messages for details |
OTA_HotelResLLSRQ | GDS as legacy only. Low level error coming from the provider | EnhancedHotelBookRS with Provider error: Unable to perform OTA_HotelResLLSRQ call. See below messages for details |
OTA_HotelResLLSRQ | GDS as legacy only. Low level service returned a success response but with an empty payload. | EnhancedHotelBookRS with Provider error: Hotel segment created successfully but no booking details were retrieved from the provider. Please redisplay the reservation to validate the addition of a new hotel segment |
TravelItineraryReadRQ | All scenarios. Final segment status unsuccessful (either UC or NO) | EnhancedHotelBookRS with Business error: Hotel booking segment status is unconfirmed. Please retry the transaction |
TravelItineraryReadRQ | All scenarios. Confirmation number from the hotel not present | EnhancedHotelBookRS with Business warning: Hotel booking succeeded but was not confirmed by the property. No confirmation number present |