Skip to content

Commit 8db32d6

Browse files
committed
add transfers APIs
1 parent b96d942 commit 8db32d6

File tree

11 files changed

+263
-5
lines changed

11 files changed

+263
-5
lines changed

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,17 @@ amadeus.dutyOfCare.diseases.covid19Report.get({
542542
language: 'EN'
543543
});
544544

545+
//Car & Transfers APIs
546+
// Transfer Search API : Search Transfer offers
547+
amadeus.shopping.transferOffers.post(
548+
JSON.stringify(body));
549+
550+
// Transfer Book API : Book a transfer based on an offer id
551+
amadeus.ordering.transferOrders.post(JSON.stringify(body),offerId='2094123123');
552+
553+
// Transfer Management API : Cancel a transfer based on an order id
554+
amadeus.ordering.transferOrders('XXX').transfers.cancellation.post(JSON.stringify({}), confirmNbr=12345);
555+
545556
```
546557
547558
## Development & Contributing

spec/amadeus/namespaces.test.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ describe('Namespaces', () => {
7272
expect(amadeus.shopping.availability).toBeDefined();
7373
expect(amadeus.shopping.availability.flightAvailabilities).toBeDefined();
7474

75+
expect(amadeus.shopping.transferOffers).toBeDefined();
76+
7577
expect(amadeus.booking.flightOrder).toBeDefined();
7678
expect(amadeus.booking.hotelBookings).toBeDefined();
7779

@@ -81,6 +83,10 @@ describe('Namespaces', () => {
8183
expect(amadeus.media).toBeDefined();
8284
expect(amadeus.media.files).toBeDefined();
8385

86+
expect(amadeus.ordering).toBeDefined();
87+
expect(amadeus.ordering.transferOrders).toBeDefined();
88+
expect(amadeus.ordering.transferOffers('XXX').transfers.cancellation).toBeDefined();
89+
8490
expect(amadeus.airport).toBeDefined();
8591
expect(amadeus.airport.directDestinations).toBeDefined();
8692
expect(amadeus.airport.predictions).toBeDefined();
@@ -165,6 +171,9 @@ describe('Namespaces', () => {
165171
expect(amadeus.shopping.flightOffers.pricing.post).toBeDefined();
166172
expect(amadeus.shopping.seatmaps.post).toBeDefined();
167173
expect(amadeus.booking.hotelBookings.post).toBeDefined();
174+
expect(amadeus.shopping.transferOffers.post).toBeDefined();
175+
expect(amadeus.ordering.transferOrders.post).toBeDefined();
176+
expect(amadeus.ordering.transferOrders('XXX').transfers.cancellation.post).toBeDefined();
168177
});
169178

170179
it('should define all expected .delete methods', () => {
@@ -537,5 +546,26 @@ describe('Namespaces', () => {
537546
.toHaveBeenCalledWith('/v1/airline/destinations', {});
538547
});
539548

549+
it('.amadeus.shopping.transferOffers.post', () => {
550+
amadeus.client.post = jest.fn();
551+
amadeus.shopping.transferOffers.post();
552+
expect(amadeus.client.post)
553+
.toHaveBeenCalledWith('/v1/shopping/transfer-offers', {});
554+
});
555+
556+
it('.amadeus.ordering.transferOrders.post', () => {
557+
amadeus.client.post = jest.fn();
558+
amadeus.shopping.transferOrders.post();
559+
expect(amadeus.client.post)
560+
.toHaveBeenCalledWith('/v1/shopping/transfer-orders', {});
561+
});
562+
563+
it('.amadeus.ordering.transferOrders().transfers.cancellation.post', () => {
564+
amadeus.client.post = jest.fn();
565+
amadeus.shopping.transferOrders(XXX).transfers.cancellation.post();
566+
expect(amadeus.client.post)
567+
.toHaveBeenCalledWith('/v1/shopping/transfer-orders/XXX/transfers/cancellation', {});
568+
});
569+
540570
});
541571
});

src/amadeus.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import Booking from './amadeus/namespaces/booking';
77
import Travel from './amadeus/namespaces/travel';
88
import EReputation from './amadeus/namespaces/e_reputation';
99
import Media from './amadeus/namespaces/media';
10+
import Ordering from './amadeus/namespaces/ordering';
1011
import Airport from './amadeus/namespaces/airport';
1112
import Safety from './amadeus/namespaces/safety';
1213
import Schedule from './amadeus/namespaces/schedule';
@@ -72,6 +73,7 @@ class Amadeus {
7273
this.travel = new Travel(this.client);
7374
this.eReputation = new EReputation(this.client);
7475
this.media = new Media(this.client);
76+
this.ordering = new Ordering(this.client);
7577
this.airport = new Airport(this.client);
7678
this.pagination = new Pagination(this.client);
7779
this.safety = new Safety(this.client);

src/amadeus/namespaces/ordering.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import TransferOrders from './ordering/transfer_orders';
2+
3+
/**
4+
* A namespaced client for the
5+
* `/v1/ordering` endpoints
6+
*
7+
* Access via the {@link Amadeus} object
8+
*
9+
* ```js
10+
* let amadeus = new Amadeus();
11+
* amadeus.ordering;
12+
* ```
13+
*
14+
* @param {Client} client
15+
* @property {TransferOrders} TransferOrders
16+
* @protected
17+
*/
18+
class Ordering {
19+
constructor(client) {
20+
this.client = client;
21+
this.transferOrders = new TransferOrders(client);
22+
}
23+
24+
transferOrders (offerId) {
25+
return new TransferOrders(this.client, offerId);
26+
}
27+
}
28+
29+
export default Ordering;
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/**
2+
* A namespaced client for the
3+
* `/v1/ordering/transfer-orders` endpoints
4+
*
5+
* Access via the {@link Amadeus} object
6+
*
7+
* ```js
8+
* let amadeus = new Amadeus();
9+
* amadeus.ordering.transferOrders;
10+
* ```
11+
*
12+
* @param {Client} client
13+
*/
14+
class TransferOrders {
15+
constructor(client) {
16+
this.client = client;
17+
this.offerId = offerId;
18+
}
19+
20+
/**
21+
* To book the selected transfer-offer and create a transfer-order
22+
*
23+
* @param {Object} params
24+
* @return {Promise.<Response,ResponseError>} a Promise
25+
*
26+
* To book the transfer-offer(s) suggested by transferOffers and create a transfer-order
27+
*
28+
* ```js
29+
* amadeus.ordering.transferOrders.post(JSON.stringify(body),offerId='2094123123');
30+
* ```
31+
*/
32+
post(params = {}) {
33+
return this.client.post(
34+
`/v1/ordering/transfer-orders/${this.offerId}`, params
35+
);
36+
}
37+
}
38+
39+
export default TransferOrders;
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import Cancellation from './transfers/cancellation';
2+
3+
/**
4+
* A namespaced client for the
5+
* `/v1/ordering/transfer-orders/XXXXX/transfers` endpoints
6+
*
7+
* Access via the {@link Amadeus} object
8+
*
9+
* ```js
10+
* let amadeus = new Amadeus();
11+
* amadeus.ordering.transferOrders('XXX').transfers;
12+
* ```
13+
*
14+
* @param {Client} client
15+
*/
16+
class Transfers {
17+
constructor(client) {
18+
this.client = client;
19+
this.cancellation = new Cancellation(client);
20+
}
21+
}
22+
23+
export default Transfers;
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
* A namespaced client for the
3+
* `/v1/ordering/transfer-orders/XXX/transfers/cancellation` endpoints
4+
*
5+
* Access via the {@link Amadeus} object
6+
*
7+
* ```js
8+
* let amadeus = new Amadeus();
9+
* amadeus.ordering.transferOrder('XXX').transfers.cancellation.post(body, confirmNbr=123);
10+
* ```
11+
*
12+
* @param {Client} client
13+
*/
14+
class TransferOrder {
15+
constructor(client) {
16+
this.client = client;
17+
this.orderId = orderId;
18+
}
19+
20+
/**
21+
* To retrieve a transfer order based on its id
22+
* @param {Object} params
23+
* @return {Promise.<Response,ResponseError>} a Promise
24+
*
25+
* To retrieve a transfer order with ID 'XXX'
26+
*
27+
* ```js
28+
* amadeus.ordering.transferOrders('XXX').transfers.cancellation.post({}, confirmNbr=123);
29+
* ```
30+
*/
31+
post(params = {}) {
32+
return this.client.post(
33+
`/v1/ordering/transfer-orders/${this.orderId}/transfers/cancellation`, params);
34+
}
35+
}
36+
37+
export default TransferOrder;

src/amadeus/namespaces/shopping.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import HotelOffersSearch from './shopping/hotel_offers_search';
88
import Activities from './shopping/activities';
99
import Activity from './shopping/activity';
1010
import Availability from './shopping/availability';
11-
11+
import TransferOffers from './shopping/transfer_offers';
1212

1313
/**
1414
* A namespaced client for the
@@ -30,6 +30,7 @@ import Availability from './shopping/availability';
3030
* @property {HotelOfferSearch} hotelOffers
3131
* @property {HotelOffersSearch} hotelOffers
3232
* @property {Availability} availability
33+
* @property {TransferOffers} transferOffers
3334
*/
3435
class Shopping {
3536
constructor(client) {
@@ -42,6 +43,7 @@ class Shopping {
4243
this.hotelOffersSearch = new HotelOffersSearch(client);
4344
this.activities = new Activities(client);
4445
this.availability = new Availability(client);
46+
this.transferOffers = new TransferOffers(client);
4547
}
4648

4749
/**

src/amadeus/namespaces/shopping/hotel_offer_search.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
* @param {Client} client
1313
* @property {number} offerId
1414
*/
15-
class hotelOfferSearch {
15+
class HotelOfferSearch {
1616
constructor(client, offerId) {
1717
this.client = client;
1818
this.offerId = offerId;
@@ -37,4 +37,4 @@ class hotelOfferSearch {
3737
}
3838
}
3939

40-
export default hotelOfferSearch;
40+
export default HotelOfferSearch;

src/amadeus/namespaces/shopping/hotel_offers_search.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
*
1212
* @param {Client} client
1313
*/
14-
class hotelOffersSearch {
14+
class HotelOffersSearch {
1515
constructor(client) {
1616
this.client = client;
1717
}
@@ -39,4 +39,4 @@ class hotelOffersSearch {
3939
}
4040
}
4141

42-
export default hotelOffersSearch;
42+
export default HotelOffersSearch;

0 commit comments

Comments
 (0)