Rich Content and Branding in Air Booking
Air Bookings can include Branded and Upsell fares, when available.
Schema
See the Air Booking transactions:
Request
- Send an Air Booking request (AirCreateReservationReq).
- Include AirPricingSolution/AirPricingInfo/FareInfo/Brand @BrandID, at a minimum. The Brand ID for the selected itinerary can be taken from the:
- Air Pricing response (AirPriceRsp)
- Low Fare Shopping response (LowFareSearchRsp)
- Low Fare Shopping Asynchronous response (LowFareSerachAsynchRsp).
- Include AirPricingSolution/OptionalServices element for optional services associated to the brand that have a fee, or for optional services that are not associated to the brand.
- Enter AirPricingSolution/HostToken and AirPricingSolution/AirPricingInfo/BookingInfo @HostTokenRef.
- Host Token: Retains the exact fare during the book transaction that was returned in the AirPrice response.
- Brand Tier: Reprices the fare during the book transaction to get the best fare within the desired brand.
- When both brand tier and a fare host token are sent in a pricing request, the brand tier is used and the fare host token is ignored. A warning is returned: The fare HostToken has been ignored. The BrandTier has been applied.
- In a price response, a brand tier and fare host token may be returned. If you copy and paste the entire pricing solution into the Air Booking or Universal Record Modify transaction without removing either the brand tier or the fare host token, then the fare host token is ignored.
- To use the host token instead of the brand tier, remove the brand tier from the Air Booking or Universal Record Modify request in Universal.xsd v43.0 and later. Release 18.1
- The Host Token should be used in the Air Price and Air Booking requests for both branded and non-branded fares.
- AirPricingSolution/AirPricingInfo/BookingInfo @HostTokenRef
- AirPricingSolution/HostToken
Or, include the complete brand details from AirPriceRsp.
In Release 16.2.1 a Host Token was implemented to aid with the pricing and booking of branded fares. Some fare components identifying certain brands were complex for the current pricing and booking transactions. The new implementation contains all the required fare components to properly retain a specific fare (and associated brand) when performing a pricing and/or booking transaction. The Host Token solution applies to Galileo and Worldspan. Apollo users should see the Brand Tier solution.
In 18.1, the Brand Tier modifier was implemented to also aid with the pricing and booking of these complex branded fares. The Host Token solution is unique to Universal API while the Brand Tier modifier is used by all points of sale at Travelport (Smartpoint, Galileo Desktop, WorldspanGO). The Brand Tier modifier is the preferred way to price and book branded fares. The Fare Host Token may still be used but might be retired in the future. Release 18.1
Differences between the two solutions:
Important:
Notes:
The HostToken can be included in the AirPriceReq to price a specific brand or fare. Regardless of whether they are included in the Air Price request, both the HostToken and HostTokenRef are returned in the Air Price response and should be used in the Air Create Reservation request to successfully book the desired brand or fare, or in the Universal Record Modify AirAdd to successfully add the desired brand or fare to the UR. If they are not sent in the Air Create Reservation request or the Universal Record Modify Air Add request, the lowest brand or fare is typically booked by default.
Note: The HostToken and HostTokenRef are supported for 1G, 1V, and 1P and are different from ACH Host Tokens.
Please see the Universal API Demo site for sample XML of the implementation of these Host Tokens.
Request Processing
Air BookingIn AirCreateReservationReq/AirPricingSolution/AirPricingInfo/FareInfo/Brand/OptionalServices/OptionalService:
- Optional Services that are included at no charge as part of the brand are saved in the Universal Record.
- Optional Services that are not offered, or are only available for a fee, are not saved in the Universal Record.
Additionally, a warning is returned: Brand optional services were filtered out as they are not offered in the brand or are only available at a charge.
The Brand ID and brand details that are sent in AirCreateReservationReq are saved in the Universal Record when the booking is created, if there are no changes to the Brand ID, price, Fare Basis Code, Booking Code, or Cabin Class. If any changes are made to these elements and attributes, the following occurs:
- If only the price changes:
- The Universal Record is synchronized with AirSolutionChangedInfo, as it was before this release.
- The Brand ID and Brand Details are not saved in the Universal Record.
- A warning that Brand ID was not saved is returned.
- If price did not change but the fare basis code,booking code, or cabin class changed:
- The Universal Record is created, but the Brand ID and Brand Details are not saved in the Universal Record.
- A warning that Brand ID was not saved is returned.
- If there was a Brand ID change, but price, Fare Basis Code, Booking Code, and Cabin Class remain the same:
- Universal API retrieves the Brand Details for the updated Brand ID.
- The updated Brand ID and Brand Details are saved to the Universal Record.
- A warning that the Brand ID has changed is returned.
- If Brand ID and price change, but Fare Basis Code, Booking Code, and Cabin Class remain the same:
- Universal API synchronizes the Universal Record with the AirSolutionChangedInfo as it was previously, and retrieves the Brand Details for the new Brand ID.
- The new Brand ID and brand details are saved to the Universal Record.
- A warning that the Brand ID has changed is returned.
Universal Record Modify or RetrieveBrand information can be added to a UR in three ways. The first two options add AirPricingInfo along with Brand, while the third (available only in Universal v34 and greater) adds only brand details to an existing AirPricingInfo/FareInfo in a UR:
- Book with AirCreateReservationReq/AirPricingSolution/AirPricingInfo/FareInfo/Brand, as described above. This creates a UR with the brand information.
- Book without AirPricingInfo, then use UniversalRecordModifyReq/UniversalModifyCmd/AirAdd/AirPricingInfo/FareInfo/Brand to add the air pricing information along with brand details to the existing UR. This adds the brand information to AirPricing/FareInfo/Brand just as AirCreateReservationReq creates it.
- Book with AirPricingInfo but not Brand, then use UniversalRecordModifyReq/UniversalModifyCmd/AirAdd/BrandInfo, sending in @Key, @BrandID, @AirpricingInfoRef, and @FareInfoRef.
If the AirPricingInfo is deleted from the Universal Record using UniversalRecordModifyReq/AirDelete, the Brand ID and Brand Details are also deleted and the Universal Record History is updated. In Universal v34 and higher, brand information alone can be deleted using UniversalRecordModifyReq/UniversalModifyCmd/AirDelete.
If the Universal Record is retrieved, the brand data is returned in UniversalRecordRetrieveRsp.
Errors and Warnings
In the Air Booking response:
- If BrandID and UpsellBrandID are both sent in the Brand element, a warning is returned: UpsellBrandID has been ignored.
- If only the UpsellBrandID is sent in the Brand element, an error is returned: BrandID is required.
-
The brand tier is a 1 to 4 numeric field. If the brand tier sent in the transaction request is not 1 to 4 numeric, a warning is returned: BrandTier should be 1-9999. BrandTier has been ignored.
-
The brand tier must be the same for all passenger types in a stored fare. If the brand tiers are different, an error is returned: The Brand Tier must be the same for all passengers in a stored fare. This includes the scenario where a brand tier is sent for one passenger type, but not for the other passenger type.
-
If the brand tier is sent in the book or Universal Record Modify request AirSegmentPricingModifiers element, the brand tier is ignored and a warning is returned: BrandTier should be sent in FareInfo/Brand. AirSegmentPricingModifiers/BrandTier has been ignored.