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.
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.
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.
<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.
<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>