Getting Started

This documentation is designed to be used as a base to integrate the Orchestra NDC API in a third-party system. The Orchestra NDC API is based on SOAP Web Service technology, but it’s also available as REST Web Services. The current NDC version exposed is 19.2.

Table of contents

  1. Steps for Orchestra NDC API Integration
  2. Environments
  3. Current available web operations
  4. Authentication
  5. Control header
  6. Endpoints
    1. SOAP endpoint
    2. REST endpoints
  7. Postman Collection
  8. Shopping flow
  9. Servicing flows
  10. Error management
  11. All samples

Steps for Orchestra NDC API Integration

  • give IP addresses of your system to Orchestra to update firewall of WS server
  • build a WS client by using provided WSDL + XSD files
  • get a test user from Orchestra to make test calls
  • integrate WS operations in your system (by following recommended flows)

If you have any questions, ask your contact at Orchestra or contact@orchestra.eu if you don’t yet have a referent contact.

Environments

There are two environments:

  • Test: (contact us)
  • Production: (contact us)

WSDL and XSD files can be downloaded directly here.

Current available web operations

  • login → get an access token
  • airShopping → search flights
  • serviceList → get ancillaries
  • seatAvailability → get seat map
  • offerPrice → quote an offer selection
  • orderCreate → make a booking
  • orderRetrieve → get a booking
  • orderChange → issue tickets
  • orderReshop → get cancel fee
  • orderCancel → cancel a booking

Authentication

To avoid to send username/password for each NDC request, a login method allows to authenticate a user and returns an access token in response to be used in all the NDC methods (airShopping, serviceList, etc). This login operation must be done once for a user, and the token returned can be used until the expiration date (provided in the login response with the token). Usually an access token is valid during one hour.

Control header

A control node can be added in the SOAP header of each NDC request. This node contains extra data to control request:

  • Provider: code of provider to request (put SWITCHALLINONE to receive all available companies)
  • ApiVersion: version of Orchestra NDC API to use (allows to maintain backward compatibility if necessary)

:information_source: The Orchestra NDC API is designed as a gateway, so a provider code is mandatory in request by using control header to indicate the provider to request. The provider can be an airline system, an aggregator, another gateway API, etc. Only one provider code can be set for each request.

Control Header Sample
<Control Provider="SWITCHALLINONE" ApiVersion="1.0" />

Endpoints

Depending on your preferences, the NDC API can be consumed as SOAP WS or REST WS. In both cases, the Content-Type header must be text/xml;charset=UTF-8

Also, in both cases, the Accept-Encoding header with gzip value should be sent to enable GZIP compression to reduce response size and optimize transmission.

SOAP endpoint

Note: NDC messages are contained in SOAP envelope for request and response. Control header must be defined in the SOAP header as XML element.

  • https://________/ndc/ws/soap/19.2/OrchestraNDCService
SOAP request sample
POST https://.../ndc/ws/soap/19.2/OrchestraNDCService HTTP/1.1
Content-Type: text/xml;charset=UTF-8
SOAPAction: "http://www.travelsoft.fr/orchestra/ndc/19.2/airShopping"
AuthToken: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header xmlns:head="http://www.travelsoft.fr/orchestra/ndc/headers">
      <head:Control Provider="SWITCHALLINONE" />
   </soapenv:Header>
   <soapenv:Body>
        <IATA_AirShoppingRQ xmlns="http://www.iata.org/IATA/2015/00/2019.2/IATA_AirShoppingRQ">
            ...
        </IATA_AirShoppingRQ>
    </soapenv:Body>
</soapenv:Envelope>
SOAP response sample
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns5:IATA_AirShoppingRS xmlns:ns5="http://www.iata.org/IATA/2015/00/2019.2/IATA_AirShoppingRS">
            ...
        </ns5:IATA_AirShoppingRS>
    </S:Body>
</S:Envelope>

REST endpoints

Note: NDC messages can be sent directly (without envelope, not like SOAP endpoint). Control header must be defined in the HTTP headers (Orx-Control-Provider, Orx-Control-ApiVersion, Orx-Control-EnvironmentTarget, etc).

  • https://________/ndc/ws/rest/19.2/Login
  • https://________/ndc/ws/rest/19.2/AirShopping
  • https://________/ndc/ws/rest/19.2/ServiceList
  • https://________/ndc/ws/rest/19.2/SeatAvailability
  • https://________/ndc/ws/rest/19.2/OfferPrice
  • https://________/ndc/ws/rest/19.2/OrderCreate
  • https://________/ndc/ws/rest/19.2/OrderRetrieve
  • https://________/ndc/ws/rest/19.2/OrderReshop
  • https://________/ndc/ws/rest/19.2/OrderChange
  • https://________/ndc/ws/rest/19.2/OrderCancel
REST request sample
POST https://.../ndc/ws/rest/19.2/AirShopping HTTP/1.1
Content-Type: text/xml;charset=UTF-8
Orx-Control-Provider: SWITCHALLINONE
AuthToken: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<?xml version='1.0' encoding='UTF-8'?>
<IATA_AirShoppingRQ xmlns="http://www.iata.org/IATA/2015/00/2019.2/IATA_AirShoppingRQ">
  ...
</IATA_AirShoppingRQ>
REST response sample
<?xml version='1.0' encoding='UTF-8'?>
<ns5:IATA_AirShoppingRS xmlns:ns5="http://www.iata.org/IATA/2015/00/2019.2/IATA_AirShoppingRS">
  ...
</ns5:IATA_AirShoppingRS>

Postman Collection

You can dowload the postman collection to test during your integration.

Shopping flow

airShopping (→ offerPrice) → serviceList → seatAvailability → offerPrice → orderCreate

Note: the airShopping transaction initiates a session which is maintained on Orchestra side by using the ShoppingResponseID as session ID.

Booking flow

Servicing flows

  • Get order data for refresh:

Retrieve flow

  • Ticket issue:

Ticket issue flow

  • Cancellation:

Cancel flow

Error management

Always in NDC responses (see an example below), except if the request is malformed, a SOAP fault will be returned.

AirShoppingRS - Error Example
  <IATA_AirShoppingRS xmlns="http://www.iata.org/IATA/2015/00/2019.2/IATA_AirShoppingRS">
    <Error>
      <Code>911</Code>
      <DescText>Unable to process - system error</DescText>
      <LangCode>en</LangCode>
      <OwnerName>ORCHESTRA</OwnerName>
    </Error>
    <PayloadAttributes>
      <CorrelationID>a222c960-0d2c-4507-bd2c-59362825cc76</CorrelationID>
      <Timestamp>2020-10-01T10:51:29.072</Timestamp>
      <VersionNumber>19.2</VersionNumber>
    </PayloadAttributes>
  </IATA_AirShoppingRS>
  

All samples

Download all message samples here.