OfferPrice Functional Capabilities
OfferPrice Request
The IATA NDC 2017.2 OfferPriceRQ provides the ability to quote (price) for flights for the selected itinerary. The user needs to provide ResponseID
, OfferID
, OfferItemID
, and PassengerRefs
in the OfferPriceRQ to get a price quote for the selected flights in the OfferPriceRS.
attention
The OfferPriceRQ is a mandatory step before creating an Order using OrderCreateRQ.
NDC 2017.2 OfferPriceRQ supports the below modifiers:
OfferPriceRQ Input and Details
Corporate Contract Number (CCN)It is not required to pass this in the request. This is processed internally and applied during itinerary pricing.
Normal Tariff Passenger (NTP)It is not required to pass this in the request. This is processed internally and applied during itinerary pricing.
FQTV Supported in NDC2017.2 OfferPriceRQ. /OfferPriceRQ/DataLists/PassengerList/Passenger/LoyaltyProgramAccount
Language CodeProvide the language code in /OfferPriceRQ/Parameters/Languages/LanguageCode. If the language code is not provided in the request, then English is the default language.
Country CodeProvide the country code in /OfferPriceRQ/PointOfSale/Location/CountryCode.
Currency CodeProvide the currency code in /OfferPriceRQ/Parameters/CurrCodes/FiledInCurrency/CurrCode.
Number Of PassengersA maximum of 9 passengers is supported and the request needs at least 1 ADT passenger. The number of infants cannot be greater than adult passengers.
Passenger Type Code (PTC)ADT, CHD, YTH, and INF are supported.
Offer and OfferItemThe requested Offer
and OfferItem
should be from earlier AirShopping and/or SeatAvailability and/or ServiceList response.
Some important elements or attributes in the NDC 2017.2 OfferPriceRQ
- /OfferPriceRQ/Query/Offer/@ResponseID (retrieved from the previous response; for example: AirShoppingRS ShoppingResponseID/ResponseID)
- /OfferPriceRQ/Query/Offer/OfferID (retrieved from the previous response; for example: AirShoppingRS)
- /OfferPriceRQ/Query/Offer/OfferID/@Owner
- /OfferPriceRQ/Query/Offer/OfferItem/@OfferItemID (retrieved from the previous response; for example: AirShoppingRS)
- /OfferPriceRQ/Query/Offer/OfferItem/PassengerRefs
- /OfferPriceRQ/DataLists/PassengerList/Passenger
OfferPriceRQ has various use cases with/without Seat and Ancillaries (e.g., meal, lounge, etc.):
1. OfferPriceRQ without Seat and Ancillaries
-
The
OfferID
,OfferItemID
, andPassengerRefs
should be used in the OfferPriceRQ (PassengerRefs
is mandatory as per the IATA schema) -
The user should take
OfferID
andOfferItemID
from the earlier AirShoppingRS
<Query>
<!--OUTBOUND FLIGHT OFFER-->
<Offer OfferID="R1QG1VYDKP-OfferID-1" Owner="YY" ResponseID="YY-2985803686064207509">
<OfferItem OfferItemID="HZPY0W2D92-OfferItemID-1">
<PassengerRefs>Pax01 Pax02</PassengerRefs>
</OfferItem>
<OfferItem OfferItemID="P9L5CC2T6Z-OfferItemID-2">
<PassengerRefs>Pax03</PassengerRefs>
</OfferItem>
</Offer>
From SeatAavailabilityRS
-
Each
ALaCarteOfferItem
(for each specific seat like 12C, 15A) is created in the response for all passengers /SeatAvailabilityRS/ALaCarteOffer/ALaCarteOfferItem -
The
ALaCarteOfferItem
is created for each flight segment (not for each bound) and for each type of seat For example: ASPM, ASPW, ASPA (each of these types should create a differentALaCarteOfferItem
to display the price details)
From ServiceListRS
-
Each
ALaCarteOfferItem
is created in the response for all passengers /ServiceListRS/ALaCarteOffer/ALaCarteOfferItem -
The
ALaCarteOfferItem
is created for each Flight segment (not for each bound) and each type of specific service Example: ASPM, ASPW, ASPA, MEAL, MLLW (each of these types should create a differentALaCarteOfferItem
to display the price details)
2. OfferPriceRQ with Seat and Ancillaries
-
Flights Only
- Select
OfferID
,OfferItemID
from AirShoppingRS and provide in the /OfferPriceRQ/Query/Offer [1] - Seat and Ancillaries from ServiceListRS - Select /ALaCarteOffer/OfferID and /ALaCarteOfferItem/OfferItemID from the ServiceListRS and provide in the /OfferPriceRQ/Query/Offer [2]
- Seat from SeatAvailabilityRS - Select /ALaCarteOffer/OfferID and /ALaCarteOfferItem/OfferItemID from the SeatAvailabilityRS and provide in the /OfferPriceRQ/Query/Offer [3]
attention
Multiple offers should be included to accommodate multiple offers from the earlier responses (AirShoppingRS, SeatAvailabilityRS, and ServiceListRS) as required.
<Query>
<!--OUTBOUND FLIGHT OFFER-->
<Offer OfferID="R1QG1VYDKP-OfferID-1" Owner="YY" ResponseID="YY-2985803686064207509">
<OfferItem OfferItemID="HZPY0W2D92-OfferItemID-1">
<PassengerRefs>Pax01 Pax02</PassengerRefs>
<!--Two ADT passengers-->
</OfferItem>
<OfferItem OfferItemID="P9L5CC2T6Z-OfferItemID-2">
<PassengerRefs>Pax03</PassengerRefs>
<!--One CHD passenger-->
</OfferItem>
</Offer>
<!--OUTBOUND SEAT OFFER. Each passenger is assigned a Seat.-->
<Offer OfferID="SARS-R1QG1VYDKP-OfferID-1" Owner="YY" ResponseID="SARS-YY-2985803686064207509">
<OfferItem OfferItemID="SARS-HZPY0W2D92-OfferItemID-1">
<PassengerRefs>Pax01</PassengerRefs>
<!--ADT passenger-->
</OfferItem>
<OfferItem OfferItemID="SARS-P9L5CC2T6Z-OfferItemID-2">
<PassengerRefs>Pax02</PassengerRefs>
<!--ADT passenger-->
</OfferItem>
<OfferItem OfferItemID="SARS-P9L5CC2T6Z-OfferItemID-3">
<PassengerRefs>Pax03</PassengerRefs>
<!--CHD passenger-->
</OfferItem>
</Offer>
<!--INBOUND FLIGHT OFFER-->
<Offer OfferID="J7IR8KXGT4-OfferID-23" Owner="YY" ResponseID="YY-2985803686064207509">
<OfferItem OfferItemID="RISJQRR3QP-OfferItemID-45">
<PassengerRefs>Pax01 Pax02</PassengerRefs>
</OfferItem>
<OfferItem OfferItemID="H3Q6S4Y6PE-OfferItemID-46">
<PassengerRefs>Pax03</PassengerRefs>
</OfferItem>
</Offer>
<!--OUTBOUND SERVICELIST-->
<!--SERVICELIST Response return per segment and AlaCarteOfferItem with all passengers refrence.For connected segments, there are multiple ALaCarteOfferItems-->
<Offer OfferID="SERVICELIST-R1QG1VYDKP-OfferID-1" Owner="YY" ResponseID="SERVICELIST YY-2985803686064207509">
<!--FOR MEAL-->
<OfferItem OfferItemID="SLRS-MEAL-HZPY0W2D92-OfferItemID-1">
<PassengerRefs>Pax01 Pax02 Pax03</PassengerRefs>
</OfferItem>
<!--FOR LOUNGE-->
<OfferItem OfferItemID="SLRS-LOUNGE-HZPY0W2D92-OfferItemID-2">
<PassengerRefs>Pax01 Pax02 Pax03</PassengerRefs>
</OfferItem>
</Offer>
</Query>
<DataLists>
<PassengerList>
<Passenger PassengerID="Pax01">
<PTC>ADT</PTC>
</Passenger>
<Passenger PassengerID="Pax02">
<PTC>ADT</PTC>
</Passenger>
<Passenger PassengerID="Pax03">
<PTC>CHD</PTC>
</Passenger>
</PassengerList>
</DataLists>
attention
Baggage information is returned in the AirShoppingRS and ServiceListRS. The user cannot request to quote a baggage price in the OfferPriceRQ.
- /AirShoppingRS/DataLists/TermsList/Term/Descriptions/Description
- /ServiceListRS/DataLists/BaggageAllowanceList/BaggageAllowance
OfferPrice Response
The OfferPriceRS service includes a detailed fare and tax breakdown per passenger type for the requested Offer based on availability.
The ResponseID
, OfferID
, OfferItemID
, and ALaCarteOffer
(for seat and ancillaries) are created in the OfferPriceRQ. These details are required for the follow-up transactions. The PricedOffer
section displays the fare and tax breakdown excluding seat and ancillary price breakup. One or more OfferItem
(s) are included in a PricedOffer
and each OfferItem
is unique with detailed fare and tax breakdown per PTC
.
- /OfferPriceRS/PricedOffer
- /OfferPriceRS/PricedOffer/OfferItem/@OfferItemID
- /OfferPriceRS/ShoppingResponseID/ResponseID
The OfferItemID
is created per PTC
type. There will be a single OfferItem
for the same type of PTC
(e.g., 2 ADTs).
ALaCarteOfferItem
displays the fare and tax breakdown for seat and ancillary if the user selected in the OfferPriceRQ.
- /OfferPriceRS/OtherOffers/ALaCarteOffer
- /OfferPriceRS/OtherOffers/ALaCarteOffer/ALaCarteOfferItem
- /OfferPriceRS/OtherOffers/ALaCarteOffer/ALaCarteOfferItem/@OfferItemID
The fare family details display in the PriceClass
section.
/OfferPriceRS/DataLists/PriceClassList/PriceClass
The seat and ancillaries’ descriptions display in the ServiceDefinition
section.
/OfferPriceRS/DataLists/ServiceDefinitionList/ServiceDefinition
The SeatCharacteristicCode
displays in the SeatDefinition
section.
/OfferPriceRS/DataLists/SeatDefinitionList/SeatDefinition
OfferPriceRS with PricedOffer and OtherOffers:
- /OfferPriceRS/PricedOffer/TotalPrice/DetailCurrencyPrice/Details/Detail [1] /SubTotal
- /OfferPriceRS/PricedOffer/TotalPrice/DetailCurrencyPrice/Details/Detail [1] /Application = "ItinTotalFare"
- /OfferPriceRS/PricedOffer/TotalPrice/DetailCurrencyPrice/Details/Detail [2] /SubTotal
- /OfferPriceRS/PricedOffer/TotalPrice/DetailCurrencyPrice/Details/Detail [2] /Application = "AncillaryTotalFare"
<OfferPriceRS Version="2017.2">
<Document>...</Document>
<Success/>
<ShoppingResponseID>...</ShoppingResponseID>
<PricedOffer OfferID="XORHEW8ODT-OfferID-1" Owner="YY"> <!--Air Fare Breakdown-->
<TotalPrice>
<DetailCurrencyPrice>
<Total Code="USD">4061.04</Total>
<Details>
<Detail>
<SubTotal Code="USD">3754.18</SubTotal>
<Application>ItinTotalFare</Application> <!--Total Itinerary Fare-->
</Detail>
<SubTotal Code="USD">306.86</SubTotal>
<Application>AncillaryTotalFare</Application> <!--Total Ancillary Fare-->
</Details>
</DetailCurrencyPrice>
</TotalPrice>
<OfferItem OfferItemID="TRRX3J3KUT-OfferItemID-1"></OfferItem>
<OfferItem OfferItemID="IWTCZZBHTV-OfferItemID-2"></OfferItem>
</PricedOffer>
<OtherOffers> <!--Seat and Ancillaries Price Breakdown-->
<AlaCarteOffer OfferID="P0ZJEUB5QI-SRVC-OfferID-1" Owner="YY">
<AlaCarteOfferItem OfferItemID="SEK3UFZYU2-SRVC-OfferID-1">...</AlaCarteOfferItem>
<AlaCarteOfferItem OfferItemID="VDHWLBP7G6-SRVC-OfferID-2">...</AlaCarteOfferItem>
<AlaCarteOfferItem OfferItemID="R7AR5B08WY-SRVC-OfferID-3">...</AlaCarteOfferItem>
<AlaCarteOfferItem OfferItemID="OTWFBQI1KX-SRVC-OfferID-4">...</AlaCarteOfferItem>
<AlaCarteOfferItem OfferItemID="CMHVRDCV0L-SRVC-OfferID-5">...</AlaCarteOfferItem>
<AlaCarteOfferItem OfferItemID="AOO1LR42N7-SRVC-OfferID-6">...</AlaCarteOfferItem>
</AlaCarteOffer>
</OtherOffers>
OfferPriceRS with PricedOffer and ALaCarteOfferItem
<OfferPriceRS Version="2017.2">
<Document>...</Document>
<Success/>
<ShoppingResponseID>...</ShoppingResponseID>
<PricedOffer OfferID="OQ7IU45SD1-OfferID-1" Owner="YY">...</PricedOffer> <!--Air Fare Breakdown-->
<OtherOffers>
<AlaCarteOffer OfferID="KIYWZPQUI0-SRVC-OfferID-1" Owner="YY">
<AlaCarteOfferItem OfferItemID="GQMKY1DA2O-SRVC-OfferItemID-1">
<Eligibility>
<PassengerRefs>FSFQT4TALL-PaxID-1</PassengerRefs>
<SegmentRefs>R9H8XIHAFO-SEG-1</PassengerRefs>
</Eligibility>
<UnitPriceDetail>
<TotalAmount>
<DetailCurrencyPrice> <!--Seat Price Breakdown-->
<Total Code="USD">65.51</Total>
</DetailCurrencyPrice>
</TotalAmount>
<BaseAmount>58.0</BaseAmount>
<Taxes>...</Taxes>
</UnitPriceDetail>
<Service ServiceID="WVNZQUBSGT-ServiceID-1">
<ServiceDefinitionRed>RQSHGRFEWM-ServiceDefinition-1</ServiceDefinitionRed>
</Service>
</AlaCarteOfferItem>
<AlaCarteOfferItem OfferItemID="ZWXNNGMWSS-SRVC-OfferItemID-2">
<Eligibility>
<PassengerRefs>FSFQT4TALL-PaxID-1</PassengerRefs>
<SegmentRefs>R9H8XIHAFO-SEG-1</PassengerRefs>
</Eligibility>
<UnitPriceDetail>
<TotalAmount>
<DetailCurrencyPrice> <!--Ancillaries Price Breakdown-->
<Total Code="USD">8.24</Total>
</DetailCurrencyPrice>
</TotalAmount>
<BaseAmount>7.29</BaseAmount>
<Taxes>...</Taxes>
</UnitPriceDetail>
<Service ServiceID="XES3YW43EI-ServiceID-2">
<ServiceDefinitionRed>TIKH1EZ5DU-SerciceDefinition-2</ServiceDefinitionRed>
</Service>
</AlaCarteOfferItem>
</AlaCarteOffer>
</OtherOffers>
<DataLists>...</DataLists>
<Metadata>...</Metadata>
</OfferPriceRS>