1 | |
2 | type Square = { |
3 | token: string; |
4 | }; |
5 | |
6 | * BatchChangeInventory |
7 | * Applies adjustments and counts to the provided item quantities. |
8 |
|
9 | On success: returns the current calculated counts for all objects |
10 | referenced in the request. |
11 | On failure: returns a list of related errors. |
12 | */ |
13 | export async function main( |
14 | auth: Square, |
15 | body: { |
16 | idempotency_key: string; |
17 | changes?: { |
18 | type?: "PHYSICAL_COUNT" | "ADJUSTMENT" | "TRANSFER"; |
19 | physical_count?: { |
20 | id?: string; |
21 | reference_id?: string; |
22 | catalog_object_id?: string; |
23 | catalog_object_type?: string; |
24 | state?: |
25 | | "CUSTOM" |
26 | | "IN_STOCK" |
27 | | "SOLD" |
28 | | "RETURNED_BY_CUSTOMER" |
29 | | "RESERVED_FOR_SALE" |
30 | | "SOLD_ONLINE" |
31 | | "ORDERED_FROM_VENDOR" |
32 | | "RECEIVED_FROM_VENDOR" |
33 | | "IN_TRANSIT_TO" |
34 | | "NONE" |
35 | | "WASTE" |
36 | | "UNLINKED_RETURN" |
37 | | "COMPOSED" |
38 | | "DECOMPOSED" |
39 | | "SUPPORTED_BY_NEWER_VERSION" |
40 | | "IN_TRANSIT"; |
41 | location_id?: string; |
42 | quantity?: string; |
43 | source?: { |
44 | product?: |
45 | | "SQUARE_POS" |
46 | | "EXTERNAL_API" |
47 | | "BILLING" |
48 | | "APPOINTMENTS" |
49 | | "INVOICES" |
50 | | "ONLINE_STORE" |
51 | | "PAYROLL" |
52 | | "DASHBOARD" |
53 | | "ITEM_LIBRARY_IMPORT" |
54 | | "OTHER"; |
55 | application_id?: string; |
56 | name?: string; |
57 | }; |
58 | employee_id?: string; |
59 | team_member_id?: string; |
60 | occurred_at?: string; |
61 | created_at?: string; |
62 | }; |
63 | adjustment?: { |
64 | id?: string; |
65 | reference_id?: string; |
66 | from_state?: |
67 | | "CUSTOM" |
68 | | "IN_STOCK" |
69 | | "SOLD" |
70 | | "RETURNED_BY_CUSTOMER" |
71 | | "RESERVED_FOR_SALE" |
72 | | "SOLD_ONLINE" |
73 | | "ORDERED_FROM_VENDOR" |
74 | | "RECEIVED_FROM_VENDOR" |
75 | | "IN_TRANSIT_TO" |
76 | | "NONE" |
77 | | "WASTE" |
78 | | "UNLINKED_RETURN" |
79 | | "COMPOSED" |
80 | | "DECOMPOSED" |
81 | | "SUPPORTED_BY_NEWER_VERSION" |
82 | | "IN_TRANSIT"; |
83 | to_state?: |
84 | | "CUSTOM" |
85 | | "IN_STOCK" |
86 | | "SOLD" |
87 | | "RETURNED_BY_CUSTOMER" |
88 | | "RESERVED_FOR_SALE" |
89 | | "SOLD_ONLINE" |
90 | | "ORDERED_FROM_VENDOR" |
91 | | "RECEIVED_FROM_VENDOR" |
92 | | "IN_TRANSIT_TO" |
93 | | "NONE" |
94 | | "WASTE" |
95 | | "UNLINKED_RETURN" |
96 | | "COMPOSED" |
97 | | "DECOMPOSED" |
98 | | "SUPPORTED_BY_NEWER_VERSION" |
99 | | "IN_TRANSIT"; |
100 | location_id?: string; |
101 | catalog_object_id?: string; |
102 | catalog_object_type?: string; |
103 | quantity?: string; |
104 | total_price_money?: { |
105 | amount?: number; |
106 | currency?: |
107 | | "UNKNOWN_CURRENCY" |
108 | | "AED" |
109 | | "AFN" |
110 | | "ALL" |
111 | | "AMD" |
112 | | "ANG" |
113 | | "AOA" |
114 | | "ARS" |
115 | | "AUD" |
116 | | "AWG" |
117 | | "AZN" |
118 | | "BAM" |
119 | | "BBD" |
120 | | "BDT" |
121 | | "BGN" |
122 | | "BHD" |
123 | | "BIF" |
124 | | "BMD" |
125 | | "BND" |
126 | | "BOB" |
127 | | "BOV" |
128 | | "BRL" |
129 | | "BSD" |
130 | | "BTN" |
131 | | "BWP" |
132 | | "BYR" |
133 | | "BZD" |
134 | | "CAD" |
135 | | "CDF" |
136 | | "CHE" |
137 | | "CHF" |
138 | | "CHW" |
139 | | "CLF" |
140 | | "CLP" |
141 | | "CNY" |
142 | | "COP" |
143 | | "COU" |
144 | | "CRC" |
145 | | "CUC" |
146 | | "CUP" |
147 | | "CVE" |
148 | | "CZK" |
149 | | "DJF" |
150 | | "DKK" |
151 | | "DOP" |
152 | | "DZD" |
153 | | "EGP" |
154 | | "ERN" |
155 | | "ETB" |
156 | | "EUR" |
157 | | "FJD" |
158 | | "FKP" |
159 | | "GBP" |
160 | | "GEL" |
161 | | "GHS" |
162 | | "GIP" |
163 | | "GMD" |
164 | | "GNF" |
165 | | "GTQ" |
166 | | "GYD" |
167 | | "HKD" |
168 | | "HNL" |
169 | | "HRK" |
170 | | "HTG" |
171 | | "HUF" |
172 | | "IDR" |
173 | | "ILS" |
174 | | "INR" |
175 | | "IQD" |
176 | | "IRR" |
177 | | "ISK" |
178 | | "JMD" |
179 | | "JOD" |
180 | | "JPY" |
181 | | "KES" |
182 | | "KGS" |
183 | | "KHR" |
184 | | "KMF" |
185 | | "KPW" |
186 | | "KRW" |
187 | | "KWD" |
188 | | "KYD" |
189 | | "KZT" |
190 | | "LAK" |
191 | | "LBP" |
192 | | "LKR" |
193 | | "LRD" |
194 | | "LSL" |
195 | | "LTL" |
196 | | "LVL" |
197 | | "LYD" |
198 | | "MAD" |
199 | | "MDL" |
200 | | "MGA" |
201 | | "MKD" |
202 | | "MMK" |
203 | | "MNT" |
204 | | "MOP" |
205 | | "MRO" |
206 | | "MUR" |
207 | | "MVR" |
208 | | "MWK" |
209 | | "MXN" |
210 | | "MXV" |
211 | | "MYR" |
212 | | "MZN" |
213 | | "NAD" |
214 | | "NGN" |
215 | | "NIO" |
216 | | "NOK" |
217 | | "NPR" |
218 | | "NZD" |
219 | | "OMR" |
220 | | "PAB" |
221 | | "PEN" |
222 | | "PGK" |
223 | | "PHP" |
224 | | "PKR" |
225 | | "PLN" |
226 | | "PYG" |
227 | | "QAR" |
228 | | "RON" |
229 | | "RSD" |
230 | | "RUB" |
231 | | "RWF" |
232 | | "SAR" |
233 | | "SBD" |
234 | | "SCR" |
235 | | "SDG" |
236 | | "SEK" |
237 | | "SGD" |
238 | | "SHP" |
239 | | "SLL" |
240 | | "SLE" |
241 | | "SOS" |
242 | | "SRD" |
243 | | "SSP" |
244 | | "STD" |
245 | | "SVC" |
246 | | "SYP" |
247 | | "SZL" |
248 | | "THB" |
249 | | "TJS" |
250 | | "TMT" |
251 | | "TND" |
252 | | "TOP" |
253 | | "TRY" |
254 | | "TTD" |
255 | | "TWD" |
256 | | "TZS" |
257 | | "UAH" |
258 | | "UGX" |
259 | | "USD" |
260 | | "USN" |
261 | | "USS" |
262 | | "UYI" |
263 | | "UYU" |
264 | | "UZS" |
265 | | "VEF" |
266 | | "VND" |
267 | | "VUV" |
268 | | "WST" |
269 | | "XAF" |
270 | | "XAG" |
271 | | "XAU" |
272 | | "XBA" |
273 | | "XBB" |
274 | | "XBC" |
275 | | "XBD" |
276 | | "XCD" |
277 | | "XDR" |
278 | | "XOF" |
279 | | "XPD" |
280 | | "XPF" |
281 | | "XPT" |
282 | | "XTS" |
283 | | "XXX" |
284 | | "YER" |
285 | | "ZAR" |
286 | | "ZMK" |
287 | | "ZMW" |
288 | | "BTC" |
289 | | "XUS"; |
290 | }; |
291 | occurred_at?: string; |
292 | created_at?: string; |
293 | source?: { |
294 | product?: |
295 | | "SQUARE_POS" |
296 | | "EXTERNAL_API" |
297 | | "BILLING" |
298 | | "APPOINTMENTS" |
299 | | "INVOICES" |
300 | | "ONLINE_STORE" |
301 | | "PAYROLL" |
302 | | "DASHBOARD" |
303 | | "ITEM_LIBRARY_IMPORT" |
304 | | "OTHER"; |
305 | application_id?: string; |
306 | name?: string; |
307 | }; |
308 | employee_id?: string; |
309 | team_member_id?: string; |
310 | transaction_id?: string; |
311 | refund_id?: string; |
312 | purchase_order_id?: string; |
313 | goods_receipt_id?: string; |
314 | adjustment_group?: { |
315 | id?: string; |
316 | root_adjustment_id?: string; |
317 | from_state?: |
318 | | "CUSTOM" |
319 | | "IN_STOCK" |
320 | | "SOLD" |
321 | | "RETURNED_BY_CUSTOMER" |
322 | | "RESERVED_FOR_SALE" |
323 | | "SOLD_ONLINE" |
324 | | "ORDERED_FROM_VENDOR" |
325 | | "RECEIVED_FROM_VENDOR" |
326 | | "IN_TRANSIT_TO" |
327 | | "NONE" |
328 | | "WASTE" |
329 | | "UNLINKED_RETURN" |
330 | | "COMPOSED" |
331 | | "DECOMPOSED" |
332 | | "SUPPORTED_BY_NEWER_VERSION" |
333 | | "IN_TRANSIT"; |
334 | to_state?: |
335 | | "CUSTOM" |
336 | | "IN_STOCK" |
337 | | "SOLD" |
338 | | "RETURNED_BY_CUSTOMER" |
339 | | "RESERVED_FOR_SALE" |
340 | | "SOLD_ONLINE" |
341 | | "ORDERED_FROM_VENDOR" |
342 | | "RECEIVED_FROM_VENDOR" |
343 | | "IN_TRANSIT_TO" |
344 | | "NONE" |
345 | | "WASTE" |
346 | | "UNLINKED_RETURN" |
347 | | "COMPOSED" |
348 | | "DECOMPOSED" |
349 | | "SUPPORTED_BY_NEWER_VERSION" |
350 | | "IN_TRANSIT"; |
351 | }; |
352 | }; |
353 | transfer?: { |
354 | id?: string; |
355 | reference_id?: string; |
356 | state?: |
357 | | "CUSTOM" |
358 | | "IN_STOCK" |
359 | | "SOLD" |
360 | | "RETURNED_BY_CUSTOMER" |
361 | | "RESERVED_FOR_SALE" |
362 | | "SOLD_ONLINE" |
363 | | "ORDERED_FROM_VENDOR" |
364 | | "RECEIVED_FROM_VENDOR" |
365 | | "IN_TRANSIT_TO" |
366 | | "NONE" |
367 | | "WASTE" |
368 | | "UNLINKED_RETURN" |
369 | | "COMPOSED" |
370 | | "DECOMPOSED" |
371 | | "SUPPORTED_BY_NEWER_VERSION" |
372 | | "IN_TRANSIT"; |
373 | from_location_id?: string; |
374 | to_location_id?: string; |
375 | catalog_object_id?: string; |
376 | catalog_object_type?: string; |
377 | quantity?: string; |
378 | occurred_at?: string; |
379 | created_at?: string; |
380 | source?: { |
381 | product?: |
382 | | "SQUARE_POS" |
383 | | "EXTERNAL_API" |
384 | | "BILLING" |
385 | | "APPOINTMENTS" |
386 | | "INVOICES" |
387 | | "ONLINE_STORE" |
388 | | "PAYROLL" |
389 | | "DASHBOARD" |
390 | | "ITEM_LIBRARY_IMPORT" |
391 | | "OTHER"; |
392 | application_id?: string; |
393 | name?: string; |
394 | }; |
395 | employee_id?: string; |
396 | team_member_id?: string; |
397 | }; |
398 | measurement_unit?: { |
399 | measurement_unit?: { |
400 | custom_unit?: { name: string; abbreviation: string }; |
401 | area_unit?: |
402 | | "IMPERIAL_ACRE" |
403 | | "IMPERIAL_SQUARE_INCH" |
404 | | "IMPERIAL_SQUARE_FOOT" |
405 | | "IMPERIAL_SQUARE_YARD" |
406 | | "IMPERIAL_SQUARE_MILE" |
407 | | "METRIC_SQUARE_CENTIMETER" |
408 | | "METRIC_SQUARE_METER" |
409 | | "METRIC_SQUARE_KILOMETER"; |
410 | length_unit?: |
411 | | "IMPERIAL_INCH" |
412 | | "IMPERIAL_FOOT" |
413 | | "IMPERIAL_YARD" |
414 | | "IMPERIAL_MILE" |
415 | | "METRIC_MILLIMETER" |
416 | | "METRIC_CENTIMETER" |
417 | | "METRIC_METER" |
418 | | "METRIC_KILOMETER"; |
419 | volume_unit?: |
420 | | "GENERIC_FLUID_OUNCE" |
421 | | "GENERIC_SHOT" |
422 | | "GENERIC_CUP" |
423 | | "GENERIC_PINT" |
424 | | "GENERIC_QUART" |
425 | | "GENERIC_GALLON" |
426 | | "IMPERIAL_CUBIC_INCH" |
427 | | "IMPERIAL_CUBIC_FOOT" |
428 | | "IMPERIAL_CUBIC_YARD" |
429 | | "METRIC_MILLILITER" |
430 | | "METRIC_LITER"; |
431 | weight_unit?: |
432 | | "IMPERIAL_WEIGHT_OUNCE" |
433 | | "IMPERIAL_POUND" |
434 | | "IMPERIAL_STONE" |
435 | | "METRIC_MILLIGRAM" |
436 | | "METRIC_GRAM" |
437 | | "METRIC_KILOGRAM"; |
438 | generic_unit?: "UNIT"; |
439 | time_unit?: |
440 | | "GENERIC_MILLISECOND" |
441 | | "GENERIC_SECOND" |
442 | | "GENERIC_MINUTE" |
443 | | "GENERIC_HOUR" |
444 | | "GENERIC_DAY"; |
445 | type?: |
446 | | "TYPE_CUSTOM" |
447 | | "TYPE_AREA" |
448 | | "TYPE_LENGTH" |
449 | | "TYPE_VOLUME" |
450 | | "TYPE_WEIGHT" |
451 | | "TYPE_GENERIC"; |
452 | }; |
453 | precision?: number; |
454 | }; |
455 | measurement_unit_id?: string; |
456 | }[]; |
457 | ignore_unchanged_counts?: false | true; |
458 | }, |
459 | ) { |
460 | const url = new URL( |
461 | `https://connect.squareup.com/v2/inventory/changes/batch-create`, |
462 | ); |
463 |
|
464 | const response = await fetch(url, { |
465 | method: "POST", |
466 | headers: { |
467 | "Content-Type": "application/json", |
468 | Authorization: "Bearer " + auth.token, |
469 | }, |
470 | body: JSON.stringify(body), |
471 | }); |
472 | if (!response.ok) { |
473 | const text = await response.text(); |
474 | throw new Error(`${response.status} ${text}`); |
475 | } |
476 | return await response.json(); |
477 | } |
478 |
|