Each request to GP Travel HUB has to identify particular booking to be processed. For that purpose special unique identifiers are used.
You should store the necessary identifiers received from a response in your application, to be able then pass it to request on the next step.
There are identifiers that are used on different request/response chains.
14.1.1. HOTELRESERVATIONIDS
The HotelReservationIDs is used as unique identifier of a booking.
The next values of ResID_Source attribute defines three possible types of HotelReservationID element:
"client". It is mandatory identifier required in all requests/responses. It can be any character string, but it must be unique in your system. This element allows GP Travel HUB to identify your booking within it.
"agent". This element is optional in request, but it is mandatory in response. If you did not pass "agent" identifier explicitly in request, GP Travel HUB will create it automatically (normally we just copy the "client" identifier) and return it in response. GP Travel HUB passes this identifier to supplier as client booking reference for booking identification. You can also use it as booking reference number in your system. Unlike "client" identifier, "agent" identifier may be the same for several booked services. This may be used for spanning several ordered services into one order.
"supplier". Each actual reservation returns "supplier" identifier - the unique identifier of the booking in supplier's system. Normally this value should be further used in hotel voucher. ResID_SourceContext attribute identifies the supplier. It is not necessary to pass the "supplier" identifier in all following requests; only "client" is required.
You have to store all values of HotelReservationIDs in your system, and use it unchanged through whole booking's life cycle.
Diagram 14.1.1.1. HotelReservationIDs flow
HotelReservationIDs example:
<HotelReservationIDs> <HotelReservationID ResID_Source="agent" ResID_Value="66589"/> <HotelReservationID ResID_Source="client" ResID_Value="264888"/> <HotelReservationID ResID_Source="supplier" ResID_Value="LL7F090498" ResID_SourceContext="kuoni"/> </HotelReservationIDs>
14.1.2. BOOKINGCODE
The BookingCode attribute in RoomRate element is used as unique identifier of an offer starting Hotel Availability response and till the time the booking is confirmed. The BookingCode is valid for limited time (normally 15 minutes); if the reservation was not confirmed (or at least initiated) during this time limit, then new search should be performed again.
As the unique offer identifier, BookingCode should also be used in Price Breakdown and Hotel Charges requests.
BookingCode may change between Availability search and Reservation Initiate response (it depends on supplier specific). In Reservation Confirm request, the BookingCode must be taken from the Reservation Initiate response.
Diagram 14.1.2.1. BookingCode usage
Since a room booked, the BookingCode does not play role for the reservation any more. The HotelReservationIDs should be used for the booking modification or cancellation.
14.1.3. TRANSACTIONIDENTIFIER
Hotel Reservation, Modification and Cancellation should always be done in two steps: 1) Initiation (request/response) and 2)Confirmation or Ignore (request/response). Both these steps have to be done within one transaction.
The TransactionIdentifier allows to recognize which Confirmation or Ignore request relates to a Initiation response.
Diagram 14.1.3.1. TransactionIdentifier usage