NDC API Workflows


Flow of Data Between Messages

The following information is required throughout the NDC flow:

  • Ensure you use the correct ResponseID and OfferID 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 ScenariosDetails
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.
OrderRetrieveThe 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 OfferIDs and OfferItemIDs 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.
OrderCancelCanceling 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.
OrderReshopNDC 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, and ResponseID were obtained from AirShoppingRS
  • The second OfferID, OfferItemID, and ResponseID were obtained from Seat>AvailabilityRS
  • The third OfferID, OfferItemID, and ResponseID 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 OfferIDs and OfferItemIDs 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:

  1. NDC 2017.2 OrderReshopRQ/RS provides details about cancellation like forfeit and retain, refund, etc.
  2. 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.