Working with NDC

Accessing the Sandbox Environment

Use the following URL in your flow to access the sandbox for the NDC API and endpoints. Refer to the table below to the service and associated URL.

https://oss.services.atpco.net/ndcexchange

Sandbox Service Endpoints

Service Sandbox Endpoint/URL
Air Shopping /ndc/17.2/v1/AirShopping
Service List /ndc/17.2/v1/ServiceList
Seat Availability /ndc/17.2/v1/SeatAvailability
Offer Price /ndc/17.2/v1/OfferPrice
Order Create /ndc/17.2/v1/OrderCreate
Order Retrieve /ndc/17.2/v1/OrderRetrieve
Order Reshop /ndc/17.2/v1/OrderReshop
Order Cancel /ndc/17.2/v1/OrderCancel
OrderChange /ndc/17.2/v1/OrderChange

API Key

To access the NDC API, each seller should provide the “apikey” in the HTTP header.

NOTE: OrderCreateRQ and OrderChangeRQ requires two additional headers (see below).

The API key is a unique authorization key issued by ATPCO. Currently, API keys for sellers are manually generated by ATPCO.

POST https://c/ndcexchange/ndc/17.2/v1/AirShopping

Request Headers

apikey: XXXXXXXXXXXXXXXXXXXXXX

Content-Type: application/xml

Accept: */*

Host: oss.services.atpco.net

Accept-Encoding: gzip, deflate, br

Connection: keep-alive

In addition to the above, when conducting an OrderCreateRQ or OrderChangeRQ, you must submit an additional two mandatory HTTP headers in OrderCreate or OrderChange Request.

First Mandatory HTTP Header:

  • Name: TX-Proxy-Key
  • Value: XXXXXXXXXXXXXXXXXXXXXXXX (value send to each seller)

Second Mandatory HTTP Header:

  • Name: tx-http-timeout:
  • Value: 120

TraceID

To enable us to follow up your transactions associated to your requests/responses in the sandbox, we need you to turn on trace and provide the transaction ID.

Ensure you have set orc-debug = “true” to pass in the header.

orc debug true

When retrieving the responses for tech support, you need to capture the value of “HTTP header orc-transaction-id” value and insert in the Transaction ID/Trace field in the ticket.

orc transaction id

SOAP Message

Below is the XML-based protocol that is used for the exchange of NDC information. Each request needs to be wrapped in a SOAP envelope. It is the root element of the message and defines the XML document as a SOAP message.

Message RQ (SOAP) Sample Value Remarks
Header Empty, used for schema compatibility
Body
NDCMSG_Envelope
NDCMSG_Header
SchemaType NDC Static, same for all messages
SchemaVersion YY.2017.2 Static, same for all messages
Sender
SellerID atpco.ndc.key.SELLER_SPECIFIC_ID Seller’s key
Recipient
Address.Company Code for Offer OWNER for 1-1 services
NDCMSG_Body
NDCMSG_Payload
<![CDATA[
<IATA_NDC_Message> AirShoppingRQ, OfferPriceRQ, SeatAvailabilityRQ, ServiceListRQ, OrderCreateRQ, OrderRetrieveRQ, OrderReshopRQ, OrderCancelRQ MVP supported messages
]]>

Message Structure Example

This is the general structure of any messages accepted by NDC.

Copy
Copied
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:atpco="https://prod.services.atpco.net/ndc/schema/v1">
    <soapenv:Header/>
    <soapenv:Body>
        <atpco:NDCMSG_Envelope>
            <NDCMSG_Header>
                <Sender>
                    <SellerID>atpco.ndc.key.SELLER-SPECIFIC-KEY</SellerID>
                </Sender>
                <Recipient>
                    <Address>
                        <Company>YY</Company><!--This is the airline code for which the message is intended.-->
                    </Address>
                </Recipient>
                <SchemaType>NDC</SchemaType>
                <SchemaVersion>YY.2017.2</SchemaVersion>
            </NDCMSG_Header>
            <NDCMSG_Body>
                <NDCMSG_Payload>
                    <![CDATA[
                    
<IATA_NDC_Message>
[...]
</IATA_NDC_Message>

					]]>
				</NDCMSG_Payload>
			</NDCMSG_Body>
		</atpco:NDCMSG_Envelope>
	</soapenv:Body>
</soapenv:Envelope>

IATA NDC Message

The below values represent the general structure for IATA 17.2 supported messages.

IATA NDC Message RQ Sample Value Remarks
Version 17.2 Mandatory
EchoToken 12345 Optional, echo back in response
TimeStamp 2011-04-28T12:48:00Z Optional, time stamp when response was built
TransactionIdentifier daadf3d1d87245a187c64fdbba9b235 Optional, echo back in response
SequenceNumbr 1 Optional, echo back in response
PointOfSale Optional
Location Point of sale location information
CountryCode US Required for Non-IATA/ARC Accredited
Document   Mandatory in schema
Name ATPCO NDC Fixed value
ReferenceVersion IATA NDC 17.2 Fixed value
Party Mandatory in schema
Sender Mandatory
TravelAgencySender Seller is a travel agency
AgencyID 99111222 Mandatory
IATA_Number 88888888 Required for IATA/ARC Accredited
AgentUser/PseudoCity IAD Optional
Participants Message Participant(s), Optional
Participant Participant detail
EnabledSystem
SystemID 4cdcdba1 Data type for unique NDC-Enabled system ID
Parameters Parameters that influence overall message results
Languages Requested and/or Actual Primary and/or Alternate message content language(s)
LanguageCode en-ca The primary language preference for the message
CurrCodes Currency information
FilledInCurrency
CurrCode USD Currency code

Message Structure Example

This is the general structure for supported IATA 17.2 messages.

Copy
Copied
<IATA_NDC_Message Version="2017.2" EchoToken="ET" TimeStamp="2021-04-08T10:18:42.087-04:00" TransactionIdentifier="1" SequenceNmbr="1" xmlns="http://www.iata.org/IATA/EDIST/2017.2">
	<PointOfSale>
		<Location>
			<CountryCode>US</CountryCode>
		</Location>
	</PointOfSale>
	<Document>
		<Name>ATPCO NDC</Name>
		<ReferenceVersion>IATA NDC 17.2</ReferenceVersion>
	</Document>
	<Party>
		<Sender>
			<TravelAgencySender>
				<PseudoCity>XXX</PseudoCity>
				<IATA_Number>0000XXXX</IATA_Number>
				<AgencyID>XXX</AgencyID>
			</TravelAgencySender>
		</Sender>
	</Party>
	<Parameters>
		<Languages>
			<LanguageCode>en-CA</LanguageCode>
		</Languages>
		<CurrCodes>
			<FiledInCurrency>
				<CurrCode>USD</CurrCode>
			</FiledInCurrency>
		</CurrCodes>
	</Parameters>

[...]

</IATA_NDC_Message>