Skip to content

Latest commit

 

History

History
292 lines (223 loc) · 8.18 KB

README.md

File metadata and controls

292 lines (223 loc) · 8.18 KB

Amadeus Node SDK

Module Version Build Status Maintainability Dependencies Contact Support

Amadeus provides a set of APIs for the travel industry. Flights, Hotels, Locations and more.

For more details see the Node documentation on Amadeus.com.

Installation

This module has been tested using Node 6 and higher, though it should work with Node 4 and 5 as well. You can install install it using Yarn or NPM.

npm install amadeus --save

Getting Started

To make your first API call you will need to register for an Amadeus Developer Account and set up your first application.

var Amadeus = require('amadeus');

var amadeus = new Amadeus({
  clientId: '[YOUR_CLIENT_ID]',
  clientSecret: '[YOUR_CLIENT_SECRET]'
});

amadeus.referenceData.urls.checkinLinks.get({
  airline: '1X'
}).then(function(response){
  console.log(response.data[0].href);
  //=> https://www.onex.com/manage/check-in
}).catch(function(responseError){
  console.log(responseError.code);
});

Initialization

The client can be initialized directly.

// Initialize using parameters
var amadeus = new Amadeus({
  clientId: '...',
  clientSecret: '...'
});

Alternatively it can be initialized without any parameters if the environment variables AMADEUS_CLIENT_ID and AMADEUS_CLIENT_SECRET are present.

var amadeus = new Amadeus();

Your credentials can be found on the Amadeus dashboard. Sign up for an account today.

By default the environment for the SDK is the test environment. To switch to a production (paid-for) environment please switch the hostname as follows:

var amadeus = new Amadeus({
  hostname: 'production'
});

Documentation

Amadeus has a large set of APIs, and our documentation is here to get you started today. Head over to our Reference documentation for in-depth information about every SDK method, it's arguments and return types.

Making API calls

This library conveniently maps every API path to a similar path.

For example, GET /v2/reference-data/urls/checkin-links?airline=1X would be:

amadeus.referenceData.urls.checkinLinks.get({ airline: '1X' });

Similarly, to select a resource by ID, you can pass in the ID to the singular path.

For example, GET /v1/shopping/hotel/123/offers/234 would be:

amadeus.shopping.hotel(123).offer(234).get(...);

You can make any arbitrary API call as well directly with the .client.get method:

amadeus.client.get('/v2/reference-data/urls/checkin-links', { airline: '1X' });

Promises

Every API call returns a Promise that either resolves or rejects. Every resolved API call returns a Response object containing a body attribute with the raw response. If the API call contained a JSON response it will parse the JSON into the .result attribute. If this data also contains a data key, it will make that available as the .data attribute.

For a failed API call it returns a ResponseError containing the (parsed or unparsed) response, the request, and an error code.

amadeus.referenceData.urls.checkinLinks.get({
  airline: '1X'
}).then(function(response){
  console.log(response.body);   //=> The raw body
  console.log(response.result); //=> The fully parsed result
  console.log(response.data);   //=> The data attribute taken from the result
}).catch(function(error){
  console.log(error.response); //=> The response object with (un)parsed data
  console.log(error.response.request); //=> The details of the request made
  console.log(error.code); //=> A unique error code to identify the type of error
});

Pagination

If an API endpoint supports pagination, the other pages are available under the .next, .previous, .last and .first methods.

amadeus.referenceData.locations.get({
  keyword: 'LON',
  subType: 'AIRPORT,CITY'
}).then(function(response){
  console.log(response.data); // first page
  return amadeus.next(response);
}).then(function(nextReponse){
  console.log(nextReponse.data); // second page
});

If a page is not available, the response will resolve to null.

Logging & Debugging

The SDK makes it easy to add your own logger compatible with the default console.

var amadeus = new Amadeus({
  clientId: '...',
  clientSecret: '...',
  logger: new MyConsole()
});

Additionally, to enable more verbose logging, you can set the appropriate level on your own logger, though the easiest way would be to enable debugging via a parameter on initialization, or using the AMADEUS_LOG_LEVEL environment variable. The available options are silent (default), warn, and debug.

var amadeus = new Amadeus({
  clientId: '...',
  clientSecret: '...',
  logLevel: 'debug'
});

List of supported endpoints

// Airpot and City Search
// Find all the cities and airportes starting by 'LON'
amadeus.referenceData.locations.get({
  keyword : 'LON',
  subType : Amadeus.location.any
})

// Get a specific city or airport based on its id
amadeus.referenceData.location('ALHR').get()

// Aiport Nearest Relevant Airport
amadeus.referenceData.locations.airports.get({
   longitude : 49.000,
   latitude  : 2.55
})

// Flight Cheapest Date Search
amadeus.shopping.flightDates.get({
   origin : 'NYC',
   destination : 'MAD'
})

// Flight Checkin Links
amadeus.referenceData.urls.checkinLinks.get({
  airline : 'LH'
})

// Airline Code Lookup
amadeus.referenceData.airlines.get({
  IATACode : 'LH'
})

// Flight Inspiration Search
amadeus.shopping.flightDestinations.get({
  origin : 'MAD'
})

// Flight Low-fare Search
  amadeus.shopping.flightOffers.get({
  origin : 'NYC',
  destination : 'MAD',
  departureDate : '2019-08-01'
})

// Flight Most Searched Destinations
amadeus.travel.analytics.fareSearches.get({
    origin : 'NCE',
    sourceCountry : 'FR',
    period : '2017-08'
}) 

// Flight Most Traveled Destinations
amadeus.travel.analytics.airTraffic.traveled.get({
    origin : 'NCE',
    period : '2017-08'
})

// Flight Most Booked Destinations
amadeus.travel.analytics.airTraffic.booked.get({
    origin : 'LON',
    period : '2016-05'
})

// Flight Busiest Traveling Period
amadeus.travel.analytics.airTraffic.busiestPeriod.get({
    cityCode: 'PAR',
    period: '2017',
    direction: Amadeus.direction.arriving
})

// Hotel Search API

// List of Hotels by City Code
amadeus.shopping.hotelOffers.get({
  cityCode : 'PAR'
})

// Get list of offers for a specific Hotel
amadeus.shopping.hotel('SMPARCOL').hotelOffers.get()

// Confirm the availability of a specific offer for a specific Hotel
amadeus.shopping.hotel('SMPARCOL').offer('4BA070BA10485322FA2C7E78C7852E').get()

Development & Contributing

Want to contribute? Read our Contributors Guide for guidance on installing and running this code in a development environment.

License

This library is released under the MIT License.

Help

Our developer support team is here to help you. You can find us on StackOverflow and email.