shipbob-node-sdk 0.0.1 → 0.0.3

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/dist/index.js ADDED
@@ -0,0 +1,358 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createShipBobApi = exports.ReturnAction = exports.PackagingMaterial = exports.PackagingRequirement = exports.WebhookTopic = void 0;
4
+ /* eslint-disable @typescript-eslint/consistent-type-definitions */
5
+ const node_url_1 = require("node:url"); // WHATWG
6
+ var WebhookTopic;
7
+ (function (WebhookTopic) {
8
+ WebhookTopic["OrderShipped"] = "order_shipped";
9
+ WebhookTopic["ShipmentDelivered"] = "shipment_delivered";
10
+ WebhookTopic["ShipmentException"] = "shipment_exception";
11
+ WebhookTopic["ShipmentOnHold"] = "shipment_onhold";
12
+ WebhookTopic["ShipmentCancelled"] = "shipment_cancelled";
13
+ })(WebhookTopic || (exports.WebhookTopic = WebhookTopic = {}));
14
+ // ShipBob is potentially extending 2.0 publicly
15
+ // see /docs/Product Catalog API Examples.pdf
16
+ const PATH_1_0_CHANNEL = '/1.0/channel';
17
+ const PATH_1_0_PRODUCT = '/1.0/product';
18
+ const PATH_2_0_PRODUCT = '/2.0/product';
19
+ const PATH_1_0_ORDER = '/1.0/order';
20
+ /**
21
+ * Warehouse Receiving Order
22
+ */
23
+ const PATH_2_0_RECEIVING = '/2.0/receiving';
24
+ /**
25
+ * Note part of API docs
26
+ */
27
+ const PATH_2_0_RECEIVING_EXTENDED = '/2.0/receiving-extended';
28
+ /**
29
+ * Warehouse Receiving Order
30
+ */
31
+ const PATH_EXPERIMENTAL_RECEIVING = '/experimental/receiving';
32
+ const PATH_1_0_INVENTORY = '/1.0/inventory';
33
+ const PATH_1_0_FULFILLMENT_CENTER = '/1.0/fulfillmentCenter';
34
+ const PATH_1_0_WEBHOOK = '/1.0/webhook';
35
+ const PATH_2_0_SIMULATE = '/2.0/simulate';
36
+ var PackagingRequirement;
37
+ (function (PackagingRequirement) {
38
+ // wrong spelling in PDF
39
+ PackagingRequirement[PackagingRequirement["No Requirements"] = 1] = "No Requirements";
40
+ PackagingRequirement[PackagingRequirement["Fragile"] = 2] = "Fragile";
41
+ PackagingRequirement[PackagingRequirement["Is Foldable"] = 3] = "Is Foldable";
42
+ PackagingRequirement[PackagingRequirement["Is Media (Media mail)"] = 4] = "Is Media (Media mail)";
43
+ PackagingRequirement[PackagingRequirement["Is Book"] = 5] = "Is Book";
44
+ PackagingRequirement[PackagingRequirement["Is Poster"] = 6] = "Is Poster";
45
+ PackagingRequirement[PackagingRequirement["Is Apparel"] = 7] = "Is Apparel";
46
+ PackagingRequirement[PackagingRequirement["Is Packaging Material (for custom boxes, marketing inserts, etc)"] = 8] = "Is Packaging Material (for custom boxes, marketing inserts, etc)";
47
+ PackagingRequirement[PackagingRequirement["Ship In Own Container"] = 9] = "Ship In Own Container";
48
+ })(PackagingRequirement || (exports.PackagingRequirement = PackagingRequirement = {}));
49
+ var PackagingMaterial;
50
+ (function (PackagingMaterial) {
51
+ PackagingMaterial[PackagingMaterial["Box"] = 1] = "Box";
52
+ PackagingMaterial[PackagingMaterial["Bubble Mailer"] = 2] = "Bubble Mailer";
53
+ PackagingMaterial[PackagingMaterial["Poly Mailer"] = 3] = "Poly Mailer";
54
+ // no 4 in PDF
55
+ PackagingMaterial[PackagingMaterial["Poster Tube"] = 5] = "Poster Tube";
56
+ PackagingMaterial[PackagingMaterial["Custom Box"] = 6] = "Custom Box";
57
+ PackagingMaterial[PackagingMaterial["Bookfold"] = 7] = "Bookfold";
58
+ PackagingMaterial[PackagingMaterial["Ship In Own Container"] = 8] = "Ship In Own Container";
59
+ PackagingMaterial[PackagingMaterial["Custom Bubble Mailer"] = 9] = "Custom Bubble Mailer";
60
+ PackagingMaterial[PackagingMaterial["Custom Poly Mailer"] = 10] = "Custom Poly Mailer";
61
+ })(PackagingMaterial || (exports.PackagingMaterial = PackagingMaterial = {}));
62
+ /**
63
+ * Restock (1)
64
+ * Quarantine (2)
65
+ * Dispose (3)
66
+ */
67
+ var ReturnAction;
68
+ (function (ReturnAction) {
69
+ /**
70
+ * Restock (1)
71
+ */
72
+ ReturnAction[ReturnAction["Restock"] = 1] = "Restock";
73
+ /**
74
+ * Quarantine (2)
75
+ */
76
+ ReturnAction[ReturnAction["Quarantine"] = 2] = "Quarantine";
77
+ /**
78
+ * Dispose (3)
79
+ */
80
+ ReturnAction[ReturnAction["Dispose"] = 3] = "Dispose";
81
+ })(ReturnAction || (exports.ReturnAction = ReturnAction = {}));
82
+ /**
83
+ * Create API with PAT (personal access token) - defaults to sandbox endpoints and "SMA" channel.
84
+ *
85
+ * NOTE: We used token based auth, so did not need to implement the other auth mechanism(s).
86
+ *
87
+ * TODO: Consider adding global parameters like timeout (or per method). Some endpoints are slower than others.
88
+ *
89
+ * @param personalAccessToken passing *undefined* or empty string has a guar clause that will throw
90
+ * @param apiBaseUrl
91
+ * @param channelApplicationName
92
+ * @returns
93
+ */
94
+ const createShipBobApi = async (personalAccessToken, apiBaseUrl = 'sandbox-api.shipbob.com', channelApplicationName = 'SMA' /*, authBaseUrl = 'authstage.shipbob.com'*/) => {
95
+ if (personalAccessToken === undefined || personalAccessToken === '') {
96
+ throw new Error('Cannot create a ShipBob API without a PAT');
97
+ }
98
+ const credentials = {
99
+ token: personalAccessToken,
100
+ };
101
+ /**
102
+ * Will GET using our PAT and SAM channel
103
+ */
104
+ const httpGet = async (credentials, path, query) => {
105
+ const url = new node_url_1.URL(`https://${apiBaseUrl}${path}`);
106
+ if (query) {
107
+ for (const param of Object.keys(query)) {
108
+ // the number[] is probably wrong
109
+ const val = typeof query[param] === 'string' ? query[param] : query[param].toString();
110
+ url.searchParams.set(param, val);
111
+ }
112
+ }
113
+ const res = await fetch(url.href, {
114
+ method: 'GET',
115
+ headers: {
116
+ Authorization: `Bearer ${credentials.token}`,
117
+ 'Content-Type': 'application/json',
118
+ Accept: 'application/json',
119
+ 'User-Agent': 'shipbob-node-sdk',
120
+ },
121
+ // signal: AbortSignal.timeout(60 * 1000) Node 20 only
122
+ });
123
+ if (res.ok) {
124
+ return {
125
+ success: true,
126
+ statusCode: res.status,
127
+ data: (await res.json()),
128
+ };
129
+ }
130
+ else {
131
+ switch (res.status) {
132
+ case 400:
133
+ case 422:
134
+ return {
135
+ success: false,
136
+ statusCode: res.status,
137
+ data: await res.json(),
138
+ };
139
+ default:
140
+ return {
141
+ success: false,
142
+ statusCode: res.status,
143
+ data: await res.text(),
144
+ };
145
+ }
146
+ }
147
+ };
148
+ /**
149
+ * Will default POST to Shipbob a request as JSON. Can be used for any type of request
150
+ */
151
+ const httpData = async (credentials, data, path, method = 'POST') => {
152
+ if (credentials.channelId === undefined) {
153
+ throw new Error('Channel ID missing');
154
+ }
155
+ const url = new node_url_1.URL(`https://${apiBaseUrl}${path}`);
156
+ const res = await fetch(url.href, {
157
+ method,
158
+ headers: {
159
+ Authorization: `Bearer ${credentials.token}`,
160
+ 'Content-Type': 'application/json',
161
+ Accept: 'application/json',
162
+ 'User-Agent': 'shipbob-node-sdk',
163
+ },
164
+ body: data !== undefined ? JSON.stringify(data) : undefined,
165
+ // signal: AbortSignal.timeout(60 * 1000) Node 20 only
166
+ });
167
+ if (res.ok) {
168
+ // NOTE: should check content-type of response
169
+ return {
170
+ success: true,
171
+ statusCode: res.status,
172
+ data: (await res.json()),
173
+ };
174
+ }
175
+ else {
176
+ switch (res.status) {
177
+ case 400:
178
+ case 422:
179
+ return {
180
+ success: false,
181
+ statusCode: res.status,
182
+ data: await res.json(),
183
+ };
184
+ default:
185
+ return {
186
+ success: false,
187
+ statusCode: res.status,
188
+ data: await res.text(),
189
+ };
190
+ }
191
+ }
192
+ };
193
+ const channelsResponse = await httpGet(credentials, PATH_1_0_CHANNEL);
194
+ if (!channelsResponse.success) {
195
+ throw new Error(`${channelsResponse.statusCode} '${channelsResponse.data}'`);
196
+ }
197
+ const smaChannel = channelsResponse.data.find((c) => c.application_name === channelApplicationName);
198
+ if (smaChannel === undefined) {
199
+ throw new Error(`Did not find SMA channel {${channelsResponse.data.map((c) => c.application_name).join(',')}}`);
200
+ }
201
+ credentials.channelId = smaChannel.id;
202
+ return {
203
+ getProductById: async (productId) => {
204
+ // productId would need to be URL encoded - not for us, it's just numeric digits
205
+ // NOTE: /1.0/product/888290263059
206
+ // ERROR: {"productId":["The value '888290263059' is not valid."]}
207
+ const getProductResult = await httpGet(credentials, `${PATH_1_0_PRODUCT}/${productId}`);
208
+ console.log('get product:', getProductResult.success, getProductResult.success === false ? getProductResult.statusCode : 'found');
209
+ return getProductResult;
210
+ },
211
+ getProducts1_0: async (query) => {
212
+ const getProductResult = await httpGet(credentials, PATH_1_0_PRODUCT, query);
213
+ console.log('get product 1.0:', getProductResult.success, getProductResult.success === false ? getProductResult.statusCode : 'found');
214
+ return getProductResult;
215
+ },
216
+ /**
217
+ * NOTE: we can probably pass more than "variants" prop. We could on the /1.0/product endpoint
218
+ * NOTE: This PATCH functionality will be available in the next version available in ShipBob next large release January 2025, it may require extra scope.
219
+ */
220
+ updateProducts2_0: async (productId, variants) => {
221
+ console.log('variants', variants);
222
+ const updateProduct2Response = await httpData(credentials, {
223
+ variants,
224
+ }, `${PATH_2_0_PRODUCT}/${productId}`, 'PATCH');
225
+ return updateProduct2Response;
226
+ },
227
+ /**
228
+ * Not supported here, but:
229
+ * Some search filters allow for operators (equals, not equals, starts with, ends with, contains, etc) to get more exact values. When filtering with an operator, the query string will look like the below:
230
+ * Example: /product?{filter}={operator}:{value}
231
+ * Example: /product?sku=any:shirt-a,shirt-b,shirt-c Find products that match any of these SKUs
232
+ * Example: /product?onHandQuantity=gt:0 Find products where OnHandQty greater than 0
233
+ */
234
+ getProducts2_0: async (query) => {
235
+ const getProductResult = await httpGet(credentials, PATH_2_0_PRODUCT, query);
236
+ console.log('get product 2.0:', getProductResult.success, getProductResult.success === false ? getProductResult.statusCode : 'found');
237
+ return getProductResult;
238
+ },
239
+ createProduct1_0: async (product) => {
240
+ const createProductResponse = await httpData(credentials, product, PATH_1_0_PRODUCT);
241
+ console.log(' > Created product:', createProductResponse.success ? createProductResponse.data.reference_id : 'failed');
242
+ return createProductResponse;
243
+ },
244
+ /**
245
+ * The request part for variant is not accurate. This is just for testing - there are no official docs.
246
+ */
247
+ createProduct2_0: async (product) => {
248
+ const createProductResponse = await httpData(credentials, product, PATH_2_0_PRODUCT);
249
+ console.log(' > Created product:', createProductResponse.success ? createProductResponse.data.reference_id : 'failed');
250
+ return createProductResponse;
251
+ },
252
+ placeOrder: async (order) => {
253
+ const placeOrderResponse = await httpData(credentials, order, PATH_1_0_ORDER);
254
+ console.log('place order:', placeOrderResponse);
255
+ return placeOrderResponse;
256
+ },
257
+ /**
258
+ * Cancel single Order by Order Id
259
+ *
260
+ * @param orderId The order Id to cancel
261
+ */
262
+ cancelSingleOrderByOrderId: async (orderId) => {
263
+ const placeOrderResponse = await httpData(credentials, undefined, `${PATH_1_0_ORDER}/${orderId}/cancel`);
264
+ console.log('place order:', placeOrderResponse);
265
+ return placeOrderResponse;
266
+ },
267
+ getWebhooks: async () => {
268
+ const webhooks = await httpGet(credentials, PATH_1_0_WEBHOOK);
269
+ console.log('webhooks:', webhooks);
270
+ return webhooks;
271
+ },
272
+ createWebhookSubscription: async (webhook) => {
273
+ const createdWebhook = await httpData(credentials, webhook, PATH_1_0_WEBHOOK);
274
+ return createdWebhook;
275
+ },
276
+ getFulfillmentCenters: async () => {
277
+ const fulfillmentCenters = await httpGet(credentials, PATH_1_0_FULFILLMENT_CENTER);
278
+ console.log('fulfillment centers:', fulfillmentCenters);
279
+ return fulfillmentCenters;
280
+ },
281
+ createWarehouseReceivingOrder: async (request) => {
282
+ const createdWRO = await httpData(credentials, request, PATH_2_0_RECEIVING);
283
+ return createdWRO;
284
+ },
285
+ getWarehouseReceivingOrder: async (orderId) => {
286
+ const wro = await httpGet(credentials, `${PATH_2_0_RECEIVING}/${orderId}`);
287
+ return wro;
288
+ },
289
+ getWarehouseReceivingOrderBoxes: async (orderId) => {
290
+ const wroBoxes = await httpGet(credentials, `${PATH_2_0_RECEIVING}/${orderId}/boxes`);
291
+ return wroBoxes;
292
+ },
293
+ /**
294
+ * NOTE: should verify that response matches 1.0 product endpoint
295
+ */
296
+ getReceivingExtended: async (query) => {
297
+ const getReceivingExtendedResult = await httpGet(credentials, PATH_2_0_RECEIVING_EXTENDED, query);
298
+ console.log('get receiving extended:', getReceivingExtendedResult.success, getReceivingExtendedResult.success === false ? getReceivingExtendedResult.statusCode : 'found');
299
+ return getReceivingExtendedResult;
300
+ },
301
+ /**
302
+ * This must be for setting/clearing if it has been synced externally.
303
+ *
304
+ * Use case is interop via searching for "completed" that are not yet synced.
305
+ *
306
+ * NOTE: this is tagged experimental, so might change or be dropped
307
+ */
308
+ experimentalReceivingSetExternalSync: async (ids, isExternalSync) => {
309
+ console.log(`Setting: ${ids.join(',')} to external sync: ${isExternalSync}`);
310
+ const response = await httpData(credentials, {
311
+ ids,
312
+ is_external_sync: isExternalSync,
313
+ }, `${PATH_EXPERIMENTAL_RECEIVING}/:set-external-sync`);
314
+ if (response.success) {
315
+ for (const result of response.data.results) {
316
+ console.log(` > ${result.id} ${result.action}. Success: ${result.is_success} Reason:'${result.reason}'`);
317
+ }
318
+ console.log('');
319
+ }
320
+ return response;
321
+ },
322
+ /**
323
+ * NOTE: should verify the response type matches the product 1.0 endpoint
324
+ */
325
+ listInventory: async (query) => {
326
+ const getInventoryResult = await httpGet(credentials, PATH_1_0_INVENTORY, query);
327
+ console.log('get inventory:', getInventoryResult.success, getInventoryResult.success === false ? getInventoryResult.statusCode : 'found');
328
+ return getInventoryResult;
329
+ },
330
+ /**
331
+ * Only for sandbox: https://developer.shipbob.com/sandbox-simulations/
332
+ *
333
+ * NOTE: generates a 200 instead of a 201 like everywhere else
334
+ */
335
+ simulateShipment: async (request) => {
336
+ const result = await httpData(credentials, request, `${PATH_2_0_SIMULATE}/shipment`);
337
+ if (result.success) {
338
+ console.log('simulate shipment sent', result.data.simulation_id, result.data.message);
339
+ }
340
+ else {
341
+ console.log('simulate shipment failed:', result.data);
342
+ }
343
+ return result;
344
+ },
345
+ /**
346
+ *
347
+ * Only for sandbox: https://developer.shipbob.com/sandbox-simulations/
348
+ *
349
+ * @param simulationId UUID from "/2.0/simulate/shipment" call
350
+ */
351
+ getSimulationStatus: async (simulationId) => {
352
+ const result = await httpGet(credentials, `${PATH_2_0_SIMULATE}/status/${simulationId}`);
353
+ return result;
354
+ },
355
+ };
356
+ };
357
+ exports.createShipBobApi = createShipBobApi;
358
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "shipbob-node-sdk",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "ShipBob API node SDK",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
7
+ "type": "commonjs",
7
8
  "scripts": {
8
- "prebuild": "rimraf dist && eslint && prettier \"**/*.ts\" --check",
9
+ "prebuild": "rimraf dist && eslint . --ignore-pattern generated/ && prettier \"**/*.ts\" --check",
9
10
  "build": "tsc",
10
- "lint": "eslint .",
11
+ "lint": "eslint . --ignore-pattern generated/",
11
12
  "prettier:write": "prettier \"**/*.ts\" --write",
12
13
  "generate:client": "openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true",
13
14
  "test": "mocha"
package/.prettierignore DELETED
@@ -1,3 +0,0 @@
1
- /dist
2
- /generated
3
- /.vscode
package/.prettierrc DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "printWidth": 120,
3
- "bracketSameLine": false,
4
- "singleQuote": true,
5
- "tabWidth": 2,
6
- "trailingComma": "es5",
7
- "semi": true,
8
- "endOfLine": "lf"
9
- }
package/eslint.config.mjs DELETED
@@ -1,13 +0,0 @@
1
- import eslint from "@eslint/js";
2
- import tseslint from "typescript-eslint";
3
-
4
- export default tseslint.config(
5
- eslint.configs.recommended,
6
- ...tseslint.configs.recommended,
7
- ...tseslint.configs.stylistic,
8
- {
9
- rules: {
10
- "@typescript-eslint/consistent-type-definitions": "warn"
11
- }
12
- }
13
- );