13.1. UNIQUE IDENTIFIERS IN GP TRAVEL HUB WORKFLOW
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.
13.1.1. EXCURSIONRESERVATIONIDS
The ExcursionReservationIDs is used as unique identifier of a booking.
The next values of ResID_Source attribute defines three possible types of ExcursionReservationID 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. ResID_SourceContext attribute identifies the supplier.
You have to store all values of ExcursionReservationIDs in your system, and use it unchanged through whole booking's life cycle.
Diagram 13.1.1.1. ExcursionReservationIDs flow
ExcursionReservationIDs example:
<ExcursionReservationIDs>
<ExcursionReservationID ResID_Source="agent" ResID_Value="hjo8dfg"/>
<ExcursionReservationID ResID_Source="client" ResID_Value="34rf4g3frre45"/>
<ExcursionReservationID ResID_Source="supplier" ResID_SourceContext="supplierCode" ResID_Value="164-4732160"/>
</ExcursionReservationIDs>
13.1.2. BOOKINGCODE
The BookingCode attribute in ExcursionRate element is used as unique identifier of an offer starting Excursion 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 Excursion Charges and Excursion Descriptive Info requests.
BookingCode may change between Availability search and Reservation Initiate response (it depends on supplier specific). In Reservation Confirmation request, the BookingCode must be taken from the Reservation Initiate response.
Diagram 13.1.2.1. BookingCode usage
Since an excursion booked, the BookingCode does not play role for the reservation anymore. The ExcursionReservationIDs should be used for the booking cancellation.
13.1.3. TRANSACTIONIDENTIFIER
Excursion Reservation 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 the Initiation response.
Diagram 13.1.3.1. TransactionIdentifier usage