12.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.
12.1.1. CARRESERVATIONIDS
The CarReservationIDs is used as unique identifier of a booking.
The next values of ResID_Source attribute defines three possible types of CarReservationID 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. It is not necessary to pass the "supplier" identifier in all following requests; only "client" is required.
You have to store all values of CarReservationIDs in your system, and use it unchanged through whole booking's life cycle.
Diagram 12.1.1.1. CarReservationIDs flow
CarReservationIDs example:
<CarReservationIDs>
<CarReservationID ResID_Source="agent" ResID_Value="adfbgy2"/>
<CarReservationID ResID_Source="client" ResID_Value="opinjdn354sfda"/>
<CarReservationID ResID_Source="supplier" ResID_Value="13589936US3"/>
</CarReservationIDs>
12.1.2. BOOKINGCODE
The BookingCode attribute in VehAvailCore and VehRentalCore elements is used as unique identifier of an offer starting Car Availability Search 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 Car Rental Conditions request.
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 12.1.2.1. BookingCode usage
Since a veichle booked, the BookingCode does not play role for the reservation anymore. The CarReservationIDs should be used for the booking cancellation.
12.1.3. TRANSACTIONIDENTIFIER
Car 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 12.1.3.1. TransactionIdentifier usage