btrz-api-client 8.56.0 → 8.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js CHANGED
@@ -143,6 +143,7 @@ function createInventory(_ref) {
143
143
  vehicles: require("./endpoints/inventory/vehicles.js")({ client: client, internalAuthTokenProvider: internalAuthTokenProvider }),
144
144
  zonePriceOverages: require("./endpoints/inventory/zone-price-overages.js")({ client: client, internalAuthTokenProvider: internalAuthTokenProvider }),
145
145
  zonePrices: require("./endpoints/inventory/zone-prices.js")({ client: client, internalAuthTokenProvider: internalAuthTokenProvider }),
146
+ regions: require("./endpoints/inventory/regions.js")({ client: client, internalAuthTokenProvider: internalAuthTokenProvider }),
146
147
  __test: {
147
148
  client: client
148
149
  }
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+
3
+ var _require = require("../endpoints_helpers.js"),
4
+ authorizationHeaders = _require.authorizationHeaders;
5
+
6
+ /**
7
+ * Factory for regions API (btrz-api-inventory).
8
+ * @param {Object} deps
9
+ * @param {import("axios").AxiosInstance} deps.client
10
+ * @param {{ getToken: function(): string }} [deps.internalAuthTokenProvider]
11
+ * @returns {{ all: function, get: function, update: function, remove: function, create: function }}
12
+ */
13
+
14
+
15
+ function regionsFactory(_ref) {
16
+ var client = _ref.client,
17
+ internalAuthTokenProvider = _ref.internalAuthTokenProvider;
18
+
19
+ /**
20
+ * GET /regions - list regions (paginated).
21
+ * @param {Object} opts
22
+ * @param {string} [opts.token] - API key
23
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
24
+ * @param {Object} [opts.query] - Query params (page, name, enabled)
25
+ * @param {Object} [opts.headers] - Optional headers
26
+ * @returns {Promise<import("axios").AxiosResponse>}
27
+ */
28
+ function all(_ref2) {
29
+ var token = _ref2.token,
30
+ jwtToken = _ref2.jwtToken,
31
+ _ref2$query = _ref2.query,
32
+ query = _ref2$query === undefined ? {} : _ref2$query,
33
+ headers = _ref2.headers;
34
+
35
+ return client({
36
+ url: "/regions",
37
+ method: "get",
38
+ headers: authorizationHeaders({ token: token, jwtToken: jwtToken, internalAuthTokenProvider: internalAuthTokenProvider, headers: headers }),
39
+ params: query
40
+ });
41
+ }
42
+
43
+ /**
44
+ * GET /regions/:regionId - get region by id.
45
+ * @param {Object} opts
46
+ * @param {string} [opts.token] - API key
47
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
48
+ * @param {string} opts.regionId - Region id
49
+ * @param {Object} [opts.headers] - Optional headers
50
+ * @returns {Promise<import("axios").AxiosResponse>}
51
+ */
52
+ function get(_ref3) {
53
+ var token = _ref3.token,
54
+ jwtToken = _ref3.jwtToken,
55
+ regionId = _ref3.regionId,
56
+ headers = _ref3.headers;
57
+
58
+ return client({
59
+ url: "/regions/" + regionId,
60
+ method: "get",
61
+ headers: authorizationHeaders({ token: token, jwtToken: jwtToken, internalAuthTokenProvider: internalAuthTokenProvider, headers: headers })
62
+ });
63
+ }
64
+
65
+ /**
66
+ * PUT /regions/:regionId - update region.
67
+ * @param {Object} opts
68
+ * @param {string} [opts.token] - API key
69
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
70
+ * @param {string} opts.regionId - Region id
71
+ * @param {Object} opts.data - Region payload
72
+ * @param {Object} [opts.headers] - Optional headers
73
+ * @returns {Promise<import("axios").AxiosResponse>}
74
+ */
75
+ function update(_ref4) {
76
+ var token = _ref4.token,
77
+ jwtToken = _ref4.jwtToken,
78
+ regionId = _ref4.regionId,
79
+ data = _ref4.data,
80
+ headers = _ref4.headers;
81
+
82
+ return client({
83
+ url: "/regions/" + regionId,
84
+ method: "put",
85
+ headers: authorizationHeaders({ token: token, jwtToken: jwtToken, internalAuthTokenProvider: internalAuthTokenProvider, headers: headers }),
86
+ data: data
87
+ });
88
+ }
89
+
90
+ /**
91
+ * DELETE /regions/:regionId - delete region.
92
+ * @param {Object} opts
93
+ * @param {string} [opts.token] - API key
94
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
95
+ * @param {string} opts.regionId - Region id
96
+ * @param {Object} [opts.headers] - Optional headers
97
+ * @returns {Promise<import("axios").AxiosResponse>}
98
+ */
99
+ function remove(_ref5) {
100
+ var token = _ref5.token,
101
+ jwtToken = _ref5.jwtToken,
102
+ regionId = _ref5.regionId,
103
+ headers = _ref5.headers;
104
+
105
+ return client({
106
+ url: "/regions/" + regionId,
107
+ method: "delete",
108
+ headers: authorizationHeaders({ token: token, jwtToken: jwtToken, internalAuthTokenProvider: internalAuthTokenProvider, headers: headers })
109
+ });
110
+ }
111
+
112
+ /**
113
+ * POST /regions - create region.
114
+ * @param {Object} opts
115
+ * @param {string} [opts.token] - API key
116
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
117
+ * @param {Object} opts.data - Region payload
118
+ * @param {Object} [opts.headers] - Optional headers
119
+ * @returns {Promise<import("axios").AxiosResponse>}
120
+ */
121
+ function create(_ref6) {
122
+ var token = _ref6.token,
123
+ jwtToken = _ref6.jwtToken,
124
+ data = _ref6.data,
125
+ headers = _ref6.headers;
126
+
127
+ return client({
128
+ url: "/regions",
129
+ method: "post",
130
+ headers: authorizationHeaders({ token: token, jwtToken: jwtToken, internalAuthTokenProvider: internalAuthTokenProvider, headers: headers }),
131
+ data: data
132
+ });
133
+ }
134
+
135
+ return {
136
+ all: all,
137
+ get: get,
138
+ update: update,
139
+ remove: remove,
140
+ create: create
141
+ };
142
+ }
143
+
144
+ module.exports = regionsFactory;
@@ -134,7 +134,8 @@ function transactionsFactory(_ref) {
134
134
  * @param {Object} opts
135
135
  * @param {string} [opts.token] - API key
136
136
  * @param {string} [opts.jwtToken] - JWT or internal auth symbol
137
- * @param {string} opts.transactionId - Transaction id
137
+ * @param {string} [opts.transactionId] - Transaction id
138
+ * @param {boolean} [opts.allEligibleTransactions] - When true, omit transactionIds to let backend expire all eligible transactions
138
139
  * @param {boolean} [opts.avoidEmail] - Whether to avoid sending email
139
140
  * @param {Object} [opts.headers] - Optional headers
140
141
  * @returns {Promise<import("axios").AxiosResponse>}
@@ -142,21 +143,28 @@ function transactionsFactory(_ref) {
142
143
  function expireAll(_ref7) {
143
144
  var jwtToken = _ref7.jwtToken,
144
145
  transactionId = _ref7.transactionId,
146
+ allEligibleTransactions = _ref7.allEligibleTransactions,
145
147
  avoidEmail = _ref7.avoidEmail,
146
148
  token = _ref7.token,
147
149
  headers = _ref7.headers;
148
150
 
151
+ var operation = {
152
+ name: "expire_payment",
153
+ avoidEmail: avoidEmail,
154
+ transactionIds: [transactionId]
155
+ };
156
+
157
+ if (allEligibleTransactions) {
158
+ delete operation.transactionIds;
159
+ }
160
+
149
161
  return client({
150
162
  url: "/transactions/status",
151
163
  method: "patch",
152
164
  params: {},
153
165
  headers: authorizationHeaders({ internalAuthTokenProvider: internalAuthTokenProvider, jwtToken: jwtToken, token: token, headers: headers }),
154
166
  data: {
155
- operation: {
156
- name: "expire_payment",
157
- transactionIds: [transactionId],
158
- avoidEmail: avoidEmail
159
- }
167
+ operation: operation
160
168
  }
161
169
  });
162
170
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "btrz-api-client",
3
- "version": "8.56.0",
3
+ "version": "8.58.0",
4
4
  "description": "Api client for Betterez endpoints",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/src/client.js CHANGED
@@ -128,6 +128,7 @@ function createInventory({baseURL, headers, timeout, overrideFn, internalAuthTok
128
128
  vehicles: require("./endpoints/inventory/vehicles.js")({client, internalAuthTokenProvider}),
129
129
  zonePriceOverages: require("./endpoints/inventory/zone-price-overages.js")({client, internalAuthTokenProvider}),
130
130
  zonePrices: require("./endpoints/inventory/zone-prices.js")({client, internalAuthTokenProvider}),
131
+ regions: require("./endpoints/inventory/regions.js")({client, internalAuthTokenProvider}),
131
132
  __test: {
132
133
  client
133
134
  }
@@ -0,0 +1,109 @@
1
+ const {authorizationHeaders} = require("../endpoints_helpers.js");
2
+
3
+ /**
4
+ * Factory for regions API (btrz-api-inventory).
5
+ * @param {Object} deps
6
+ * @param {import("axios").AxiosInstance} deps.client
7
+ * @param {{ getToken: function(): string }} [deps.internalAuthTokenProvider]
8
+ * @returns {{ all: function, get: function, update: function, remove: function, create: function }}
9
+ */
10
+ function regionsFactory({client, internalAuthTokenProvider}) {
11
+ /**
12
+ * GET /regions - list regions (paginated).
13
+ * @param {Object} opts
14
+ * @param {string} [opts.token] - API key
15
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
16
+ * @param {Object} [opts.query] - Query params (page, name, enabled)
17
+ * @param {Object} [opts.headers] - Optional headers
18
+ * @returns {Promise<import("axios").AxiosResponse>}
19
+ */
20
+ function all({token, jwtToken, query = {}, headers}) {
21
+ return client({
22
+ url: "/regions",
23
+ method: "get",
24
+ headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers}),
25
+ params: query
26
+ });
27
+ }
28
+
29
+ /**
30
+ * GET /regions/:regionId - get region by id.
31
+ * @param {Object} opts
32
+ * @param {string} [opts.token] - API key
33
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
34
+ * @param {string} opts.regionId - Region id
35
+ * @param {Object} [opts.headers] - Optional headers
36
+ * @returns {Promise<import("axios").AxiosResponse>}
37
+ */
38
+ function get({token, jwtToken, regionId, headers}) {
39
+ return client({
40
+ url: `/regions/${regionId}`,
41
+ method: "get",
42
+ headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers})
43
+ });
44
+ }
45
+
46
+ /**
47
+ * PUT /regions/:regionId - update region.
48
+ * @param {Object} opts
49
+ * @param {string} [opts.token] - API key
50
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
51
+ * @param {string} opts.regionId - Region id
52
+ * @param {Object} opts.data - Region payload
53
+ * @param {Object} [opts.headers] - Optional headers
54
+ * @returns {Promise<import("axios").AxiosResponse>}
55
+ */
56
+ function update({token, jwtToken, regionId, data, headers}) {
57
+ return client({
58
+ url: `/regions/${regionId}`,
59
+ method: "put",
60
+ headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers}),
61
+ data
62
+ });
63
+ }
64
+
65
+ /**
66
+ * DELETE /regions/:regionId - delete region.
67
+ * @param {Object} opts
68
+ * @param {string} [opts.token] - API key
69
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
70
+ * @param {string} opts.regionId - Region id
71
+ * @param {Object} [opts.headers] - Optional headers
72
+ * @returns {Promise<import("axios").AxiosResponse>}
73
+ */
74
+ function remove({token, jwtToken, regionId, headers}) {
75
+ return client({
76
+ url: `/regions/${regionId}`,
77
+ method: "delete",
78
+ headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers})
79
+ });
80
+ }
81
+
82
+ /**
83
+ * POST /regions - create region.
84
+ * @param {Object} opts
85
+ * @param {string} [opts.token] - API key
86
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
87
+ * @param {Object} opts.data - Region payload
88
+ * @param {Object} [opts.headers] - Optional headers
89
+ * @returns {Promise<import("axios").AxiosResponse>}
90
+ */
91
+ function create({token, jwtToken, data, headers}) {
92
+ return client({
93
+ url: "/regions",
94
+ method: "post",
95
+ headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers}),
96
+ data
97
+ });
98
+ }
99
+
100
+ return {
101
+ all,
102
+ get,
103
+ update,
104
+ remove,
105
+ create
106
+ };
107
+ }
108
+
109
+ module.exports = regionsFactory;
@@ -99,23 +99,30 @@ function transactionsFactory({client, internalAuthTokenProvider}) {
99
99
  * @param {Object} opts
100
100
  * @param {string} [opts.token] - API key
101
101
  * @param {string} [opts.jwtToken] - JWT or internal auth symbol
102
- * @param {string} opts.transactionId - Transaction id
102
+ * @param {string} [opts.transactionId] - Transaction id
103
+ * @param {boolean} [opts.allEligibleTransactions] - When true, omit transactionIds to let backend expire all eligible transactions
103
104
  * @param {boolean} [opts.avoidEmail] - Whether to avoid sending email
104
105
  * @param {Object} [opts.headers] - Optional headers
105
106
  * @returns {Promise<import("axios").AxiosResponse>}
106
107
  */
107
- function expireAll({jwtToken, transactionId, avoidEmail, token, headers}) {
108
+ function expireAll({jwtToken, transactionId, allEligibleTransactions, avoidEmail, token, headers}) {
109
+ const operation = {
110
+ name: "expire_payment",
111
+ avoidEmail,
112
+ transactionIds: [transactionId]
113
+ };
114
+
115
+ if (allEligibleTransactions) {
116
+ delete operation.transactionIds;
117
+ }
118
+
108
119
  return client({
109
120
  url: "/transactions/status",
110
121
  method: "patch",
111
122
  params: {},
112
123
  headers: authorizationHeaders({internalAuthTokenProvider, jwtToken, token, headers}),
113
124
  data: {
114
- operation: {
115
- name: "expire_payment",
116
- transactionIds: [transactionId],
117
- avoidEmail
118
- }
125
+ operation
119
126
  }
120
127
  });
121
128
  }
@@ -0,0 +1,50 @@
1
+ const {axiosMock, expectRequest} = require("./../../test-helpers.js");
2
+ const api = require("./../../../src/client.js").createApiClient({baseURL: "http://test.com"});
3
+
4
+ describe("inventory/regions", () => {
5
+ const token = "I owe you a token";
6
+ const jwtToken = "I owe you a JWT token";
7
+
8
+ afterEach(() => {
9
+ axiosMock.restore();
10
+ });
11
+
12
+ it("should list regions", () => {
13
+ axiosMock.onGet("/regions").reply(expectRequest({statusCode: 200, token, jwtToken}));
14
+ return api.inventory.regions.all({token, jwtToken});
15
+ });
16
+
17
+ it("should get a region", () => {
18
+ const regionId = "123123123123";
19
+ axiosMock.onGet(`/regions/${regionId}`).reply(expectRequest({statusCode: 200, token, jwtToken}));
20
+ return api.inventory.regions.get({token, jwtToken, regionId});
21
+ });
22
+
23
+ it("should create a region", () => {
24
+ axiosMock.onPost("/regions").reply(expectRequest({statusCode: 200, token, jwtToken}));
25
+ return api.inventory.regions.create({
26
+ jwtToken,
27
+ token,
28
+ data: {
29
+ name: "North",
30
+ enabled: true
31
+ }
32
+ });
33
+ });
34
+
35
+ it("should update a region", () => {
36
+ const regionId = "123123123123";
37
+ const data = {
38
+ name: "North",
39
+ enabled: false
40
+ };
41
+ axiosMock.onPut(`/regions/${regionId}`).reply(expectRequest({statusCode: 200, token, jwtToken}));
42
+ return api.inventory.regions.update({jwtToken, token, regionId, data});
43
+ });
44
+
45
+ it("should delete a region", () => {
46
+ const regionId = "123123123123";
47
+ axiosMock.onDelete(`/regions/${regionId}`).reply(expectRequest({statusCode: 200, token, jwtToken}));
48
+ return api.inventory.regions.remove({jwtToken, token, regionId});
49
+ });
50
+ });
@@ -113,7 +113,13 @@ describe("operations/transactions", function () {
113
113
  statusCode: 200,
114
114
  internalAuthTokenProvider,
115
115
  withoutApiKey: true,
116
- jwtToken: "internal_auth_token"
116
+ jwtToken: "internal_auth_token",
117
+ body: {
118
+ operation: {
119
+ name: "expire_payment",
120
+ transactionIds: [transactionId]
121
+ }
122
+ }
117
123
  }));
118
124
  return api.operations.transactions.expireAll({
119
125
  transactionId,
@@ -121,6 +127,42 @@ describe("operations/transactions", function () {
121
127
  });
122
128
  });
123
129
 
130
+ it("should keep existing payload behavior when transactionId is not provided", () => {
131
+ axiosMock.onPatch("/transactions/status").reply(expectRequest({
132
+ statusCode: 200,
133
+ internalAuthTokenProvider,
134
+ withoutApiKey: true,
135
+ jwtToken: "internal_auth_token",
136
+ body: {
137
+ operation: {
138
+ name: "expire_payment",
139
+ transactionIds: [null]
140
+ }
141
+ }
142
+ }));
143
+ return api.operations.transactions.expireAll({
144
+ jwtToken: "internal_auth_token"
145
+ });
146
+ });
147
+
148
+ it("should expire all eligible transactions only when explicitly requested", () => {
149
+ axiosMock.onPatch("/transactions/status").reply(expectRequest({
150
+ statusCode: 200,
151
+ internalAuthTokenProvider,
152
+ withoutApiKey: true,
153
+ jwtToken: "internal_auth_token",
154
+ body: {
155
+ operation: {
156
+ name: "expire_payment"
157
+ }
158
+ }
159
+ }));
160
+ return api.operations.transactions.expireAll({
161
+ jwtToken: "internal_auth_token",
162
+ allEligibleTransactions: true
163
+ });
164
+ });
165
+
124
166
 
125
167
  it("should add transaction invoice informations", function () {
126
168
  const transactionId = "transactionId2";