Working with NDC Exchange
Accessing Production
Sellers will use one of two URL’s in your flow to access NDC Exchange 2.0 API and endpoints. Refer to the table below for each service and associated URL.
Service(s) | Production Endpoint/URL |
---|---|
AirShopping, OfferPrice, ServiceList, SeatAvailability | https://services.atpco.net/ndcexchange |
OrderCreate, OrderChange | https://pcx.services.atpco.net/Tokenize/Proxy |
OrderRetrieve, OrderReshop, OrderCancel | https://services.atpco.net/ndcexchange |
Production Service Endpoints
Service | Production Endpoint/URL |
---|---|
Air Shopping | /agg/ndc/17.2/v1/AirShopping |
Offer Price | /agg/ndc/17.2/v1/OfferPrice |
Service List | /agg/ndc/17.2/v1/ServiceList |
Seat Availability | /agg/ndc/17.2/v1/SeatAvailability |
Order Create (must reference PCI URL) | https://pcx.services.atpco.net/Tokenize/Proxy/OrderCreate |
Order Retrieve | /agg/ndc/17.2/v1/OrderRetrieve |
Order Reshop | /agg/ndc/17.2/v1/OrderReshop |
Order Change | https://pcx.services.atpco.net/Tokenize/Proxy/OrderChange |
Order Cancel | /agg/ndc/17.2/v1/OrderCancel |
Accessing the Sandbox Environment
Sellers will use one of two URL’s in your flow to access the sandbox for NDC Exchange 2.0 API and endpoints. Refer to the table below to the service and associated URL.
Service(s) | Sandbox Endpoint/URL |
---|---|
AirShopping, ServiceList, SeatAvailability, OfferPrice | https://gold.services.atpco.net/ndcexchange |
OrderCreate | https://gold.pcx.services.atpco.net |
OrderRetrieve, OrderReshop, OrderCancel | https://gold.services.atpco.net/ndcexchange |
OrderChange | https://gold.pcx.services.atpco.net |
Sandbox Service Endpoints
Service | Sandbox Endpoint/URL | Available Airline |
---|---|---|
Air Shopping | /agg/ndc/17.2/v1/AirShopping | AC |
Service List | /agg/ndc/17.2/v1/ServiceList | AC |
Seat Availability | /agg/ndc/17.2/v1/SeatAvailability | AC |
Offer Price | /agg/ndc/17.2/v1/OfferPrice | AC |
Order Create (must reference PCI URL) | /Tokenize/Proxy/OrderCreate | AC |
Order Retrieve | /agg/ndc/17.2/v1/OrderRetrieve | AC |
Order Reshop | /agg/ndc/17.2/v1/OrderReshop | AC |
Order Cancel | /agg/ndc/17.2/v1/OrderCancel | AC |
OrderChange | /Tokenize/Proxy/OrderChange | AC |
API Key
To access the NDC Exchange 2.0 Platform API, each seller should provide the “apikey” in the HTTP header. For NDC Exchange 1.0, “X-apiKey” was the value used in the HTTP header; however, for NDC Exchange 2.0 this value is now “apikey”. Please be sure to make this important change or you will experience an Authentication Error (400 Bad Request).
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://gold.services.atpco.net/ndcexchange/agg/ndc/17.2/v1/AirShopping
Request Headers
apikey: XXXXXXXXXXXXXXXXXXXXXX
Content-Type: application/xml
Accept: */*
Host: gold.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
Aggregation 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.ndcx.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 ATPCO NDC Exchange 2.0 (Aggregation Service).
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:atpco="https://prod.services.atpco.net/ndcexchange/NDC/schema/v1">
<soapenv:Header/>
<soapenv:Body>
<atpco:NDCMSG_Envelope>
<NDCMSG_Header>
<Sender>
<SellerID>atpco.ndcx.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
IATA NDC Message RQ | Sample Value | Remarks |
---|---|---|
Version | 17.2 | Mandatory |
EchoToken | Optional, echo back in response. | |
TimeStamp | Optional, time stamp when response was built. | |
TransactionIdentifier | Optional, echo back in response. | |
SequenceNumbr | Optional, echo back in response. | |
PointOfSale | Optional | |
Location | ||
CountryCode | US | |
Document | Mandatory in schema | |
Name | ATPCO AGG NDCx 2.0 | Fixed value |
ReferenceVersion | IATA NDC 17.2 | Fixed value |
Party | Mandatory in schema | |
Sender (One of the Following: TravelAgencySender, AggregatorSender, EnabledSystemSender, TBD) |
Mandatory (TBD which is used now) | |
TravelAgencySender | Seller is a travel agency | |
AgencyID | 000 | Mandatory |
IATA_Number | 0004426 | Mandatory |
PseudoCity | YUL | Optional |
Participants | Optional (TBD if used.) | |
Participant (One of the Following: TravelAgencyParticipant, AggregatorParticipant, EnabledSystemParticipant) |
||
Parameters | ||
Languages | ||
LanguageCode | en-ca | |
CurrCodes | ||
FilledInCurrency | ||
CurrCode | CAD |
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 AGG NDCx 2.0</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>