Amadeus Node SDK
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: 'REPLACE_BY_YOUR_API_KEY',
clientSecret: 'REPLACE_BY_YOUR_API_SECRET'
});
amadeus.referenceData.urls.checkinLinks.get({
airlineCode: 'BA'
}).then(function(response){
console.log(response.data[0].href);
}).catch(function(responseError){
console.log(responseError.code);
});
Initialization
The client can be initialized directly.
var amadeus = new Amadeus({
clientId: 'REPLACE_BY_YOUR_API_KEY',
clientSecret: 'REPLACE_BY_YOUR_API_SECRET'
});
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=BA
would be:
amadeus.referenceData.urls.checkinLinks.get({ airlineCode: 'BA' });
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', { airlineCode: 'BA' });
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({
airlineCode: 'BA'
}).then(function(response){
console.log(response.body);
console.log(response.result);
console.log(response.data);
}).catch(function(error){
console.log(error.response);
console.log(error.response.request);
console.log(error.code);
});
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);
return amadeus.next(response);
}).then(function(nextResponse){
console.log(nextResponse.data);
});
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: 'REPLACE_BY_YOUR_API_KEY',
clientSecret: 'REPLACE_BY_YOUR_API_SECRET',
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: 'REPLACE_BY_YOUR_API_KEY',
clientSecret: 'REPLACE_BY_YOUR_API_SECRET',
logLevel: 'debug'
});
List of supported endpoints
amadeus.shopping.flightDestinations.get({
origin : 'MAD'
})
amadeus.shopping.flightDates.get({
origin : 'NYC',
destination : 'MAD'
})
amadeus.shopping.flightOffers.get({
origin : 'NYC',
destination : 'MAD',
departureDate : '2019-08-01'
})
amadeus.referenceData.urls.checkinLinks.get({
airlineCode : 'BA'
})
amadeus.referenceData.airlines.get({
airlineCodes : 'U2'
})
amadeus.referenceData.locations.get({
keyword : 'LON',
subType : Amadeus.location.any
})
amadeus.referenceData.location('ALHR').get()
amadeus.referenceData.locations.airports.get({
longitude : 49.000,
latitude : 2.55
})
amadeus.travel.analytics.airTraffic.searched.get({
originCityCode : 'MAD',
searchPeriod : '2017-08',
marketCountryCode : 'ES'
})
amadeus.travel.analytics.airTraffic.searchedByDestination.get({
originCityCode : 'MAD',
destinationCityCode : 'NYC',
searchPeriod : '2017-08',
marketCountryCode : 'ES'
})
amadeus.travel.analytics.airTraffic.booked.get({
originCityCode : 'MAD',
period : '2017-08'
})
amadeus.travel.analytics.airTraffic.traveled.get({
originCityCode : 'MAD',
period : '2017-01'
})
amadeus.travel.analytics.airTraffic.busiestPeriod.get({
cityCode: 'MAD',
period: '2017',
direction: Amadeus.direction.arriving
})
amadeus.shopping.hotelOffers.get({
cityCode : 'MAD'
})
amadeus.shopping.hotel('SMPARCOL').hotelOffers.get()
amadeus.shopping.hotel('SMPARCOL').offer('4BA070CE929E135B3268A9F2D0C51E9D4A6CF318BA10485322FA2C7E78C7852E').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.