@omni-commerce/cli 0.4.0 → 0.6.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/dist/index.js CHANGED
@@ -108,6 +108,8 @@ function maskSecret(value) {
108
108
  }
109
109
 
110
110
  // src/execute.ts
111
+ import { readFile as readFile2 } from "fs/promises";
112
+ import { basename, extname } from "path";
111
113
  function interpolatePath(template, values) {
112
114
  return template.replace(/\{([^}]+)\}/g, (_, name) => {
113
115
  const value = values[name];
@@ -117,6 +119,37 @@ function interpolatePath(template, values) {
117
119
  return encodeURIComponent(value);
118
120
  });
119
121
  }
122
+ var UPLOAD_CONTENT_TYPES = {
123
+ ".pdf": "application/pdf",
124
+ ".csv": "text/csv",
125
+ ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
126
+ ".xlsm": "application/vnd.ms-excel.sheet.macroEnabled.12",
127
+ ".md": "text/markdown",
128
+ ".markdown": "text/markdown",
129
+ ".jpg": "image/jpeg",
130
+ ".jpeg": "image/jpeg",
131
+ ".png": "image/png",
132
+ ".webp": "image/webp",
133
+ ".avif": "image/avif",
134
+ ".heic": "image/heic",
135
+ ".heif": "image/heif"
136
+ };
137
+ async function uploadBody(filePath, fields) {
138
+ const form = new FormData();
139
+ const type = UPLOAD_CONTENT_TYPES[extname(filePath).toLowerCase()] ?? "application/octet-stream";
140
+ form.append(
141
+ "file",
142
+ new File([await readFile2(filePath)], basename(filePath), { type })
143
+ );
144
+ for (const [key, value] of Object.entries(fields)) {
145
+ if (value === void 0 || value === null) continue;
146
+ form.append(
147
+ key,
148
+ typeof value === "object" ? JSON.stringify(value) : String(value)
149
+ );
150
+ }
151
+ return form;
152
+ }
120
153
  function stringValue(value, flag) {
121
154
  if (typeof value !== "string" || value.trim() === "") {
122
155
  throw new Error(`Missing required flag --${flag}`);
@@ -146,6 +179,15 @@ async function executeCommand(client, command, request) {
146
179
  for (const [key, value] of Object.entries(request)) {
147
180
  if (!consumed.has(key)) body[key] = value;
148
181
  }
182
+ if (command.acceptsFile) {
183
+ const { file, ...fields } = body;
184
+ return client.request({
185
+ method: command.httpMethod,
186
+ path: interpolatePath(command.path, pathValues),
187
+ query: Object.keys(query).length > 0 ? query : void 0,
188
+ body: await uploadBody(stringValue(file, "file"), fields)
189
+ });
190
+ }
149
191
  return client.request({
150
192
  method: command.httpMethod,
151
193
  path: interpolatePath(command.path, pathValues),
@@ -204,6 +246,7 @@ var COMMANDS = [
204
246
  summary: "Invoke the Omni agent",
205
247
  flags: [],
206
248
  acceptsJsonBody: true,
249
+ acceptsFile: false,
207
250
  bodyRequired: true
208
251
  },
209
252
  {
@@ -215,6 +258,7 @@ var COMMANDS = [
215
258
  summary: "Start an Omni agent run",
216
259
  flags: [],
217
260
  acceptsJsonBody: true,
261
+ acceptsFile: false,
218
262
  bodyRequired: true
219
263
  },
220
264
  {
@@ -239,6 +283,7 @@ var COMMANDS = [
239
283
  }
240
284
  ],
241
285
  acceptsJsonBody: false,
286
+ acceptsFile: false,
242
287
  bodyRequired: false
243
288
  },
244
289
  {
@@ -299,6 +344,7 @@ var COMMANDS = [
299
344
  }
300
345
  ],
301
346
  acceptsJsonBody: false,
347
+ acceptsFile: false,
302
348
  bodyRequired: false
303
349
  },
304
350
  {
@@ -359,6 +405,7 @@ var COMMANDS = [
359
405
  }
360
406
  ],
361
407
  acceptsJsonBody: false,
408
+ acceptsFile: false,
362
409
  bodyRequired: false
363
410
  },
364
411
  {
@@ -419,6 +466,7 @@ var COMMANDS = [
419
466
  }
420
467
  ],
421
468
  acceptsJsonBody: false,
469
+ acceptsFile: false,
422
470
  bodyRequired: false
423
471
  },
424
472
  {
@@ -479,6 +527,7 @@ var COMMANDS = [
479
527
  }
480
528
  ],
481
529
  acceptsJsonBody: false,
530
+ acceptsFile: false,
482
531
  bodyRequired: false
483
532
  },
484
533
  {
@@ -539,6 +588,7 @@ var COMMANDS = [
539
588
  }
540
589
  ],
541
590
  acceptsJsonBody: false,
591
+ acceptsFile: false,
542
592
  bodyRequired: false
543
593
  },
544
594
  {
@@ -599,6 +649,7 @@ var COMMANDS = [
599
649
  }
600
650
  ],
601
651
  acceptsJsonBody: false,
652
+ acceptsFile: false,
602
653
  bodyRequired: false
603
654
  },
604
655
  {
@@ -677,6 +728,7 @@ var COMMANDS = [
677
728
  }
678
729
  ],
679
730
  acceptsJsonBody: false,
731
+ acceptsFile: false,
680
732
  bodyRequired: false
681
733
  },
682
734
  {
@@ -743,6 +795,7 @@ var COMMANDS = [
743
795
  }
744
796
  ],
745
797
  acceptsJsonBody: false,
798
+ acceptsFile: false,
746
799
  bodyRequired: false
747
800
  },
748
801
  {
@@ -803,6 +856,7 @@ var COMMANDS = [
803
856
  }
804
857
  ],
805
858
  acceptsJsonBody: false,
859
+ acceptsFile: false,
806
860
  bodyRequired: false
807
861
  },
808
862
  {
@@ -863,6 +917,7 @@ var COMMANDS = [
863
917
  }
864
918
  ],
865
919
  acceptsJsonBody: false,
920
+ acceptsFile: false,
866
921
  bodyRequired: false
867
922
  },
868
923
  {
@@ -923,6 +978,7 @@ var COMMANDS = [
923
978
  }
924
979
  ],
925
980
  acceptsJsonBody: false,
981
+ acceptsFile: false,
926
982
  bodyRequired: false
927
983
  },
928
984
  {
@@ -947,6 +1003,7 @@ var COMMANDS = [
947
1003
  }
948
1004
  ],
949
1005
  acceptsJsonBody: false,
1006
+ acceptsFile: false,
950
1007
  bodyRequired: false
951
1008
  },
952
1009
  {
@@ -965,6 +1022,7 @@ var COMMANDS = [
965
1022
  }
966
1023
  ],
967
1024
  acceptsJsonBody: true,
1025
+ acceptsFile: false,
968
1026
  bodyRequired: true
969
1027
  },
970
1028
  {
@@ -983,6 +1041,7 @@ var COMMANDS = [
983
1041
  }
984
1042
  ],
985
1043
  acceptsJsonBody: true,
1044
+ acceptsFile: false,
986
1045
  bodyRequired: false
987
1046
  },
988
1047
  {
@@ -994,6 +1053,7 @@ var COMMANDS = [
994
1053
  summary: "Create AOP",
995
1054
  flags: [],
996
1055
  acceptsJsonBody: true,
1056
+ acceptsFile: false,
997
1057
  bodyRequired: true
998
1058
  },
999
1059
  {
@@ -1005,6 +1065,19 @@ var COMMANDS = [
1005
1065
  summary: "Retry a failed AOP execution",
1006
1066
  flags: [],
1007
1067
  acceptsJsonBody: true,
1068
+ acceptsFile: false,
1069
+ bodyRequired: true
1070
+ },
1071
+ {
1072
+ trail: ["brandsgateway", "import-products"],
1073
+ resourcePath: ["brandsgateway"],
1074
+ methodName: "importProducts",
1075
+ httpMethod: "POST",
1076
+ path: "/api/v1/brandsgateway/import",
1077
+ summary: "Import BrandsGateway Products",
1078
+ flags: [],
1079
+ acceptsJsonBody: true,
1080
+ acceptsFile: false,
1008
1081
  bodyRequired: true
1009
1082
  },
1010
1083
  {
@@ -1047,6 +1120,7 @@ var COMMANDS = [
1047
1120
  }
1048
1121
  ],
1049
1122
  acceptsJsonBody: false,
1123
+ acceptsFile: false,
1050
1124
  bodyRequired: false
1051
1125
  },
1052
1126
  {
@@ -1058,6 +1132,7 @@ var COMMANDS = [
1058
1132
  summary: "Create Campaign",
1059
1133
  flags: [],
1060
1134
  acceptsJsonBody: true,
1135
+ acceptsFile: false,
1061
1136
  bodyRequired: true
1062
1137
  },
1063
1138
  {
@@ -1082,6 +1157,7 @@ var COMMANDS = [
1082
1157
  }
1083
1158
  ],
1084
1159
  acceptsJsonBody: false,
1160
+ acceptsFile: false,
1085
1161
  bodyRequired: false
1086
1162
  },
1087
1163
  {
@@ -1100,6 +1176,7 @@ var COMMANDS = [
1100
1176
  }
1101
1177
  ],
1102
1178
  acceptsJsonBody: true,
1179
+ acceptsFile: false,
1103
1180
  bodyRequired: true
1104
1181
  },
1105
1182
  {
@@ -1118,6 +1195,7 @@ var COMMANDS = [
1118
1195
  }
1119
1196
  ],
1120
1197
  acceptsJsonBody: true,
1198
+ acceptsFile: false,
1121
1199
  bodyRequired: true
1122
1200
  },
1123
1201
  {
@@ -1129,6 +1207,7 @@ var COMMANDS = [
1129
1207
  summary: "Archive Campaigns",
1130
1208
  flags: [],
1131
1209
  acceptsJsonBody: true,
1210
+ acceptsFile: false,
1132
1211
  bodyRequired: true
1133
1212
  },
1134
1213
  {
@@ -1140,6 +1219,7 @@ var COMMANDS = [
1140
1219
  summary: "Delete Campaigns",
1141
1220
  flags: [],
1142
1221
  acceptsJsonBody: true,
1222
+ acceptsFile: false,
1143
1223
  bodyRequired: true
1144
1224
  },
1145
1225
  {
@@ -1158,6 +1238,7 @@ var COMMANDS = [
1158
1238
  }
1159
1239
  ],
1160
1240
  acceptsJsonBody: false,
1241
+ acceptsFile: false,
1161
1242
  bodyRequired: false
1162
1243
  },
1163
1244
  {
@@ -1200,6 +1281,7 @@ var COMMANDS = [
1200
1281
  }
1201
1282
  ],
1202
1283
  acceptsJsonBody: false,
1284
+ acceptsFile: false,
1203
1285
  bodyRequired: false
1204
1286
  },
1205
1287
  {
@@ -1211,6 +1293,7 @@ var COMMANDS = [
1211
1293
  summary: "Create Agentic Checkout Session",
1212
1294
  flags: [],
1213
1295
  acceptsJsonBody: true,
1296
+ acceptsFile: false,
1214
1297
  bodyRequired: true
1215
1298
  },
1216
1299
  {
@@ -1235,6 +1318,7 @@ var COMMANDS = [
1235
1318
  }
1236
1319
  ],
1237
1320
  acceptsJsonBody: false,
1321
+ acceptsFile: false,
1238
1322
  bodyRequired: false
1239
1323
  },
1240
1324
  {
@@ -1259,6 +1343,7 @@ var COMMANDS = [
1259
1343
  }
1260
1344
  ],
1261
1345
  acceptsJsonBody: true,
1346
+ acceptsFile: false,
1262
1347
  bodyRequired: true
1263
1348
  },
1264
1349
  {
@@ -1283,6 +1368,7 @@ var COMMANDS = [
1283
1368
  }
1284
1369
  ],
1285
1370
  acceptsJsonBody: true,
1371
+ acceptsFile: false,
1286
1372
  bodyRequired: true
1287
1373
  },
1288
1374
  {
@@ -1307,6 +1393,7 @@ var COMMANDS = [
1307
1393
  }
1308
1394
  ],
1309
1395
  acceptsJsonBody: true,
1396
+ acceptsFile: false,
1310
1397
  bodyRequired: false
1311
1398
  },
1312
1399
  {
@@ -1331,6 +1418,7 @@ var COMMANDS = [
1331
1418
  }
1332
1419
  ],
1333
1420
  acceptsJsonBody: true,
1421
+ acceptsFile: false,
1334
1422
  bodyRequired: true
1335
1423
  },
1336
1424
  {
@@ -1355,6 +1443,7 @@ var COMMANDS = [
1355
1443
  }
1356
1444
  ],
1357
1445
  acceptsJsonBody: false,
1446
+ acceptsFile: false,
1358
1447
  bodyRequired: false
1359
1448
  },
1360
1449
  {
@@ -1366,6 +1455,44 @@ var COMMANDS = [
1366
1455
  summary: "List Public Merchants",
1367
1456
  flags: [],
1368
1457
  acceptsJsonBody: false,
1458
+ acceptsFile: false,
1459
+ bodyRequired: false
1460
+ },
1461
+ {
1462
+ trail: ["documents", "upload"],
1463
+ resourcePath: ["documents"],
1464
+ methodName: "upload",
1465
+ httpMethod: "POST",
1466
+ path: "/api/v1/documents",
1467
+ summary: "Upload Document",
1468
+ flags: [],
1469
+ acceptsJsonBody: true,
1470
+ acceptsFile: true,
1471
+ bodyRequired: true
1472
+ },
1473
+ {
1474
+ trail: ["documents", "get"],
1475
+ resourcePath: ["documents"],
1476
+ methodName: "get",
1477
+ httpMethod: "GET",
1478
+ path: "/api/v1/documents/{documentId}",
1479
+ summary: "Get Document",
1480
+ flags: [
1481
+ {
1482
+ name: "documentId",
1483
+ flag: "document-id",
1484
+ required: true,
1485
+ source: "path"
1486
+ },
1487
+ {
1488
+ name: "organizationId",
1489
+ flag: "organization-id",
1490
+ required: false,
1491
+ source: "query"
1492
+ }
1493
+ ],
1494
+ acceptsJsonBody: false,
1495
+ acceptsFile: false,
1369
1496
  bodyRequired: false
1370
1497
  },
1371
1498
  {
@@ -1377,6 +1504,7 @@ var COMMANDS = [
1377
1504
  summary: "Evaluate SKU Readiness",
1378
1505
  flags: [],
1379
1506
  acceptsJsonBody: true,
1507
+ acceptsFile: false,
1380
1508
  bodyRequired: false
1381
1509
  },
1382
1510
  {
@@ -1401,6 +1529,7 @@ var COMMANDS = [
1401
1529
  }
1402
1530
  ],
1403
1531
  acceptsJsonBody: false,
1532
+ acceptsFile: false,
1404
1533
  bodyRequired: false
1405
1534
  },
1406
1535
  {
@@ -1412,6 +1541,7 @@ var COMMANDS = [
1412
1541
  summary: "Generate Ghost Mannequin Image",
1413
1542
  flags: [],
1414
1543
  acceptsJsonBody: true,
1544
+ acceptsFile: false,
1415
1545
  bodyRequired: true
1416
1546
  },
1417
1547
  {
@@ -1436,6 +1566,7 @@ var COMMANDS = [
1436
1566
  }
1437
1567
  ],
1438
1568
  acceptsJsonBody: false,
1569
+ acceptsFile: false,
1439
1570
  bodyRequired: false
1440
1571
  },
1441
1572
  {
@@ -1454,6 +1585,7 @@ var COMMANDS = [
1454
1585
  }
1455
1586
  ],
1456
1587
  acceptsJsonBody: true,
1588
+ acceptsFile: false,
1457
1589
  bodyRequired: false
1458
1590
  },
1459
1591
  {
@@ -1490,6 +1622,7 @@ var COMMANDS = [
1490
1622
  }
1491
1623
  ],
1492
1624
  acceptsJsonBody: false,
1625
+ acceptsFile: false,
1493
1626
  bodyRequired: false
1494
1627
  },
1495
1628
  {
@@ -1501,6 +1634,7 @@ var COMMANDS = [
1501
1634
  summary: "Create Look",
1502
1635
  flags: [],
1503
1636
  acceptsJsonBody: true,
1637
+ acceptsFile: false,
1504
1638
  bodyRequired: true
1505
1639
  },
1506
1640
  {
@@ -1519,6 +1653,7 @@ var COMMANDS = [
1519
1653
  }
1520
1654
  ],
1521
1655
  acceptsJsonBody: false,
1656
+ acceptsFile: false,
1522
1657
  bodyRequired: false
1523
1658
  },
1524
1659
  {
@@ -1530,6 +1665,7 @@ var COMMANDS = [
1530
1665
  summary: "Recommend Marketplace Product Categories",
1531
1666
  flags: [],
1532
1667
  acceptsJsonBody: true,
1668
+ acceptsFile: false,
1533
1669
  bodyRequired: true
1534
1670
  },
1535
1671
  {
@@ -1560,6 +1696,7 @@ var COMMANDS = [
1560
1696
  }
1561
1697
  ],
1562
1698
  acceptsJsonBody: false,
1699
+ acceptsFile: false,
1563
1700
  bodyRequired: false
1564
1701
  },
1565
1702
  {
@@ -1578,6 +1715,7 @@ var COMMANDS = [
1578
1715
  }
1579
1716
  ],
1580
1717
  acceptsJsonBody: false,
1718
+ acceptsFile: false,
1581
1719
  bodyRequired: false
1582
1720
  },
1583
1721
  {
@@ -1626,6 +1764,7 @@ var COMMANDS = [
1626
1764
  }
1627
1765
  ],
1628
1766
  acceptsJsonBody: false,
1767
+ acceptsFile: false,
1629
1768
  bodyRequired: false
1630
1769
  },
1631
1770
  {
@@ -1722,6 +1861,7 @@ var COMMANDS = [
1722
1861
  }
1723
1862
  ],
1724
1863
  acceptsJsonBody: false,
1864
+ acceptsFile: false,
1725
1865
  bodyRequired: false
1726
1866
  },
1727
1867
  {
@@ -1733,6 +1873,7 @@ var COMMANDS = [
1733
1873
  summary: "Run AI Shelf Share Monitor",
1734
1874
  flags: [],
1735
1875
  acceptsJsonBody: true,
1876
+ acceptsFile: false,
1736
1877
  bodyRequired: false
1737
1878
  },
1738
1879
  {
@@ -1744,6 +1885,7 @@ var COMMANDS = [
1744
1885
  summary: "Revoke Access Token",
1745
1886
  flags: [],
1746
1887
  acceptsJsonBody: true,
1888
+ acceptsFile: false,
1747
1889
  bodyRequired: true
1748
1890
  },
1749
1891
  {
@@ -1755,6 +1897,7 @@ var COMMANDS = [
1755
1897
  summary: "Get Access Token",
1756
1898
  flags: [],
1757
1899
  acceptsJsonBody: true,
1900
+ acceptsFile: false,
1758
1901
  bodyRequired: true
1759
1902
  },
1760
1903
  {
@@ -1839,6 +1982,7 @@ var COMMANDS = [
1839
1982
  }
1840
1983
  ],
1841
1984
  acceptsJsonBody: false,
1985
+ acceptsFile: false,
1842
1986
  bodyRequired: false
1843
1987
  },
1844
1988
  {
@@ -1850,6 +1994,7 @@ var COMMANDS = [
1850
1994
  summary: "Create Order",
1851
1995
  flags: [],
1852
1996
  acceptsJsonBody: true,
1997
+ acceptsFile: false,
1853
1998
  bodyRequired: true
1854
1999
  },
1855
2000
  {
@@ -1874,6 +2019,7 @@ var COMMANDS = [
1874
2019
  }
1875
2020
  ],
1876
2021
  acceptsJsonBody: false,
2022
+ acceptsFile: false,
1877
2023
  bodyRequired: false
1878
2024
  },
1879
2025
  {
@@ -1892,6 +2038,7 @@ var COMMANDS = [
1892
2038
  }
1893
2039
  ],
1894
2040
  acceptsJsonBody: true,
2041
+ acceptsFile: false,
1895
2042
  bodyRequired: true
1896
2043
  },
1897
2044
  {
@@ -1922,6 +2069,7 @@ var COMMANDS = [
1922
2069
  }
1923
2070
  ],
1924
2071
  acceptsJsonBody: false,
2072
+ acceptsFile: false,
1925
2073
  bodyRequired: false
1926
2074
  },
1927
2075
  {
@@ -1946,6 +2094,7 @@ var COMMANDS = [
1946
2094
  }
1947
2095
  ],
1948
2096
  acceptsJsonBody: false,
2097
+ acceptsFile: false,
1949
2098
  bodyRequired: false
1950
2099
  },
1951
2100
  {
@@ -1964,6 +2113,7 @@ var COMMANDS = [
1964
2113
  }
1965
2114
  ],
1966
2115
  acceptsJsonBody: true,
2116
+ acceptsFile: false,
1967
2117
  bodyRequired: true
1968
2118
  },
1969
2119
  {
@@ -1975,6 +2125,7 @@ var COMMANDS = [
1975
2125
  summary: "Create Organization",
1976
2126
  flags: [],
1977
2127
  acceptsJsonBody: true,
2128
+ acceptsFile: false,
1978
2129
  bodyRequired: true
1979
2130
  },
1980
2131
  {
@@ -2005,6 +2156,7 @@ var COMMANDS = [
2005
2156
  }
2006
2157
  ],
2007
2158
  acceptsJsonBody: false,
2159
+ acceptsFile: false,
2008
2160
  bodyRequired: false
2009
2161
  },
2010
2162
  {
@@ -2016,6 +2168,7 @@ var COMMANDS = [
2016
2168
  summary: "Create Price Book Rule",
2017
2169
  flags: [],
2018
2170
  acceptsJsonBody: true,
2171
+ acceptsFile: false,
2019
2172
  bodyRequired: true
2020
2173
  },
2021
2174
  {
@@ -2040,6 +2193,7 @@ var COMMANDS = [
2040
2193
  }
2041
2194
  ],
2042
2195
  acceptsJsonBody: false,
2196
+ acceptsFile: false,
2043
2197
  bodyRequired: false
2044
2198
  },
2045
2199
  {
@@ -2064,6 +2218,7 @@ var COMMANDS = [
2064
2218
  }
2065
2219
  ],
2066
2220
  acceptsJsonBody: false,
2221
+ acceptsFile: false,
2067
2222
  bodyRequired: false
2068
2223
  },
2069
2224
  {
@@ -2088,6 +2243,7 @@ var COMMANDS = [
2088
2243
  }
2089
2244
  ],
2090
2245
  acceptsJsonBody: true,
2246
+ acceptsFile: false,
2091
2247
  bodyRequired: true
2092
2248
  },
2093
2249
  {
@@ -2099,6 +2255,7 @@ var COMMANDS = [
2099
2255
  summary: "Preview Channel List Price",
2100
2256
  flags: [],
2101
2257
  acceptsJsonBody: true,
2258
+ acceptsFile: false,
2102
2259
  bodyRequired: true
2103
2260
  },
2104
2261
  {
@@ -2171,6 +2328,7 @@ var COMMANDS = [
2171
2328
  }
2172
2329
  ],
2173
2330
  acceptsJsonBody: false,
2331
+ acceptsFile: false,
2174
2332
  bodyRequired: false
2175
2333
  },
2176
2334
  {
@@ -2182,6 +2340,7 @@ var COMMANDS = [
2182
2340
  summary: "Create Product",
2183
2341
  flags: [],
2184
2342
  acceptsJsonBody: true,
2343
+ acceptsFile: false,
2185
2344
  bodyRequired: true
2186
2345
  },
2187
2346
  {
@@ -2200,6 +2359,7 @@ var COMMANDS = [
2200
2359
  }
2201
2360
  ],
2202
2361
  acceptsJsonBody: false,
2362
+ acceptsFile: false,
2203
2363
  bodyRequired: false
2204
2364
  },
2205
2365
  {
@@ -2218,6 +2378,7 @@ var COMMANDS = [
2218
2378
  }
2219
2379
  ],
2220
2380
  acceptsJsonBody: false,
2381
+ acceptsFile: false,
2221
2382
  bodyRequired: false
2222
2383
  },
2223
2384
  {
@@ -2236,6 +2397,7 @@ var COMMANDS = [
2236
2397
  }
2237
2398
  ],
2238
2399
  acceptsJsonBody: true,
2400
+ acceptsFile: false,
2239
2401
  bodyRequired: true
2240
2402
  },
2241
2403
  {
@@ -2254,6 +2416,7 @@ var COMMANDS = [
2254
2416
  }
2255
2417
  ],
2256
2418
  acceptsJsonBody: true,
2419
+ acceptsFile: false,
2257
2420
  bodyRequired: true
2258
2421
  },
2259
2422
  {
@@ -2272,8 +2435,28 @@ var COMMANDS = [
2272
2435
  }
2273
2436
  ],
2274
2437
  acceptsJsonBody: true,
2438
+ acceptsFile: false,
2275
2439
  bodyRequired: false
2276
2440
  },
2441
+ {
2442
+ trail: ["products", "upload-image"],
2443
+ resourcePath: ["products"],
2444
+ methodName: "uploadImage",
2445
+ httpMethod: "POST",
2446
+ path: "/api/v1/products/{productId}/images",
2447
+ summary: "Upload Product Image",
2448
+ flags: [
2449
+ {
2450
+ name: "productId",
2451
+ flag: "product-id",
2452
+ required: true,
2453
+ source: "path"
2454
+ }
2455
+ ],
2456
+ acceptsJsonBody: true,
2457
+ acceptsFile: true,
2458
+ bodyRequired: true
2459
+ },
2277
2460
  {
2278
2461
  trail: ["products", "update-inventory"],
2279
2462
  resourcePath: ["products"],
@@ -2290,6 +2473,7 @@ var COMMANDS = [
2290
2473
  }
2291
2474
  ],
2292
2475
  acceptsJsonBody: true,
2476
+ acceptsFile: false,
2293
2477
  bodyRequired: true
2294
2478
  },
2295
2479
  {
@@ -2314,6 +2498,7 @@ var COMMANDS = [
2314
2498
  }
2315
2499
  ],
2316
2500
  acceptsJsonBody: false,
2501
+ acceptsFile: false,
2317
2502
  bodyRequired: false
2318
2503
  },
2319
2504
  {
@@ -2332,6 +2517,7 @@ var COMMANDS = [
2332
2517
  }
2333
2518
  ],
2334
2519
  acceptsJsonBody: true,
2520
+ acceptsFile: false,
2335
2521
  bodyRequired: true
2336
2522
  },
2337
2523
  {
@@ -2350,6 +2536,7 @@ var COMMANDS = [
2350
2536
  }
2351
2537
  ],
2352
2538
  acceptsJsonBody: true,
2539
+ acceptsFile: false,
2353
2540
  bodyRequired: false
2354
2541
  },
2355
2542
  {
@@ -2361,6 +2548,7 @@ var COMMANDS = [
2361
2548
  summary: "Bulk Import Products from JSON or CSV",
2362
2549
  flags: [],
2363
2550
  acceptsJsonBody: true,
2551
+ acceptsFile: false,
2364
2552
  bodyRequired: true
2365
2553
  },
2366
2554
  {
@@ -2372,6 +2560,7 @@ var COMMANDS = [
2372
2560
  summary: "Batch Update Product Cost",
2373
2561
  flags: [],
2374
2562
  acceptsJsonBody: true,
2563
+ acceptsFile: false,
2375
2564
  bodyRequired: true
2376
2565
  },
2377
2566
  {
@@ -2383,6 +2572,7 @@ var COMMANDS = [
2383
2572
  summary: "Queue Product Enrichment",
2384
2573
  flags: [],
2385
2574
  acceptsJsonBody: true,
2575
+ acceptsFile: false,
2386
2576
  bodyRequired: true
2387
2577
  },
2388
2578
  {
@@ -2449,6 +2639,7 @@ var COMMANDS = [
2449
2639
  }
2450
2640
  ],
2451
2641
  acceptsJsonBody: false,
2642
+ acceptsFile: false,
2452
2643
  bodyRequired: false
2453
2644
  },
2454
2645
  {
@@ -2460,6 +2651,7 @@ var COMMANDS = [
2460
2651
  summary: "Create Promotion",
2461
2652
  flags: [],
2462
2653
  acceptsJsonBody: true,
2654
+ acceptsFile: false,
2463
2655
  bodyRequired: true
2464
2656
  },
2465
2657
  {
@@ -2484,6 +2676,7 @@ var COMMANDS = [
2484
2676
  }
2485
2677
  ],
2486
2678
  acceptsJsonBody: false,
2679
+ acceptsFile: false,
2487
2680
  bodyRequired: false
2488
2681
  },
2489
2682
  {
@@ -2508,6 +2701,7 @@ var COMMANDS = [
2508
2701
  }
2509
2702
  ],
2510
2703
  acceptsJsonBody: false,
2704
+ acceptsFile: false,
2511
2705
  bodyRequired: false
2512
2706
  },
2513
2707
  {
@@ -2532,6 +2726,7 @@ var COMMANDS = [
2532
2726
  }
2533
2727
  ],
2534
2728
  acceptsJsonBody: true,
2729
+ acceptsFile: false,
2535
2730
  bodyRequired: true
2536
2731
  },
2537
2732
  {
@@ -2556,6 +2751,7 @@ var COMMANDS = [
2556
2751
  }
2557
2752
  ],
2558
2753
  acceptsJsonBody: true,
2754
+ acceptsFile: false,
2559
2755
  bodyRequired: true
2560
2756
  },
2561
2757
  {
@@ -2580,6 +2776,7 @@ var COMMANDS = [
2580
2776
  }
2581
2777
  ],
2582
2778
  acceptsJsonBody: false,
2779
+ acceptsFile: false,
2583
2780
  bodyRequired: false
2584
2781
  },
2585
2782
  {
@@ -2604,15 +2801,16 @@ var COMMANDS = [
2604
2801
  }
2605
2802
  ],
2606
2803
  acceptsJsonBody: true,
2804
+ acceptsFile: false,
2607
2805
  bodyRequired: true
2608
2806
  },
2609
2807
  {
2610
- trail: ["promotions", "sync"],
2808
+ trail: ["promotions", "retry"],
2611
2809
  resourcePath: ["promotions"],
2612
- methodName: "sync",
2810
+ methodName: "retry",
2613
2811
  httpMethod: "POST",
2614
- path: "/api/v1/promotions/{promotionId}/sync",
2615
- summary: "Sync Promotion to Marketplaces",
2812
+ path: "/api/v1/promotions/{promotionId}/retry",
2813
+ summary: "Retry Marketplace Delivery",
2616
2814
  flags: [
2617
2815
  {
2618
2816
  name: "promotionId",
@@ -2628,6 +2826,7 @@ var COMMANDS = [
2628
2826
  }
2629
2827
  ],
2630
2828
  acceptsJsonBody: true,
2829
+ acceptsFile: false,
2631
2830
  bodyRequired: true
2632
2831
  },
2633
2832
  {
@@ -2682,6 +2881,7 @@ var COMMANDS = [
2682
2881
  }
2683
2882
  ],
2684
2883
  acceptsJsonBody: false,
2884
+ acceptsFile: false,
2685
2885
  bodyRequired: false
2686
2886
  },
2687
2887
  {
@@ -2706,6 +2906,7 @@ var COMMANDS = [
2706
2906
  }
2707
2907
  ],
2708
2908
  acceptsJsonBody: false,
2909
+ acceptsFile: false,
2709
2910
  bodyRequired: false
2710
2911
  },
2711
2912
  {
@@ -2778,6 +2979,7 @@ var COMMANDS = [
2778
2979
  }
2779
2980
  ],
2780
2981
  acceptsJsonBody: false,
2982
+ acceptsFile: false,
2781
2983
  bodyRequired: false
2782
2984
  },
2783
2985
  {
@@ -2802,6 +3004,7 @@ var COMMANDS = [
2802
3004
  }
2803
3005
  ],
2804
3006
  acceptsJsonBody: false,
3007
+ acceptsFile: false,
2805
3008
  bodyRequired: false
2806
3009
  },
2807
3010
  {
@@ -2826,6 +3029,7 @@ var COMMANDS = [
2826
3029
  }
2827
3030
  ],
2828
3031
  acceptsJsonBody: true,
3032
+ acceptsFile: false,
2829
3033
  bodyRequired: false
2830
3034
  },
2831
3035
  {
@@ -2837,6 +3041,7 @@ var COMMANDS = [
2837
3041
  summary: "Act on Reviews",
2838
3042
  flags: [],
2839
3043
  acceptsJsonBody: true,
3044
+ acceptsFile: false,
2840
3045
  bodyRequired: true
2841
3046
  },
2842
3047
  {
@@ -2933,6 +3138,7 @@ var COMMANDS = [
2933
3138
  }
2934
3139
  ],
2935
3140
  acceptsJsonBody: false,
3141
+ acceptsFile: false,
2936
3142
  bodyRequired: false
2937
3143
  },
2938
3144
  {
@@ -3029,6 +3235,7 @@ var COMMANDS = [
3029
3235
  }
3030
3236
  ],
3031
3237
  acceptsJsonBody: true,
3238
+ acceptsFile: false,
3032
3239
  bodyRequired: false
3033
3240
  },
3034
3241
  {
@@ -3089,6 +3296,7 @@ var COMMANDS = [
3089
3296
  }
3090
3297
  ],
3091
3298
  acceptsJsonBody: false,
3299
+ acceptsFile: false,
3092
3300
  bodyRequired: false
3093
3301
  },
3094
3302
  {
@@ -3100,6 +3308,7 @@ var COMMANDS = [
3100
3308
  summary: "Apply Settlements",
3101
3309
  flags: [],
3102
3310
  acceptsJsonBody: true,
3311
+ acceptsFile: false,
3103
3312
  bodyRequired: true
3104
3313
  },
3105
3314
  {
@@ -3124,6 +3333,7 @@ var COMMANDS = [
3124
3333
  }
3125
3334
  ],
3126
3335
  acceptsJsonBody: false,
3336
+ acceptsFile: false,
3127
3337
  bodyRequired: false
3128
3338
  },
3129
3339
  {
@@ -3135,6 +3345,7 @@ var COMMANDS = [
3135
3345
  summary: "Sync Product Commercial Fields",
3136
3346
  flags: [],
3137
3347
  acceptsJsonBody: true,
3348
+ acceptsFile: false,
3138
3349
  bodyRequired: false
3139
3350
  },
3140
3351
  {
@@ -3165,6 +3376,7 @@ var COMMANDS = [
3165
3376
  }
3166
3377
  ],
3167
3378
  acceptsJsonBody: false,
3379
+ acceptsFile: false,
3168
3380
  bodyRequired: false
3169
3381
  },
3170
3382
  {
@@ -3207,6 +3419,7 @@ var COMMANDS = [
3207
3419
  }
3208
3420
  ],
3209
3421
  acceptsJsonBody: false,
3422
+ acceptsFile: false,
3210
3423
  bodyRequired: false
3211
3424
  },
3212
3425
  {
@@ -3218,6 +3431,7 @@ var COMMANDS = [
3218
3431
  summary: "List Developer Webhooks",
3219
3432
  flags: [],
3220
3433
  acceptsJsonBody: false,
3434
+ acceptsFile: false,
3221
3435
  bodyRequired: false
3222
3436
  },
3223
3437
  {
@@ -3229,6 +3443,7 @@ var COMMANDS = [
3229
3443
  summary: "Create Developer Webhook",
3230
3444
  flags: [],
3231
3445
  acceptsJsonBody: true,
3446
+ acceptsFile: false,
3232
3447
  bodyRequired: true
3233
3448
  },
3234
3449
  {
@@ -3265,6 +3480,7 @@ var COMMANDS = [
3265
3480
  }
3266
3481
  ],
3267
3482
  acceptsJsonBody: false,
3483
+ acceptsFile: false,
3268
3484
  bodyRequired: false
3269
3485
  },
3270
3486
  {
@@ -3276,6 +3492,7 @@ var COMMANDS = [
3276
3492
  summary: "Import Selected Zalora Products",
3277
3493
  flags: [],
3278
3494
  acceptsJsonBody: true,
3495
+ acceptsFile: false,
3279
3496
  bodyRequired: true
3280
3497
  },
3281
3498
  {
@@ -3287,6 +3504,7 @@ var COMMANDS = [
3287
3504
  summary: "Create UCP Checkout Session",
3288
3505
  flags: [],
3289
3506
  acceptsJsonBody: true,
3507
+ acceptsFile: false,
3290
3508
  bodyRequired: true
3291
3509
  },
3292
3510
  {
@@ -3311,6 +3529,7 @@ var COMMANDS = [
3311
3529
  }
3312
3530
  ],
3313
3531
  acceptsJsonBody: false,
3532
+ acceptsFile: false,
3314
3533
  bodyRequired: false
3315
3534
  },
3316
3535
  {
@@ -3335,6 +3554,7 @@ var COMMANDS = [
3335
3554
  }
3336
3555
  ],
3337
3556
  acceptsJsonBody: true,
3557
+ acceptsFile: false,
3338
3558
  bodyRequired: true
3339
3559
  },
3340
3560
  {
@@ -3359,6 +3579,7 @@ var COMMANDS = [
3359
3579
  }
3360
3580
  ],
3361
3581
  acceptsJsonBody: true,
3582
+ acceptsFile: false,
3362
3583
  bodyRequired: true
3363
3584
  },
3364
3585
  {
@@ -3383,6 +3604,7 @@ var COMMANDS = [
3383
3604
  }
3384
3605
  ],
3385
3606
  acceptsJsonBody: true,
3607
+ acceptsFile: false,
3386
3608
  bodyRequired: false
3387
3609
  },
3388
3610
  {
@@ -3407,6 +3629,7 @@ var COMMANDS = [
3407
3629
  }
3408
3630
  ],
3409
3631
  acceptsJsonBody: true,
3632
+ acceptsFile: false,
3410
3633
  bodyRequired: true
3411
3634
  },
3412
3635
  {
@@ -3431,6 +3654,7 @@ var COMMANDS = [
3431
3654
  }
3432
3655
  ],
3433
3656
  acceptsJsonBody: false,
3657
+ acceptsFile: false,
3434
3658
  bodyRequired: false
3435
3659
  },
3436
3660
  {
@@ -3455,6 +3679,7 @@ var COMMANDS = [
3455
3679
  }
3456
3680
  ],
3457
3681
  acceptsJsonBody: false,
3682
+ acceptsFile: false,
3458
3683
  bodyRequired: false
3459
3684
  }
3460
3685
  ];
@@ -3497,8 +3722,8 @@ function printCommandHelp(command) {
3497
3722
  const req = flag.required ? "required" : "optional";
3498
3723
  return ` --${flag.flag} <${flag.name}> ${req} ${flag.source}`;
3499
3724
  }).join("\n");
3500
- const jsonLine = command.acceptsJsonBody ? ` --json <object|-> ${command.bodyRequired ? "required" : "optional"} body
3501
- ` : "";
3725
+ const jsonLine = `${command.acceptsFile ? " --file <path> required file to upload\n" : ""}${command.acceptsJsonBody ? ` --json <object|-> ${command.bodyRequired && !command.acceptsFile ? "required" : "optional"} body
3726
+ ` : ""}`;
3502
3727
  return `omni ${command.trail.join(" ")}
3503
3728
 
3504
3729
  ${command.summary}
@@ -3519,7 +3744,7 @@ function matchCommands(commands, trail) {
3519
3744
  }
3520
3745
 
3521
3746
  // src/version.ts
3522
- var CLI_VERSION = "0.4.0";
3747
+ var CLI_VERSION = "0.6.0";
3523
3748
 
3524
3749
  // src/run.ts
3525
3750
  async function readStdin() {
@@ -3639,10 +3864,15 @@ ${unique.map((line) => ` omni ${line}`).join("\n")}
3639
3864
  return 0;
3640
3865
  }
3641
3866
  const body = await parseJsonBody(flagString(parsed.flags, "json"));
3642
- if (command.bodyRequired && !body) {
3867
+ const filePath = command.acceptsFile ? flagString(parsed.flags, "file") : void 0;
3868
+ if (command.acceptsFile && !filePath) {
3869
+ throw new Error(`omni ${command.trail.join(" ")} requires --file <path>`);
3870
+ }
3871
+ if (command.bodyRequired && !body && !filePath) {
3643
3872
  throw new Error(`omni ${command.trail.join(" ")} requires --json`);
3644
3873
  }
3645
3874
  const request = buildRequest(command, parsed.flags, body);
3875
+ if (filePath) request.file = filePath;
3646
3876
  if (parsed.dryRun) {
3647
3877
  process.stdout.write(
3648
3878
  `${JSON.stringify(