Skip to main content

Understanding the Exchange Shopping Web Service (contd...1)

Request Brand ID

Exchange Shopping allows users to target specific resulting fares using a Brand ID Code. The request can include a unique Brand ID or multiple Brand IDs that can be applied to the entire itinerary or per leg.

Unique Brand ID for entire itinerary

A unique Brand ID can be requested for the entire itinerary by combining:

/ExchangeShoppingRQ/TravelPreferences/PriceRequestInformation/TPA_Extensions/BrandedFareIndicators/@singleBrandedFare=”true”

with

/ExchangeShoppingRQ/TravelPreferences/PriceRequestInformation/TPA_Extensions/BrandedFareIndicators/BrandFilters/Brand/@code paired with @preferLevel=”Preferred”

This will result in fare options in the requested brand

Note: the cheapest option may not be assigned to a brand. In order to get only branded options in the response, the following attribute should be added to the request:

/ExchangeShoppingRQ/TravelPreferences/PriceRequestInformation/TPA_Extensions/BrandedFareIndicators/BrandFilters/NonBrandedFares/@preferLevel=”Unacceptable”

Multiple Brand IDs for entire itinerary

Multiple Brand IDs can be requested for the entire itinerary by combining:

/ExchangeShoppingRQ/TravelPreferences/PriceRequestInformation/TPA_Extensions/BrandedFareIndicators/@singleBrandedFare=”true”

With multiple instances of:

/ExchangeShoppingRQ/TravelPreferences/PriceRequestInformation/TPA_Extensions/BrandedFareIndicators/BrandFilters/Brand[n]/@code paired with @preferLevel=”Preferred”

This will result in options that include fares in any of the requested brands

Note: the cheapest option may not be assigned to a brand. In order to get only branded options in the response, the following attribute should be added to the request:

/ExchangeShoppingRQ/TravelPreferences/PriceRequestInformation/TPA_Extensions/BrandedFareIndicators/BrandFilters/NonBrandedFares/@preferLevel=”Unacceptable”

Specify a unique Brand ID per leg

A Unique Brand ID can be requested per leg by combining:

/ExchangeShoppingRQ/TravelPreferences/PriceRequestInformation/TPA_Extensions/BrandedFareIndicators/@singleBrandedFare=”true”

with

/ExchangeShoppingRQ/OriginDestinationInformation[n]/BrandFilters/Brand/@code paired with @preferLevel=”Preferred”

This will result in options using fares in the requested brand for each defined leg

Note: the cheapest option may not be assigned to a brand. In order to get only branded options in the response, the following attribute should be added to the request:

/ExchangeShoppingRQ/OriginDestinationInformation[n]/BrandFilters/NonBrandedFares/@preferLevel=”Unacceptable”

Specify multiple Brand IDs per leg

Multiple Brand IDs can be requested per leg by combining:

/ExchangeShoppingRQ/TravelPreferences/PriceRequestInformation/TPA_Extensions/BrandedFareIndicators/@singleBrandedFare=”true”

with multiple instances of:

/ExchangeShoppingRQ/OriginDestinationInformation[n]/BrandFilters/Brand[n]/@code paired with @preferLevel=”Preferred”

This will result in options using any fare in the requested brands for each defined leg.

Note: the cheapest option may not be assigned to a brand. In order to get only branded options in the response, the following attribute should be added to the request:

/ExchangeShoppingRQ/OriginDestinationInformation[n]/BrandFilters/NonBrandedFares/@preferLevel=”Unacceptable”

Please note that is not advisable to combine Brand IDs per leg with Brand IDs for entire itinerary within one Exchange Shopping request

Keep existing Brand ID for non-shopped legs

To keep the existing brand for any non-shopped legs in the itinerary, please specify:

/ExchangeShoppingRQ/OriginDestinationInformation/RelatedSegment/@brand

when passing related segment information.

Request Brand Ancillaries

Use the below attribute to identify the optional services that are applicable for each brand program. This is done with the use of the ATPCO Branded Fares Feature Table 166

/ExchangeShoppingRQ/TravelPreferences/PriceRequestInformation/TPA_Extensions/BrandedFareIndicators/@returnBrandAncillaries=”true” (must be combined with /@singleBrandedFare=”true”)

The response payload will provide the list of all applicable brand features and an ID to match them with specific passenger fare component.

Element or Attribute Description Example ExchangeShopping Path
BrandFeatures Element used to show the list of all brand feature items N/A /ExchangeShoppingRS/BrandFeatures
BrandFeature Element used to return ancillary fee details Does not repeat N/A ExchangeShoppingRS/Solution/TPA_Extensions/Passenger/AncillaryFeeGroups
@id is a reference id to .../Solution/Fare/ReservationSegmentDetails/PassengerBookingDetails/BrandFeatureRef/@featureId 1 /ExchangeShoppingRS/BrandFeatures/BrandFeature/@id
@application Fee application type. The possible values are: F- free, C- Charges, D- Displayed but not offered , N- Not applicable C /ExchangeShoppingRS/BrandFeatures/BrandFeature/@application
@serviceType Possible values are: Z- Branded Fares, F- flight related, T- ticket related ancillary, R- rule buster, M - merchandise, C - baggage C /ExchangeShoppingRS/BrandFeatures/BrandFeature/@serviceType
@serviceGroup Ancillaries group code BF /ExchangeShoppingRS/BrandFeatures/BrandFeature/@serviceGroup
@subCode A three-character alphanumeric code that is filed in the S5 record. This can be an industry sub-code or a carrier defined sub-code 050 /ExchangeShoppingRS/BrandFeatures/BrandFeature/@subCode
@vendor Data provider. Possible values are ATP - ATPCO, MM - Merchandising Manager. ATP /ExchangeShoppingRS/BrandFeatures/BrandFeature/@vendor
@commercialName Commercial name of the brand feature SEAT /ExchangeShoppingRS/BrandFeatures/BrandFeature/@commercialName
BrandFeatureRef@featureId Reference to the final brand feature items list. References to applicable .../BrandFeatures/BrandFeature/@id 1 /ExchangeShoppingRS/Solution/Fare/ReservationSegmentDetails/PassengerBookingDetails/BrandFeatureRef/@featureId

Keep original booking code and keep original brand

Keep original booking code for non-shopped legs

Starting from version 2.4.0, the API provides capability of forcing the system to retain the original booking code for non-shopped legs. Previously, even if you specified the details of the unchanged segments at:

ExchangeShoppingRQ/OriginDestinationInformation/RelatedSegment

system might alter your booking codes while searching for the lowest exchange solution.

The new request attribute:

ExchangeShoppingRQ/OriginDestinationInformation/RelatedSegment/@keepBookingClass=”true”

allows you to indicate that you wish to prevent the system from changing the booking code of the non-shopped air segments.

Please note that @keepBookingClass=”true” must be set across all the related segments within a non-shopped leg. (as indicated by /ExchangeShoppingRQ/OriginDestinationInformation/@shopIndicator=”false”)

Keep original brand for non-shopped legs

Starting from version 2.4.0, the API provides capability of forcing the system to retain the originally ticketed brand for non-shopped legs. Previously, system might alter your originally ticketed brand while searching for the lowest exchange solution. The new request attribute:

ExchangeShoppingRQ/TravelPreferences/PriceRequestInformation/TPA_Extensions/BrandedFareIndicators/@keepOriginalBrand=”true”

allows you to indicate that you wish to prevent the system from changing the originally ticketed brand for the non-shopped air segments. Please note that the new attribute must be combined with:

/ExchangeShoppingRQ/TravelPreferences/PriceRequestInformation/TPA_Extensions/BrandedFareIndicators/@singleBrandedFare=”true”

Additional provisions:

  • If a brand is not specified for the shopped leg, system will return the lowest applicable fare with corresponding brand.
  • If non-shopped leg is different from fare market on the original ticket, the logic will be ignored.
  • It is not necessary to send /ExchangeShoppingRQ/OriginDestinationInformation/RelatedSegment/@brand as the system will automatically validate the brands for the non-shopped segments.
  • When you send @keepOriginalBrand=”true” as well as /ExchangeShoppingRQ/OriginDestinationInformation/RelatedSegment/@brand, the related segment brand information takes precedence.
  • System returns an error message “UNABLE TO FIND ORIGINALLY TICKETED BRAND” if it cannot find a brand for fares that exist on the original ticket. If system finds at least one brand associated to any fare on original ticket, it will proceed and validate if @keepOriginalBrand=”true” exists.
  • If the system cannot properly match new fare markets with the existing ones, the error message ‘NO COMBINABLE FARES FOR CLASS USED’ will be returned.
  • If the system cannot find the original brand for the flown fare components, the error message ‘NO COMBINABLE FARES FOR CLASS USED’ will be returned.
  • When the original fare component is partially flown, system will ignore @keepOriginalBrand=”true” if the solution contains the same fare breaks in terms of fare markets. When the original fare markets and fare breaks are not maintained (broken into separate fares), , the error message ‘NO COMBINABLE FARES FOR CLASS USED’ will be returned.