Creating Vehicle Bookings
UniversalRecordReqRsp.xsd
Vehicle Search > Create Vehicle Booking OR
Vehicle Matrix > Create Vehicle Booking
After the traveler selects a rental vehicle option from a Vehicle Search response, they can reserve the selected vehicle option. Data required for the Vehicle Booking can be taken from the Vehicle Search response for the selected vehicle option.
Schema
See the following transactions for Vehicle Booking:
How To
Vehicles are booked using VehicleCreateReservationsReq. A vehicle segment can be booked only if it is part of a PNR that contains passenger and booking data for a complete trip, including one or more travel segments (air, car, hotel, or rail). If a reference to an existing Universal Record is indicated, the vehicle segment is added to the PNR. If no Universal Record exists for this booking, a new PNR is created.
-
Enter the minimum required data. Unless otherwise noted, all of the elements are direct children of VehicleCreateReservationReq.
Note: All required data includes a Key attribute which uniquely identifies that chunk of data across multiple transactions in a stateless (sessionless) environment.
Show required dataElement/Attribute
Description
BookingTraveler
If a new Universal Record and PNR must be created for the vehicle booking, Booking Traveler information must be included. If the vehicle booking is being added to an existing Universal Record, the UR must be retrieved and modified to add a vehicle booking.
VehicleDateLocation
Required attributes are returned in the Vehicle Search results and must be included in the booking request. They are:
-
PickupDateTime and ReturnDateTime.
Optional attributes are also returned and can be included in the booking request:
-
PickupLocation, which is the pick-up city/airport code.
-
PickupLocationType, which defaults to airport.
- PickupLocationNumber, which is the location number.
These attributes are returned in the response if they were submitted in the Vehicle Search request.
Galileo, Apollo, and Worldspan map an exact pickup location in the booking.
LoyaltyCard
Required if a loyalty membership number is used. Requires the supplier (vendor) code and member number.
Notes:
-
Multiple loyalty cards are supported in a passive book when they are different types. If multiple cards of the same type are provided, only the first loyalty card of that type is sent, and a warning message is returned.
-
If the VehicleCreateReservationReq request adds a passive segment to an existing UR with the same traveler, a different PNR, the same supplier, and a different loyalty card, the loyalty card in the passive segment is not added.
-
If the VehicleCreateReservationReq request adds a passive segment to an existing UR with a different PNR, a different traveler, the same supplier, and a different loyalty card, the loyalty card is added because a new traveler is added.
Vehicle
These required Vehicle attributes are returned in the Detailed Vehicle Search results:
-
Supplier (vendor) code.
-
Vehicle details such as air conditioning, transmission type, vehicle class, and category.
-
-
Enter optional data to further refine the request.
Show optional dataElement/Attribute
Description
RuleName
Universal API supports attaching a mandatory Custom Check rule when a request to create a reservation has a Custom Check rule name, using @RuleName. @RuleName supports up to 10 alphanumeric characters (no special characters) and the attachment of a Custom Check rule name in the booking request. If Custom Check rule is attached to a reservation, the rule is captured in the Universal Record History.
Note: The user must know the name of the rule to attach to the booking.
See @CustomCheck in the response on this page in ProviderReservationInfo.
UniversalRecordLocatorCode
The Universal Record Locator (UR) is an identifier for the entire booking associated with this trip, which can include multiple booking segments and data from external sources.
For the initial booking, no UR exists.
SSR
Optionally, @ProfileID and @ProfileSecureFlightDocKey can be included in the request for DOCO, DOCA, or DOCS SSRs (Special Service Requests). Universal API validates the TravelerID in BookingTraveler/AppliedProfile against the Universal Record and the Air Booking request that is being sent. The ProfileSecureFlightDocKey is not validated.
Both ProfileID or ProfileSecureFlightDocKey must be sent in the request for secure flight SSRs or an error is returned.
See the response for more details.
Vehicle @PayNow @PayLater @PayNow and @PayLater increase customer awareness for understanding what is due now for a pre-paid rate, as well as what might be due later based on individual rental.
Note: This content is supplier dependent.
To support car suppliers that would like to offer different rates for prepaid booking, the “PayNow and “PayLater" attributes are in each vehicle response message:
VehicleRules Response
- Supplier Rate – PayNow and PayLater
VehicleCreateReservation Response
- Supplier Rate – PayNow and PayLater
VehicleSearchAvailability Response
- Supplier Rate – PayNow and PayLater
- ApproximateRate - PayNow and PayLater
For example, in the VehicleSearchAvailability Response for a One Way Rental, the supplier returns:
- RateCategory = Prepay
- PayNow - Amount due at the time of Booking
- PayLater - Amount due at time of Pickup (One-way fee – Drop off charge)
Note: The Approximate PayNow and PayLater rates are ONLY returned in the VehicleSearchAvailability response.
Vehicle/VehicleRate
RatePeriod such as weekly or daily, and RateForPeriod, which is the amount for the corresponding period.
RateSource, which if not sent, is deemed as a Direct Sell.
RateHostIndicator InventoryToken, which is a supplier-generated identifier used for yield management, and RateHostIndicator RateToken, which identifies the specific search option selected. Both of these tokens are returned in the Vehicle Search response.
- The Worldspan providers are expanding Travelport’s car database to be able to accept the Open Travel Alliance (OTA) 2014 standard for Search/Reference ID token size.
- This enhancement modifies /RateHostIndicator @InventoryToken and @RateToken in Vehicle Rules, VehicleSearchAvailabilityRsp, and VehicleCreateReservationReq to support the expansions of the Rate Qualifier node
- This enhancement includes the RateAuthorizationCode (expanding 8 Bytes (1-28)) and SequenceNumber (bytes 21-24 moved to 29-32).
-
Vehicle.xsdupdates the Galileo (1G) and Apollo (1V) providers to accept the Open Travel Alliance (OTA) 2014 standard for Search/Reference ID token size.
- Up to 28 bytes of data are supported on the provider side in Rate Qualifier/RateAuthorizationCode and /SequenceNumber.
-
This enhancement updates the GDS to enable the ability to modify RateHostIndicator @InventoryToken and @RateToken in the Vehicle Search Availability response, Vehicle Rules request, and Vehicle Booking request to support the expansions of the Rate Qualifier node ( Vehicle/VehicleRate/RateHostIndicator).
Rate Qualifier Indicator indicates whether rates comply with CD, ID, or Drop Off. (@RateQualifierInd). The indicator values are:
- 1 is "fully qualified"
- 2 is "partly qualified"
- 3 is "other rates"
RateGuaranteed, which can be set to return only guaranteed rates. The default is to return all rates.
A Coupon or Promotional Code can be entered as a modifier using PromotionalCode.
The Approximate Rate shows the @EstimatedTotalAmount, @BaseRate, @DiscountAmount, @ExtraMileageCharge, @DropOffCharge, and other related rates.
A drop-off charge is an additional fee for returning a vehicle to a different location than pickup. The @DropOffCharge accepts only the following formats:
- 1
- 1.00
- USD1
- USD99
- USD99.00
Notes:
- If the data does not follow any of the formats listed, the Drop Off Charge is ignored and Vehicle Create Reservation Request is processed. A warning message is returned in Vehicle Create Reservation Response.
- The Drop Off Charge is saved in the Universal Record, and included when imported or retrieved.
The Mandatory Rate Match and Rate Variance allows the user determine which action to take if the rate in the vehicle booking response is different than the estimated amount in the Vehicle Rules price response.
To have this feature applied, contact your Account Manager to ensure that they are authorized and have configured LEIDs that support single sessions in Universal API.
In the Vehicle Booking response, an estimated rate (SupplierRate @EstimatedTotalAmount) is included from the Vehicle Rules response. A new optional attribute in the Vehicle Booking request (VehicleRate @MandatoryRateMatch) allows a permitted rate variance to be applied if the estimated rate is different from the actual rate returned in the Vehicle Booking response.
If @MandatoryRateMatch = True and there is a difference between the rates in the Vehicle Booking and Vehicle Rules responses:
- The booking is ignored if this difference falls outside of the permitted rate percentage from the amount in the booking response.
- The booking is allowed if this difference falls outside of the permitted rate percentage from the amount in the booking response.
If @MandatoryRateMatch = True, specify the rate variance in RateVariance:
- @Type=percentage specifies that the @Value field equals "percentage" at which the variance is allowed.
- @Value specifies the percentage amount allowable for the booking to proceed. For example, If the value of @EstimatedTotalAmount is $100, and the @Type=percentage and @Apply is specified at 10.00 percent, and the response is within $10, the booking proceeds (depending on the value specified in @Apply).
- @Apply specifies whether the percentage can be "high", "low" or "both" against the value of @EstimatedTotalAmount. For example, if @Value is specified as "10.00" and @Apply=both (higher or lower within 10 percent of $100), and the rate is returned at $111 or higher, or $89 or lower, the booking is ignored.
Notes:
- If special equipment is added in the book request, no validation for Price Variance or Rate Match occurs.
-
If @MandatoryRateMatch=false or not included, there is no price comparison between the estimated total amount and the booking amount.
- If @MandatoryRateMatch=true and no @EstimatedTotalAmount value is returned from the supplier, an error returns because there is not sufficient data to do the comparison and prevents an erroneous booking.
- If @Value=0 and Apply=both, the @EstimatedTotalAmount value must match the booking rate response, or the booking is ignored.
- Worldpsan (1P) only.
VoucherType such as full credit or group/day, which is the eVoucher for the rental. If a supplier requires a confirmed booking before a voucher can be added, an error message is sent in the response. Or, the field specifies whether the payment is a Monetary Amount or Regular Voucher.
Number sends the associated voucher number to be stored in the vehicle segment. It is required when VoucherType = "RegularVoucher" (1P only).
Note: If a voucher @ConfirmationNumber is sent in the response, it confirms that the supplier has accepted the voucher request.
Guarantee information, such as the following, can be included in the request:
-
A credit card code, number and expiration date (format AX98765432123EXP1210).
-
A guarantee to agency with IATA number in AAA.
-
A guarantee to agency with an IATA number specified in the Guarantee field.
-
Guarantee free-form text.
Notes:
- Only Guarantee Type of "Guarantee" is allowed. If "Deposit" is specified, an error is sent in the response.
-
See Credit Card Form of Payment - Hotel and Vehicle for commonly accepted credit cards for both hotels and vehicles.
BookingSource
Intended for internal use. Do not use unless directed to by your account manager.
The content can be alpha, numeric, or alpha/numeric and can be any number of characters. Worldspan requires differentiation between Pseudo City Code and IATA number; Galileo does not.
Note: No validation occurs on the data.
Booking Source OverrideFor Worldspan (1P), the Booking Source Override is usually used when the car supplier has assigned a number (which can be alpha/numeric) to the agency/e-commerce to use in place of an IATA number.
Universal API enhanced VehicleCreateReservationRequest has ability to enter the BookingSourceOverride (a string) while creating the car booking in the VehicleCreateReservationReq/BookingSource/@Type
The Vehicle Rules Request supports the IATA number when the /BookingSource@Type="IataNumber" in the BookingSource/@Code attribute, which was also modified to be variable length.
AppliedProfile
Indicates the Profile data applied to this transaction.
BookingTraveler
While the traveler's name and phone number are required, additional traveler-related data is optional:
Booking modifiers for vehicle reservations include:
-
Email address
-
Loyalty Programs
-
General Remarks
BookingTraveler may be included multiple times in a request that includes more than one traveler.
Notes:
- The first instance of BookingTraveler is deemed Primary in the BookingTravelerRef element in the response.
-
The first booking traveler’s first phone number is added in the Car Segment, in addition with the current adding of phone numbers in the PNR (Worldspan (1P) only).
VehicleCreateReservationReq/common:BookingTraveler/common:PhoneNumber/@Number - On Galileo (1G), when entering the email address, use the @ symbol instead of //. For example:
- Email format : <PhoneNumber Number="DOE-JANE//TP.COM" Type="Email" /> causes an exception error: org.hibernate.exception.ConstraintViolationException: could not update: [ com.g2switch.gdsmodel.PhoneProviderRsvnInfo]
- Email format <PhoneNumber Number="DOE-JANE@TP.COM" Type="Email" /> does not fail later in the workflow.
VehicleSpecialRequest
Special request can be used for additional information sent to the supplier (vendor).
With Universal API Release 21.3.2, an enhancement was added to support email address delivery in vehicle non-loyalty customers for Worldspan. This supports contactless rental for non-loyalty customers to mitigate Covid19 Concerns for vehicle suppliers. It captures the car renter's email address in the VehicleSpecialRequest field (which is the SI or Supplemental Info field for Worldspan) and expands the character limitation to 138 characters. Release 21.3
Review Booking
Review Bookings (Q-Minders) are a provider functionality that issues reminders to agents for any pending tasks that must be done by a specific date and time. The PNR and the reminders are put into the agency queue on the date and time specified in Review Booking.
ReservationName
@BookingTravelerRef
@NameOverride
The Name Override function allows a vehicle reservation to be booked under a traveler name that is not included the Universal Record. Send @NameOverride to book the vehicle with a traveler who is not present.
ReservationName is optional and can be sent in the request with @BookingTravelerRef or @NameOverride.
- Send @BookingTravelerRef to reserve a vehicle for a booking traveler name who listed is in the Universal Record.
- Send @NameOverride to reserve a vehicle for a traveler who is not listed in the Universal Record.
If ReservationName is not sent, the name of the first booking traveler is applied to the reservation as it currently is today.
If a Universal Record is imported and there is a name field, and the name in the name field doesn’t match a Booking Traveler in the UR, the name is added to the Name Override field.
- In the Vehicle Search and Vehicle Rules requests, the DriverInfo @Age modifier is added to determine if a surcharge is applied.
- When vehicle suppliers request to have the age during sell to ensure the proper rates are used, VehicleCreateReservationReq/ReservationName/NameOverride @Age is populated.
Notes:
- The requirement for an age-based surcharge and the surcharge amount is determined by the vehicle supplier.
- Universal API ignores the specified Age and returns a Warning message when Age specified is > 99.
- This enhancement is implemented for Worldspan (1P) only.
OverridePCC
Note: Refer to Emulation for more information.
The OverridePCC is used to specify the emulated PCC in Common.xsd. When the Override PCC is sent in a booking request:
- The OwningPCC attribute in ProviderReservationInfo is set to the emulated PCC (the OverridePCC).
- For Worldspan , the Override PCC is used to set the PCC in the first phone field of the provider PNR, therefore making the OverridePCC the Owning PCC of the PNR.
- For Galileo and Apollo, Service Bureau set up is required for emulation with Override PCC.
If OverridePCC is NOT sent in the booking request, the OwningPCC attribute in ProviderReservationInfo is set to the Target Branch.
@RetrieveProviderReservationDetails RetrieveProviderReservationDetails is a Boolean attribute.
- When set to false (default), the response displays provider details using UniversalRecord/ProviderReservationInfo/ProviderReservationDetails.
- When set to true, ProviderReservationDisplayDetailsList displays in the response in UniversalRecord/ProviderReservationInfo. This element displays some details of the PNR elements that are not otherwise returned in the Universal Record.
Universal versions prior to v29.0 will not return the ProviderReservationDisplayDetailsList element.
FlightArrivalInformation Enables the user to include the corresponding airline code and flight number for the flight arrival at the vehicle pick-up location. Book on Book Air, hotel, vehicle, and passive Book on Book is allowed to append itinerary content in the same provider PNR if the PNR's owning PCC has a host bridge branch relationship with the Override PCC or PCC of the Target Branch in the request. The emulating PCC and owning PCC must have host bridge branch relationship so that the PNR can be retrieved and can be modified in the host.
Book on Book for a Hotel Create Reservation request is allowed with host Provider Locator Code and Universal Record Locator Code.
AgentIDOverride AgentIDOverride in the request overrides any default agent sine placed in the PNR. This is a two-character alphanumeric code of the agent sine that should replace the default. The AgentOverride attribute is returned in the response, noted below in Provider Reservation Info. The agent sine cannot be updated after the PNR has been finalized.
With the agent sine override, the Universal Record is updated with the override action. If the agent sine is not present in the request, Universal API places the default agent sine in the PNR header. If the agent sine has an invalid value, Universal API continues with the booking and provides the warning "Agent ID is invalid and override is ignored."
- The booking response is returned in VehicleCreateReservationsRsp. A basic Vehicle Reservation response includes the Universal Record, as well as the Vehicle Reservation information for this booking in the VehicleReservation element.
- The Booking Traveler level:
- VehicleCreateReservationRsp/UniversalRecord/BookingTraveler/SSR @ProfileSecureFlightDocKey
- VehicleCreateReservationRsp/UniversalRecord/BookingTraveler/SSR @ProfileID
- The Universal Record level:
- VehicleCreateReservationRsp/UniversalRecord/SSR @ProfileSecureFlightDocKey
- VehicleCreateReservationRsp/UniversalRecord/SSR @ProfileID
- If ProfileID and ProfileSecureFlightDocKey are present in SSRs other than DOCO/DOCA/DOCS, Universal API returns an error: "Profile ID and ProfileSecureFlightDocKey only valid for SSR DOCA/DOCO/DOCS".
- Universal API validates the Traveler Profile ID (BookingTraveler/AppliedProfile/@TravelerID) against the Universal Record and the Air Booking request that is being sent. If there is no match, an error is returned: "Profile ID specified in SSR is not present in Booking traveler(s) in request or Universal Record"
- Both ProfileID and ProfileSecureFlightDocKey must be sent in the request or an error is returned: "Profile ID or ProfileSecureFlightDocKey must be accompanied with each other for Secure Flight SSRs".
- If the booking traveler in Universal Record matches the name in the provider reservation, the response displays BookingTravelerRef @Key, which matches a BookingTraveler in the Universal Record.
- If the booking traveler in the Universal Record does not match the name in the provider reservation, the response displays @NameOverride.
- If the combined last/first name in @NameOverride is more than 28 characters.
- If the combined last/first name of the first BookingTravelerName is more than 28 characters.
Provider ARNK SegmentARNK (Arrival Unknown) segments are added to the host PNR automatically wherever required, particularly for continuity breaks with the provider PNR. ARNK (Arrival Unknown) segments that are present in Galileo and Apollo provider PNRs are included in the response in the ProviderARNKSegment, to allow agents to view the exact provider PNR composition.
Provider Reservation Info/ProviderReservationDetails @CustomCheck
@CustomCheck is set to "true" if a PNR has a Custom Check attached in the Galileo or Apollo provider reservation that was imported via Universal API.
The Custom Check rule name is returned in the detailed display of the Provider Reservation, or if it is not found, a message is returned: Custom Check not found.
If creation of the background passive fails on the provider (for example, a RuleName is not attached to a PNR or there is non-compliance with an attached RuleName), a Universal Record is created successfully, with a provider locator of ACH or SDK, as appropriate.
If a Pseudo City Code (PCC) has a mandatory Custom Check rule that was attached during reservation creation, and the attached rule is compliant, a background passive is successfully created on the Galileo or Apollo provider, and the reservation is also successfully created in Universal API.
@AgentOverride
If the request included the optional AgentIDOverride attribute, the AgentOverride attribute returns the agent sine used to override the default agent sine.
SSRIf a Traveler name is more than 55 characters, the secure flight SSR is displayed at the Universal Record level and not at the Booking Traveler level. This means that when SSR @ProfileID and @ProfileSecureFlightDocKey are sent in the request, they are returned in the response at either:
After SSRs are added successfully with the Traveler ProfileID and ProfileSecureFlightDocKey and the UR is finalized, the UR displays the ProfileID and ProfileSecureFlightDocKey that is associated to SSR DOCS/DOCO/DOCA.
Errors and Warnings
The VehicleReservation element contains vehicle information, pick-up and drop-off dates, and booking rate data.
The amount of rate data that is returned is dependent upon the specific supplier, as not all suppliers return all data.
LocatorCodeThe LocatorCode attribute of VehicleReservation represents the confirmation code provided by the booking vendor, and is distinct from the LocatorCode of UniversalRecord, which represents all combined bookings in the overall record.
BookingTravelerRefThe BookingTravelerRef may contain one or more passengers, in the case of a multi-passenger booking. The first traveler entered, against whom the reservation is made, is contained in the Primary element.
Vehicle/VehicleRateIf a rate is guaranteed by the supplier, a VehicleRate RateGuaranteed attribute indicates the guaranteed rate. If a rate has a mileage charge associated with it, MileageAllowance and ExtraMileCharge attributes are returned in VehicleRate.
SellMessageA SellMessage may be present if the supplier (vendor) returns one. Sell Messages are tied to segment/reservation and if the segment/reservation is deleted then corresponding messages will also be deleted. This functionality is backwards-compatible.
ReservationNameThe ReservationName displays either @BookingTravelerRef or @NameOverride.
Error and Warning Responses
A warning message is sent in the response:
ReservationName Or NameOverride is ignored as provider supports only 28 characters (which include spaces) and first BookingTravelerName is considered.
First BookingTravelerName is considered as ReservationName and truncated to 28 characters (which include spaces) due to host limitation.
ACRISS Standard CodeFor Vehicle v34.0 and higher, an ACRISS Standard code may be returned.
Exceptions
A VehicleRate RateSource attribute indicates the participation level between Galileo and the supplier.
Clustered Naming
When the first 15 characters of a last name/first name combination match another last name/first name combination in the same PNR, the names are sent to the Galileo host in the booking request as a cluster of names, with an allowed cumulative total of 55 characters for first name, prefix, last name, and suffix.
For example: A PNR with these two passengers:
- Salomonowicz/Barbara
- Salomonowicz/Bartholomew
Is clustered because the first 15 characters are the same: Salomonowicz/Ba
Worldspan does not support Review Bookings.
Previously, Universal API Vehicle Create Reservation Service did not include the Tour Code information for Worldspan (1P) providers.
- VehicleCreateReservationReq/Rsp had @TourCode present in VehicleRate element, but it was not included in the Universal API response.
- VehicleCreateReservationReq/Rsp includes @TourCode.
Vehicle.xsd returns “Associated Print Text” information in /VehicleRate/PrintText element (VehicleCreateReservationRsp/UniversalRecord/VehicleReservation/Vehicle/VehicleRate/PrintText). For example, <vehicle:PrintText>A MINIMUM OF 4 DAYS WILL BE CHARGED </vehicle:PrintText> is the type of information that may be returned in this element.