NDC API Workflows
Flow of Data Between Messages
The following information is required throughout the NDC flow:
- Ensure you use the correct
ResponseID
andOfferID
throughout the flow. For example, if you receive a message similar to “OfferID not found”, go back and check your response and flow to ensure you have used the right ID’s. - For a specific account code, FQTV information, promotional code, or fare class you must carry this information from AirShopping through OderCreate
- Include any references specific to a passenger's eligibility for a fare from AirShopping to OrderCreate to ServiceList to OrderCreate, etc. This is especially necessary if FQTV or corporate traveler is eligible for free seat assignment. Your request will fail if you do not provide the information.
The following flows will be updated as functionality becomes available for airlines.
Workflow Scenarios | Details |
---|---|
1. AirShopping 2. OfferPrice 3. OrderCreate | The user should take every OfferID from AirShoppingRS when executing OfferPriceRQ.The OfferPrice step is mandatory before executing the OrderCreateRQ. The user should take all required IDs from OfferPriceRS when executing OrderCreateRQ. |
1. AirShopping 2. SeatAvailability 3. OfferPrice 4. OrderCreate | The user should take every OfferID (flight-related offers) from AirShoppingRS when executing OfferPriceRQ.The user should take every seat-related OfferID from Seat>AvailabilityRS when executing OfferPriceRQ to quote price for FLIGHTS+SEAT.The OfferPrice request is mandatory before executing the OrderCreateRQ. The user should take every flight-related OfferID from OfferPriceRS and seat-related OfferID from Seat>AvailabilityRS when executing OrderCreateRQ. |
1. AirShopping 2. SeatAvailability for outbound 3. SeatAvailability for inbound 4. OfferPrice 5. OrderCreate | The user wants to select a seat for outbound and inbound itineraries. As per the IATA NDC 2017.2 schema standard, the multiple offers cannot be included in the same SeatAvailabilityRQ. The user needs to execute two SeatAvailabilityRQ. The user should take every OfferID (flight-related offers) from AirShoppingRS when executing OfferPriceRQ.The user should take every seat-related OfferID from Seat>AvailabilityRS when executing OfferPriceRQ to quote price for FLIGHTS+SEAT.The OfferPrice request is mandatory before executing the OrderCreateRQ. The user should take every flight-related OfferID from OfferPriceRS and seat-related OfferID from Seat>AvailabilityRS when executing OrderCreateRQ. |
1. AirShopping 2. ServiceList 3. OfferPrice 4. OrderCreate | The user should take every OfferID (flight-related offers) from AirShoppingRS when executing OfferPriceRQ.The user should take every service-related OfferID from ServiceListRS when executing OfferPriceRQ to quote price for FLIGHTS+ANCILLARIES.The OfferPrice request is mandatory before executing the OrderCreateRQ. The user should take every flight-related OfferID from OfferPriceRS and ancillary-related OfferID from ServiceListRS when executing OrderCreateRQ. |
1. AirShopping 2. SeatAvailability 3. ServiceList 4. OfferPrice 5. OrderCreate | The user should take every OfferID (flight-related offers) from AirShoppingRS when executing OfferPriceRQ.The user should take every seat-related OfferID from Seat>AvailabilityRS and service-related OfferID from ServiceListRS when executing OfferPriceRQ to quote price for FLIGHTS+SEAT+ANCILLARIES.The OfferPrice request is mandatory before executing the OrderCreateRQ. The user should take every flight-related OfferID from OfferPriceRS, seat-related OfferID from Seat>AvailabilityRS, and ancillary-related OfferID from ServiceListRS when executing OrderCreateRQ. |
1. AirShopping 2. SeatAvailability 3. ServiceList 4. OfferPrice 5. OrderCreate 6. OrderReshop 7. OrderCancel | The user will get the OrderID when the order is created successfully. The user can get the cancellation details and cancel the order by using the below two steps.OrderReshopRQ/RS – It provides details about cancellation like forfeit and retains, refund, etc. OrderCancelRQ/RS – It cancels the existing reservation. |
OrderRetrieve | The user can retrieve the order details using the OderRetrieve transaction in the various stages of the workflow when OrderID is available. |
1. AirShopping 2. OfferPrice 3. OrderCreate 4. OfferPrice | Price Change during OrderCreate. When the OrderCreateRQ is submitted, the carrier may return an intermittent error message in the OrderViewRS when the price that was initially quoted (Price from OfferPriceRS) is no longer available. The user should execute the OfferPriceRQ again to get an updated price. Then the user needs to execute OrderCreateRQ again taking the updated OfferID s and OfferItemID s from the most current OfferPriceRS. Note that these are for Flights related Offer only. The Seat and ancillary-related OFFER should be taken from SeatAvailability and ServiceListRS. |
OrderCancel | Canceling an order is a two steps process in the NDC 2017.2 1. NDC 2017.2 OrderReshopRQ/RS – It provides details about cancellation like forfeit and retain, refund, etc. 2. NDC 2017.2 OrderCancelRQ/RS – It cancels the existing reservation. |
OrderReshop | NDC 2017.2 OrderReshopRQ/RS is only implemented for Cancel flow. |
OrderCreate Flights Only Workflow
OrderCreate flights only workflow with Single or Multi-Passenger_ FLIGHTS ONLY (Any Itinerary- DOM, INTL, TB, MC, SUN).
Step 1: AirShopping
- AirShoppingRQ – Submit ShoppingRQ for ADT, YTH, CHD, INF
- AirShoppingRS
- SINGLE /AirShoppingRS/ShoppingResponseID/ResponseID
- MULTIPLE /AirShoppingRS/OffersGroup/AirlineOffers/Offer/@OfferID
- Within these offers, you will see ONE of each of the following:
- /AirShoppingRS/OffersGroup/AirlineOffers/Offer/OfferItem/@OfferItemID { for PTC Type: ADT }
- /AirShoppingRS/OffersGroup/AirlineOffers/Offer/OfferItem/@OfferItemID { for PTC Type: YTH }
- /AirShoppingRS/OffersGroup/AirlineOffers/Offer/OfferItem/@OfferItemID { for PTC Type: CHD }
- /AirShoppingRS/OffersGroup/AirlineOffers/Offer/OfferItem/@OfferItemID { for PTC Type: INF }
Step 2: OfferPrice
OfferPriceRQ
Select the offer of your choice and submit the keys only as shown in the below example.
OfferPriceRS
Returns:
- /OfferPriceRS/PricedOffer/@OfferID
OfferPriceRS/PricedOffer/TotalPrice/DetailCurrencyPrice/Total - /OfferPriceRS/PricedOffer/OfferItem/@OfferItemID with PassengerFare details for ADT
- /OfferPriceRS/PricedOffer/OfferItem/@OfferItemID with PassengerFare details for YTH
- /OfferPriceRS/PricedOffer/OfferItem/@OfferItemID with PassengerFare details for CHD
- /OfferPriceRS/PricedOffer/OfferItem/@OfferItemID with PassengerFare details for INF
- /OfferPriceRS/OtherOffers/ALaCarteOffer/@OfferID
- /OfferPriceRS/OtherOffers/ALaCarteOffer/ALaCarteOfferItem/@OfferItemID
Step 3: OrderCreate
Take the OfferID
, OfferItemID
, ResponseID
, and Total
from OfferPriceRS and construct the OrderCreateRQ as shown in the below example.
OrderCreate Flights Seat and Ancillaries Workflow
OrderCreate flights seat and ancillaries workflow for single or multi-passenger (any itinerary - DOM, INTL, TB, MC, SUN)
Step 1: AirShopping
- AirShoppingRQ – Submit ShoppingRQ for ADT, YTH, CHD, INF
- AirShoppingRS
- SINGLE /AirShoppingRS/ShoppingResponseID/ResponseID
- MULTIPLE /AirShoppingRS/OffersGroup/AirlineOffers/Offer[1]/@OfferID
- Within these Offers, you will see ONE for each of the following:
- /AirShoppingRS/OffersGroup/AirlineOffers/Offer/OfferItem/@OfferItemID { for PTC Type: ADT }
- /AirShoppingRS/OffersGroup/AirlineOffers/Offer/OfferItem/@OfferItemID { for PTC Type: YTH }
- /AirShoppingRS/OffersGroup/AirlineOffers/Offer/OfferItem/@OfferItemID { for PTC Type: CHD }
- /AirShoppingRS/OffersGroup/AirlineOffers/Offer/OfferItem/@OfferItemID { for PTC Type: INF }
Step 2: ServiceList
ServiceListRQ
Select the offer of your choice and submit the keys only as shown in the below example.
ServiceListRS
The ServiceListRS returns the following:
- /ServiceListRS/ALaCarteOffer/@OfferID
- /ServiceListRS/ALaCarteOffer/ALaCarteOfferItem/@OfferItemID
Step 3: SeatAvailability
SeatAvailabilityRQ
Submit the OfferID
and ResponseID
in SeatAvailabilityRQ.
SeatAvailabilityRS
The SeatAvailabilityRS returns the following:
- /SeatAvailabilityRS/ALaCarteOffer/@OfferID
- /SeatAvailabilityRS/ALaCarteOffer/ALaCarteOfferItem/@OfferItemID
- /SeatAvailabilityRS/ShoppingResponseID/ResponseID
Step 4: OfferPrice
OfferPriceRQ
Select the offer of your choice and submit the keys only as shown in the below example.
- The first
OfferID
,OfferItemID
, andResponseID
were obtained from AirShoppingRS - The second
OfferID
,OfferItemID
, andResponseID
were obtained from Seat>AvailabilityRS - The third
OfferID
,OfferItemID
, andResponseID
were obtained from ServiceListRS
OfferPriceRS
In the example below <Total Code="USD>400.50</Total>"
is PricedItineraries/AirItineraryPricingInfo/ItinTotalFare/TotalFare/Amount minus YY_Discounts.
There will be a unique ALaCarteOfferItem
that has UnitPriceDetail
for every PricedItineraries/AirItineraryPricingInfo/ItinTotalFare/YY_Discounts/ID in the JSON RS.
Step 5: OrderCreate
OrderCreateRQ
Select the IDs from the earlier response and submit the IDs with other details as shown in the below example.
In the below example, the seller manually calculates the total amount for all the ancillaries, adds it with the /OfferPriceRS/PricedOffer/TotalPrice/DetailCurrencyPrice/Total and then submits the grand total in /OrderCreateRQ/Query/Payments/Payment/Amount.
OrderCreate Price Change Workflow
When OrderCreateRQ is submitted, the carrier may return an intermittent error message in the OrderViewRS when the price that was initially quoted (from OfferPriceRS) is no longer available. The user should execute the OfferPriceRQ again to get an updated price.
OrderCreate
The user receives one of the below error messages in the OrderViewRS when there is any price change from the earlier OfferPriceRS price.
The user should execute the OfferPriceRQ again to get an updated price. Then the user needs to execute OrderCreateRQ again taking the updated OfferID
s and OfferItemID
s from the most current OfferPriceRS.
Note that these are for flights-related offers only. The seat and ancillary-related offers should be taken from SeatAvailability and ServiceListRS.
OrderCancel Workflow
Canceling an order is a two step process in the NDC 2017.2:
- NDC 2017.2 OrderReshopRQ/RS provides details about cancellation like forfeit and retain, refund, etc.
- NDC 2017.2 OrderCancelRQ/RS cancels the existing reservation
Step 1: OrderReshop
Currently, OrderReshopRQ is only used for the first step of cancellation.
Step 2: OrderCancel
The OrderCancel service provides the ability to cancel the booking. The service cancels the booking and refunds the refundable amount to the original form of payment if applicable.