Air Pricing for Optional Services

Low Cost Carriers (LCC) on ACH require two air pricing requests for Optional Services that are not Paid Seating Optional Services. The first price request is sent to retrieve the optional services available for the selected flights. A second price request is then sent to price the available services returned in the first price request. Tokens from the response from the first price request are used in the second re-price request.

For Paid Seating Optional Services, a Seat Map request must be sent after the first price request and before the second price request.

Important! Carriers that support ATPCO-filed Optional Services only require one air pricing request to price the Optional Services. A second air pricing request for ATPCO-filed carriers is not supported.

Request

Use the AirPriceReq to send:

Response

If two pricing request are required, tokens from the response from the first price request are used in the second re-price request.

Air Pricing for Available Optional Services

Request

The first price request is sent to retrieve the optional services available for the selected flights.

The request uses a standard AirPriceReq service. No indicator is required to send an Air Pricing request with Optional Services. The inclusion of available Optional Services in the responses depends solely on the routing of the request to a supplier that uses an Optional Service model for Air Pricing.

Cabin class or class of service must be included to return Optional Services.

If cabin class or class of service is not sent in the request, a warning is returned:  No Merchandising optional services returned for Flight(s) [Carrier][Flight Number].

To ensure that each non-seat Optional Service is associated with a single booking traveler Passenger Type Code (PTC), AirPriceReq must include SearchPassenger @Code and SearchPassenger @Key or @BookingTravelerRef to correctly map the Optional Services to the booking traveler(s) in AirPriceRsp. If both @Key and @BookingTravelerRef are included in the pricing request, the BookingTravelerRef value is used to create the OptionalService/ServiceData with BookingTravelerRef.

Although both the Key and BookingTravelerRef attributes in AirPricingReq are optional, if neither attribute is sent, an error is returned: SearchPassenger Key or BookingTravelerRef is required.

Additionally, SearchPassenger @Age is validated by Universal API and sent in the request to ensure age-related Optional Services are returned, if available.

Notes:

Response

The response returns AirPriceRsp. Any optional services available for the associated flight segment are returned in the AirPriceResult/AirPricingSolution/OptionalServices child, which serves as a wrapper for available optional services for the selected flight segment.

The OptionalServices element may contain one or more OptionalService elements. If the OptionalServices element is not returned, no services are associated with the associated segment in the flight itinerary.

The TaxInfo element in AirPricingSolution/OptionalServices/OptionalService is used to specify a tax breakdown with a category code, if a tax breakdown is provided by the carrier. A TaxInfo element is returned for each tax returned by the carrier. If more than one Tax is returned, the total of all taxes is returned in OptionalService @Taxes. TaxElement is available.

Certain rules and restrictions are associated with Optional Services filed through ATPCO. OptionalServices/OptionalService returns additional details that can be sent in Air Booking and Air Merchandising Fulfillment requests; these details are also saved to the Universal Record and Universal Record History.

Additional ATPCO-supported secondary types may also be available. See ATPCO Secondary Optional Services.

Note: These details are not provided for ACH responses, as ACH carriers do not file their Optional Services through ATPCO.

OptionalServices/OptionalService:

@ViewableOnly: When "true", an optional services is viewable only and cannot be sold.

Note: An enhancement released with Universal API 21.4.2 stops returning services that cannot be sold. For example, an optional service that is ViewableOnly="true" is suppressed from the AirPrice and AMOA response.

This is a limited release feature. Contact your Travelport representative for further details. Release 21.4

/ServiceData :

Air Pricing for Baggage Optional Services

As of the Universal API 20.1.3 release, all Air.xsd and Universal.xsd schema returns optional service baggage information in a structured format so that customers can easily parse relevant information for travelers to make educated decisions on cost of checked bags. Release 20.1 In an AirPrice response, when baggage information returns, this functionality:

Note: The OptionalService attributes WeightInExcess and BaggageUnitPrice are not currently returned in the response.

C Type Baggage

Prior to Universal API release 21.2.2, customers were limited to viewing prices and purchasing F type filed bags only. Release 21.2

Release 21.2.2 and later allows customers to receive baggage data and purchase bags for itineraries where C type data has been filed by the carrier.

C type baggage data is shopped and sold via the following:

While workflows should not change, it is important to ensure the @IsRepriceRequired element is not omitted from @OptionalServices in the AirCreateReservation and AirMerchandisingFulfillment requests because that information is used to ensure accurate pricing returns for the selected option.

xPath:

OptionalServices/OptionalService/@IsRepriceRequired

Notes:

 

Air Pricing for Baggage Optional Services on ACH

To price and book an extra paid bag on an ACH carrier, including the “free” bag that is already included in the fare, you need to request two bags in the AirPrice and AirCreateReservation requests as separate optional services. Include one optional services element for the included “free” bag (with a zero for the price), and a second optional services element for the paid bag, including the price for that bag. Universal API processes this request and programmatically understands that one bag is free and one is paid. If you request only one, or zero, bags, you get pricing or booking failures. Review the following sample with the bag fees highlighted:

Air Pricing to Price Requested Optional Services (LCCs on ACH)

Important! The second Air Pricing Request is ONLY required for Low Cost Carriers (LCC) on ACH. A second air pricing request for ATPCO-filed carriers is not supported.

A second price request, which must contain one booking traveler and one or more air segments in each optional service, is sent to price the available services returned in the first price request.

When an AirPriceReq that includes OptionalService@Quantity greater than "1" is sent to the ACH provider for a Low Cost Carrier (LCC), the Quantity returned is the total number of Optional Services requested and may reference multiple air segments and always one booking traveler.

The TotalPrice of the OptionalService is returned in TotalPrice in AirPriceRsp/AirPriceResult/AirPricingSolution/OptionalServices/OptionalService.

For Paid Seating Optional Services, a Seat Map request must be sent after the first price request and before the second price request. The host token from the Seat Map response and the seat number being requested must be sent in the second air price request. The Paid Seating Optional Service taken from SeatMapRsp (Air v35 and later) must be sent in the second price request with ServiceStatus="Offered".
Important! You must use the correct host tokens with Seat acquisition. Host tokens are passed on from transaction to transaction and must be used consistently and correctly.

In the second price request, Universal API returns:

The "priced” optional services can be copied and sent in the Air Booking request. If OptionalServicesTotal is sent in the Booking request it is ignored, and no error is returned.

Errors and Warnings

If the second AirPriceReq contains any invalid Optional Services, errors are returned.

TSPT-12700 Support C type baggage data for Air Price, Air Booking, and Air Merchandising Fulfillment (AMF).