@omni-commerce/cli 0.4.0 → 0.5.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,7 @@ var COMMANDS = [
1005
1065
  summary: "Retry a failed AOP execution",
1006
1066
  flags: [],
1007
1067
  acceptsJsonBody: true,
1068
+ acceptsFile: false,
1008
1069
  bodyRequired: true
1009
1070
  },
1010
1071
  {
@@ -1047,6 +1108,7 @@ var COMMANDS = [
1047
1108
  }
1048
1109
  ],
1049
1110
  acceptsJsonBody: false,
1111
+ acceptsFile: false,
1050
1112
  bodyRequired: false
1051
1113
  },
1052
1114
  {
@@ -1058,6 +1120,7 @@ var COMMANDS = [
1058
1120
  summary: "Create Campaign",
1059
1121
  flags: [],
1060
1122
  acceptsJsonBody: true,
1123
+ acceptsFile: false,
1061
1124
  bodyRequired: true
1062
1125
  },
1063
1126
  {
@@ -1082,6 +1145,7 @@ var COMMANDS = [
1082
1145
  }
1083
1146
  ],
1084
1147
  acceptsJsonBody: false,
1148
+ acceptsFile: false,
1085
1149
  bodyRequired: false
1086
1150
  },
1087
1151
  {
@@ -1100,6 +1164,7 @@ var COMMANDS = [
1100
1164
  }
1101
1165
  ],
1102
1166
  acceptsJsonBody: true,
1167
+ acceptsFile: false,
1103
1168
  bodyRequired: true
1104
1169
  },
1105
1170
  {
@@ -1118,6 +1183,7 @@ var COMMANDS = [
1118
1183
  }
1119
1184
  ],
1120
1185
  acceptsJsonBody: true,
1186
+ acceptsFile: false,
1121
1187
  bodyRequired: true
1122
1188
  },
1123
1189
  {
@@ -1129,6 +1195,7 @@ var COMMANDS = [
1129
1195
  summary: "Archive Campaigns",
1130
1196
  flags: [],
1131
1197
  acceptsJsonBody: true,
1198
+ acceptsFile: false,
1132
1199
  bodyRequired: true
1133
1200
  },
1134
1201
  {
@@ -1140,6 +1207,7 @@ var COMMANDS = [
1140
1207
  summary: "Delete Campaigns",
1141
1208
  flags: [],
1142
1209
  acceptsJsonBody: true,
1210
+ acceptsFile: false,
1143
1211
  bodyRequired: true
1144
1212
  },
1145
1213
  {
@@ -1158,6 +1226,7 @@ var COMMANDS = [
1158
1226
  }
1159
1227
  ],
1160
1228
  acceptsJsonBody: false,
1229
+ acceptsFile: false,
1161
1230
  bodyRequired: false
1162
1231
  },
1163
1232
  {
@@ -1200,6 +1269,7 @@ var COMMANDS = [
1200
1269
  }
1201
1270
  ],
1202
1271
  acceptsJsonBody: false,
1272
+ acceptsFile: false,
1203
1273
  bodyRequired: false
1204
1274
  },
1205
1275
  {
@@ -1211,6 +1281,7 @@ var COMMANDS = [
1211
1281
  summary: "Create Agentic Checkout Session",
1212
1282
  flags: [],
1213
1283
  acceptsJsonBody: true,
1284
+ acceptsFile: false,
1214
1285
  bodyRequired: true
1215
1286
  },
1216
1287
  {
@@ -1235,6 +1306,7 @@ var COMMANDS = [
1235
1306
  }
1236
1307
  ],
1237
1308
  acceptsJsonBody: false,
1309
+ acceptsFile: false,
1238
1310
  bodyRequired: false
1239
1311
  },
1240
1312
  {
@@ -1259,6 +1331,7 @@ var COMMANDS = [
1259
1331
  }
1260
1332
  ],
1261
1333
  acceptsJsonBody: true,
1334
+ acceptsFile: false,
1262
1335
  bodyRequired: true
1263
1336
  },
1264
1337
  {
@@ -1283,6 +1356,7 @@ var COMMANDS = [
1283
1356
  }
1284
1357
  ],
1285
1358
  acceptsJsonBody: true,
1359
+ acceptsFile: false,
1286
1360
  bodyRequired: true
1287
1361
  },
1288
1362
  {
@@ -1307,6 +1381,7 @@ var COMMANDS = [
1307
1381
  }
1308
1382
  ],
1309
1383
  acceptsJsonBody: true,
1384
+ acceptsFile: false,
1310
1385
  bodyRequired: false
1311
1386
  },
1312
1387
  {
@@ -1331,6 +1406,7 @@ var COMMANDS = [
1331
1406
  }
1332
1407
  ],
1333
1408
  acceptsJsonBody: true,
1409
+ acceptsFile: false,
1334
1410
  bodyRequired: true
1335
1411
  },
1336
1412
  {
@@ -1355,6 +1431,7 @@ var COMMANDS = [
1355
1431
  }
1356
1432
  ],
1357
1433
  acceptsJsonBody: false,
1434
+ acceptsFile: false,
1358
1435
  bodyRequired: false
1359
1436
  },
1360
1437
  {
@@ -1366,6 +1443,44 @@ var COMMANDS = [
1366
1443
  summary: "List Public Merchants",
1367
1444
  flags: [],
1368
1445
  acceptsJsonBody: false,
1446
+ acceptsFile: false,
1447
+ bodyRequired: false
1448
+ },
1449
+ {
1450
+ trail: ["documents", "upload"],
1451
+ resourcePath: ["documents"],
1452
+ methodName: "upload",
1453
+ httpMethod: "POST",
1454
+ path: "/api/v1/documents",
1455
+ summary: "Upload Document",
1456
+ flags: [],
1457
+ acceptsJsonBody: true,
1458
+ acceptsFile: true,
1459
+ bodyRequired: true
1460
+ },
1461
+ {
1462
+ trail: ["documents", "get"],
1463
+ resourcePath: ["documents"],
1464
+ methodName: "get",
1465
+ httpMethod: "GET",
1466
+ path: "/api/v1/documents/{documentId}",
1467
+ summary: "Get Document",
1468
+ flags: [
1469
+ {
1470
+ name: "documentId",
1471
+ flag: "document-id",
1472
+ required: true,
1473
+ source: "path"
1474
+ },
1475
+ {
1476
+ name: "organizationId",
1477
+ flag: "organization-id",
1478
+ required: false,
1479
+ source: "query"
1480
+ }
1481
+ ],
1482
+ acceptsJsonBody: false,
1483
+ acceptsFile: false,
1369
1484
  bodyRequired: false
1370
1485
  },
1371
1486
  {
@@ -1377,6 +1492,7 @@ var COMMANDS = [
1377
1492
  summary: "Evaluate SKU Readiness",
1378
1493
  flags: [],
1379
1494
  acceptsJsonBody: true,
1495
+ acceptsFile: false,
1380
1496
  bodyRequired: false
1381
1497
  },
1382
1498
  {
@@ -1401,6 +1517,7 @@ var COMMANDS = [
1401
1517
  }
1402
1518
  ],
1403
1519
  acceptsJsonBody: false,
1520
+ acceptsFile: false,
1404
1521
  bodyRequired: false
1405
1522
  },
1406
1523
  {
@@ -1412,6 +1529,7 @@ var COMMANDS = [
1412
1529
  summary: "Generate Ghost Mannequin Image",
1413
1530
  flags: [],
1414
1531
  acceptsJsonBody: true,
1532
+ acceptsFile: false,
1415
1533
  bodyRequired: true
1416
1534
  },
1417
1535
  {
@@ -1436,6 +1554,7 @@ var COMMANDS = [
1436
1554
  }
1437
1555
  ],
1438
1556
  acceptsJsonBody: false,
1557
+ acceptsFile: false,
1439
1558
  bodyRequired: false
1440
1559
  },
1441
1560
  {
@@ -1454,6 +1573,7 @@ var COMMANDS = [
1454
1573
  }
1455
1574
  ],
1456
1575
  acceptsJsonBody: true,
1576
+ acceptsFile: false,
1457
1577
  bodyRequired: false
1458
1578
  },
1459
1579
  {
@@ -1490,6 +1610,7 @@ var COMMANDS = [
1490
1610
  }
1491
1611
  ],
1492
1612
  acceptsJsonBody: false,
1613
+ acceptsFile: false,
1493
1614
  bodyRequired: false
1494
1615
  },
1495
1616
  {
@@ -1501,6 +1622,7 @@ var COMMANDS = [
1501
1622
  summary: "Create Look",
1502
1623
  flags: [],
1503
1624
  acceptsJsonBody: true,
1625
+ acceptsFile: false,
1504
1626
  bodyRequired: true
1505
1627
  },
1506
1628
  {
@@ -1519,6 +1641,7 @@ var COMMANDS = [
1519
1641
  }
1520
1642
  ],
1521
1643
  acceptsJsonBody: false,
1644
+ acceptsFile: false,
1522
1645
  bodyRequired: false
1523
1646
  },
1524
1647
  {
@@ -1530,6 +1653,7 @@ var COMMANDS = [
1530
1653
  summary: "Recommend Marketplace Product Categories",
1531
1654
  flags: [],
1532
1655
  acceptsJsonBody: true,
1656
+ acceptsFile: false,
1533
1657
  bodyRequired: true
1534
1658
  },
1535
1659
  {
@@ -1560,6 +1684,7 @@ var COMMANDS = [
1560
1684
  }
1561
1685
  ],
1562
1686
  acceptsJsonBody: false,
1687
+ acceptsFile: false,
1563
1688
  bodyRequired: false
1564
1689
  },
1565
1690
  {
@@ -1578,6 +1703,7 @@ var COMMANDS = [
1578
1703
  }
1579
1704
  ],
1580
1705
  acceptsJsonBody: false,
1706
+ acceptsFile: false,
1581
1707
  bodyRequired: false
1582
1708
  },
1583
1709
  {
@@ -1626,6 +1752,7 @@ var COMMANDS = [
1626
1752
  }
1627
1753
  ],
1628
1754
  acceptsJsonBody: false,
1755
+ acceptsFile: false,
1629
1756
  bodyRequired: false
1630
1757
  },
1631
1758
  {
@@ -1722,6 +1849,7 @@ var COMMANDS = [
1722
1849
  }
1723
1850
  ],
1724
1851
  acceptsJsonBody: false,
1852
+ acceptsFile: false,
1725
1853
  bodyRequired: false
1726
1854
  },
1727
1855
  {
@@ -1733,6 +1861,7 @@ var COMMANDS = [
1733
1861
  summary: "Run AI Shelf Share Monitor",
1734
1862
  flags: [],
1735
1863
  acceptsJsonBody: true,
1864
+ acceptsFile: false,
1736
1865
  bodyRequired: false
1737
1866
  },
1738
1867
  {
@@ -1744,6 +1873,7 @@ var COMMANDS = [
1744
1873
  summary: "Revoke Access Token",
1745
1874
  flags: [],
1746
1875
  acceptsJsonBody: true,
1876
+ acceptsFile: false,
1747
1877
  bodyRequired: true
1748
1878
  },
1749
1879
  {
@@ -1755,6 +1885,7 @@ var COMMANDS = [
1755
1885
  summary: "Get Access Token",
1756
1886
  flags: [],
1757
1887
  acceptsJsonBody: true,
1888
+ acceptsFile: false,
1758
1889
  bodyRequired: true
1759
1890
  },
1760
1891
  {
@@ -1839,6 +1970,7 @@ var COMMANDS = [
1839
1970
  }
1840
1971
  ],
1841
1972
  acceptsJsonBody: false,
1973
+ acceptsFile: false,
1842
1974
  bodyRequired: false
1843
1975
  },
1844
1976
  {
@@ -1850,6 +1982,7 @@ var COMMANDS = [
1850
1982
  summary: "Create Order",
1851
1983
  flags: [],
1852
1984
  acceptsJsonBody: true,
1985
+ acceptsFile: false,
1853
1986
  bodyRequired: true
1854
1987
  },
1855
1988
  {
@@ -1874,6 +2007,7 @@ var COMMANDS = [
1874
2007
  }
1875
2008
  ],
1876
2009
  acceptsJsonBody: false,
2010
+ acceptsFile: false,
1877
2011
  bodyRequired: false
1878
2012
  },
1879
2013
  {
@@ -1892,6 +2026,7 @@ var COMMANDS = [
1892
2026
  }
1893
2027
  ],
1894
2028
  acceptsJsonBody: true,
2029
+ acceptsFile: false,
1895
2030
  bodyRequired: true
1896
2031
  },
1897
2032
  {
@@ -1922,6 +2057,7 @@ var COMMANDS = [
1922
2057
  }
1923
2058
  ],
1924
2059
  acceptsJsonBody: false,
2060
+ acceptsFile: false,
1925
2061
  bodyRequired: false
1926
2062
  },
1927
2063
  {
@@ -1946,6 +2082,7 @@ var COMMANDS = [
1946
2082
  }
1947
2083
  ],
1948
2084
  acceptsJsonBody: false,
2085
+ acceptsFile: false,
1949
2086
  bodyRequired: false
1950
2087
  },
1951
2088
  {
@@ -1964,6 +2101,7 @@ var COMMANDS = [
1964
2101
  }
1965
2102
  ],
1966
2103
  acceptsJsonBody: true,
2104
+ acceptsFile: false,
1967
2105
  bodyRequired: true
1968
2106
  },
1969
2107
  {
@@ -1975,6 +2113,7 @@ var COMMANDS = [
1975
2113
  summary: "Create Organization",
1976
2114
  flags: [],
1977
2115
  acceptsJsonBody: true,
2116
+ acceptsFile: false,
1978
2117
  bodyRequired: true
1979
2118
  },
1980
2119
  {
@@ -2005,6 +2144,7 @@ var COMMANDS = [
2005
2144
  }
2006
2145
  ],
2007
2146
  acceptsJsonBody: false,
2147
+ acceptsFile: false,
2008
2148
  bodyRequired: false
2009
2149
  },
2010
2150
  {
@@ -2016,6 +2156,7 @@ var COMMANDS = [
2016
2156
  summary: "Create Price Book Rule",
2017
2157
  flags: [],
2018
2158
  acceptsJsonBody: true,
2159
+ acceptsFile: false,
2019
2160
  bodyRequired: true
2020
2161
  },
2021
2162
  {
@@ -2040,6 +2181,7 @@ var COMMANDS = [
2040
2181
  }
2041
2182
  ],
2042
2183
  acceptsJsonBody: false,
2184
+ acceptsFile: false,
2043
2185
  bodyRequired: false
2044
2186
  },
2045
2187
  {
@@ -2064,6 +2206,7 @@ var COMMANDS = [
2064
2206
  }
2065
2207
  ],
2066
2208
  acceptsJsonBody: false,
2209
+ acceptsFile: false,
2067
2210
  bodyRequired: false
2068
2211
  },
2069
2212
  {
@@ -2088,6 +2231,7 @@ var COMMANDS = [
2088
2231
  }
2089
2232
  ],
2090
2233
  acceptsJsonBody: true,
2234
+ acceptsFile: false,
2091
2235
  bodyRequired: true
2092
2236
  },
2093
2237
  {
@@ -2099,6 +2243,7 @@ var COMMANDS = [
2099
2243
  summary: "Preview Channel List Price",
2100
2244
  flags: [],
2101
2245
  acceptsJsonBody: true,
2246
+ acceptsFile: false,
2102
2247
  bodyRequired: true
2103
2248
  },
2104
2249
  {
@@ -2171,6 +2316,7 @@ var COMMANDS = [
2171
2316
  }
2172
2317
  ],
2173
2318
  acceptsJsonBody: false,
2319
+ acceptsFile: false,
2174
2320
  bodyRequired: false
2175
2321
  },
2176
2322
  {
@@ -2182,6 +2328,7 @@ var COMMANDS = [
2182
2328
  summary: "Create Product",
2183
2329
  flags: [],
2184
2330
  acceptsJsonBody: true,
2331
+ acceptsFile: false,
2185
2332
  bodyRequired: true
2186
2333
  },
2187
2334
  {
@@ -2200,6 +2347,7 @@ var COMMANDS = [
2200
2347
  }
2201
2348
  ],
2202
2349
  acceptsJsonBody: false,
2350
+ acceptsFile: false,
2203
2351
  bodyRequired: false
2204
2352
  },
2205
2353
  {
@@ -2218,6 +2366,7 @@ var COMMANDS = [
2218
2366
  }
2219
2367
  ],
2220
2368
  acceptsJsonBody: false,
2369
+ acceptsFile: false,
2221
2370
  bodyRequired: false
2222
2371
  },
2223
2372
  {
@@ -2236,6 +2385,7 @@ var COMMANDS = [
2236
2385
  }
2237
2386
  ],
2238
2387
  acceptsJsonBody: true,
2388
+ acceptsFile: false,
2239
2389
  bodyRequired: true
2240
2390
  },
2241
2391
  {
@@ -2254,6 +2404,7 @@ var COMMANDS = [
2254
2404
  }
2255
2405
  ],
2256
2406
  acceptsJsonBody: true,
2407
+ acceptsFile: false,
2257
2408
  bodyRequired: true
2258
2409
  },
2259
2410
  {
@@ -2272,8 +2423,28 @@ var COMMANDS = [
2272
2423
  }
2273
2424
  ],
2274
2425
  acceptsJsonBody: true,
2426
+ acceptsFile: false,
2275
2427
  bodyRequired: false
2276
2428
  },
2429
+ {
2430
+ trail: ["products", "upload-image"],
2431
+ resourcePath: ["products"],
2432
+ methodName: "uploadImage",
2433
+ httpMethod: "POST",
2434
+ path: "/api/v1/products/{productId}/images",
2435
+ summary: "Upload Product Image",
2436
+ flags: [
2437
+ {
2438
+ name: "productId",
2439
+ flag: "product-id",
2440
+ required: true,
2441
+ source: "path"
2442
+ }
2443
+ ],
2444
+ acceptsJsonBody: true,
2445
+ acceptsFile: true,
2446
+ bodyRequired: true
2447
+ },
2277
2448
  {
2278
2449
  trail: ["products", "update-inventory"],
2279
2450
  resourcePath: ["products"],
@@ -2290,6 +2461,7 @@ var COMMANDS = [
2290
2461
  }
2291
2462
  ],
2292
2463
  acceptsJsonBody: true,
2464
+ acceptsFile: false,
2293
2465
  bodyRequired: true
2294
2466
  },
2295
2467
  {
@@ -2314,6 +2486,7 @@ var COMMANDS = [
2314
2486
  }
2315
2487
  ],
2316
2488
  acceptsJsonBody: false,
2489
+ acceptsFile: false,
2317
2490
  bodyRequired: false
2318
2491
  },
2319
2492
  {
@@ -2332,6 +2505,7 @@ var COMMANDS = [
2332
2505
  }
2333
2506
  ],
2334
2507
  acceptsJsonBody: true,
2508
+ acceptsFile: false,
2335
2509
  bodyRequired: true
2336
2510
  },
2337
2511
  {
@@ -2350,6 +2524,7 @@ var COMMANDS = [
2350
2524
  }
2351
2525
  ],
2352
2526
  acceptsJsonBody: true,
2527
+ acceptsFile: false,
2353
2528
  bodyRequired: false
2354
2529
  },
2355
2530
  {
@@ -2361,6 +2536,7 @@ var COMMANDS = [
2361
2536
  summary: "Bulk Import Products from JSON or CSV",
2362
2537
  flags: [],
2363
2538
  acceptsJsonBody: true,
2539
+ acceptsFile: false,
2364
2540
  bodyRequired: true
2365
2541
  },
2366
2542
  {
@@ -2372,6 +2548,7 @@ var COMMANDS = [
2372
2548
  summary: "Batch Update Product Cost",
2373
2549
  flags: [],
2374
2550
  acceptsJsonBody: true,
2551
+ acceptsFile: false,
2375
2552
  bodyRequired: true
2376
2553
  },
2377
2554
  {
@@ -2383,6 +2560,7 @@ var COMMANDS = [
2383
2560
  summary: "Queue Product Enrichment",
2384
2561
  flags: [],
2385
2562
  acceptsJsonBody: true,
2563
+ acceptsFile: false,
2386
2564
  bodyRequired: true
2387
2565
  },
2388
2566
  {
@@ -2449,6 +2627,7 @@ var COMMANDS = [
2449
2627
  }
2450
2628
  ],
2451
2629
  acceptsJsonBody: false,
2630
+ acceptsFile: false,
2452
2631
  bodyRequired: false
2453
2632
  },
2454
2633
  {
@@ -2460,6 +2639,7 @@ var COMMANDS = [
2460
2639
  summary: "Create Promotion",
2461
2640
  flags: [],
2462
2641
  acceptsJsonBody: true,
2642
+ acceptsFile: false,
2463
2643
  bodyRequired: true
2464
2644
  },
2465
2645
  {
@@ -2484,6 +2664,7 @@ var COMMANDS = [
2484
2664
  }
2485
2665
  ],
2486
2666
  acceptsJsonBody: false,
2667
+ acceptsFile: false,
2487
2668
  bodyRequired: false
2488
2669
  },
2489
2670
  {
@@ -2508,6 +2689,7 @@ var COMMANDS = [
2508
2689
  }
2509
2690
  ],
2510
2691
  acceptsJsonBody: false,
2692
+ acceptsFile: false,
2511
2693
  bodyRequired: false
2512
2694
  },
2513
2695
  {
@@ -2532,6 +2714,7 @@ var COMMANDS = [
2532
2714
  }
2533
2715
  ],
2534
2716
  acceptsJsonBody: true,
2717
+ acceptsFile: false,
2535
2718
  bodyRequired: true
2536
2719
  },
2537
2720
  {
@@ -2556,6 +2739,7 @@ var COMMANDS = [
2556
2739
  }
2557
2740
  ],
2558
2741
  acceptsJsonBody: true,
2742
+ acceptsFile: false,
2559
2743
  bodyRequired: true
2560
2744
  },
2561
2745
  {
@@ -2580,6 +2764,7 @@ var COMMANDS = [
2580
2764
  }
2581
2765
  ],
2582
2766
  acceptsJsonBody: false,
2767
+ acceptsFile: false,
2583
2768
  bodyRequired: false
2584
2769
  },
2585
2770
  {
@@ -2604,15 +2789,16 @@ var COMMANDS = [
2604
2789
  }
2605
2790
  ],
2606
2791
  acceptsJsonBody: true,
2792
+ acceptsFile: false,
2607
2793
  bodyRequired: true
2608
2794
  },
2609
2795
  {
2610
- trail: ["promotions", "sync"],
2796
+ trail: ["promotions", "retry"],
2611
2797
  resourcePath: ["promotions"],
2612
- methodName: "sync",
2798
+ methodName: "retry",
2613
2799
  httpMethod: "POST",
2614
- path: "/api/v1/promotions/{promotionId}/sync",
2615
- summary: "Sync Promotion to Marketplaces",
2800
+ path: "/api/v1/promotions/{promotionId}/retry",
2801
+ summary: "Retry Marketplace Delivery",
2616
2802
  flags: [
2617
2803
  {
2618
2804
  name: "promotionId",
@@ -2628,6 +2814,7 @@ var COMMANDS = [
2628
2814
  }
2629
2815
  ],
2630
2816
  acceptsJsonBody: true,
2817
+ acceptsFile: false,
2631
2818
  bodyRequired: true
2632
2819
  },
2633
2820
  {
@@ -2682,6 +2869,7 @@ var COMMANDS = [
2682
2869
  }
2683
2870
  ],
2684
2871
  acceptsJsonBody: false,
2872
+ acceptsFile: false,
2685
2873
  bodyRequired: false
2686
2874
  },
2687
2875
  {
@@ -2706,6 +2894,7 @@ var COMMANDS = [
2706
2894
  }
2707
2895
  ],
2708
2896
  acceptsJsonBody: false,
2897
+ acceptsFile: false,
2709
2898
  bodyRequired: false
2710
2899
  },
2711
2900
  {
@@ -2778,6 +2967,7 @@ var COMMANDS = [
2778
2967
  }
2779
2968
  ],
2780
2969
  acceptsJsonBody: false,
2970
+ acceptsFile: false,
2781
2971
  bodyRequired: false
2782
2972
  },
2783
2973
  {
@@ -2802,6 +2992,7 @@ var COMMANDS = [
2802
2992
  }
2803
2993
  ],
2804
2994
  acceptsJsonBody: false,
2995
+ acceptsFile: false,
2805
2996
  bodyRequired: false
2806
2997
  },
2807
2998
  {
@@ -2826,6 +3017,7 @@ var COMMANDS = [
2826
3017
  }
2827
3018
  ],
2828
3019
  acceptsJsonBody: true,
3020
+ acceptsFile: false,
2829
3021
  bodyRequired: false
2830
3022
  },
2831
3023
  {
@@ -2837,6 +3029,7 @@ var COMMANDS = [
2837
3029
  summary: "Act on Reviews",
2838
3030
  flags: [],
2839
3031
  acceptsJsonBody: true,
3032
+ acceptsFile: false,
2840
3033
  bodyRequired: true
2841
3034
  },
2842
3035
  {
@@ -2933,6 +3126,7 @@ var COMMANDS = [
2933
3126
  }
2934
3127
  ],
2935
3128
  acceptsJsonBody: false,
3129
+ acceptsFile: false,
2936
3130
  bodyRequired: false
2937
3131
  },
2938
3132
  {
@@ -3029,6 +3223,7 @@ var COMMANDS = [
3029
3223
  }
3030
3224
  ],
3031
3225
  acceptsJsonBody: true,
3226
+ acceptsFile: false,
3032
3227
  bodyRequired: false
3033
3228
  },
3034
3229
  {
@@ -3089,6 +3284,7 @@ var COMMANDS = [
3089
3284
  }
3090
3285
  ],
3091
3286
  acceptsJsonBody: false,
3287
+ acceptsFile: false,
3092
3288
  bodyRequired: false
3093
3289
  },
3094
3290
  {
@@ -3100,6 +3296,7 @@ var COMMANDS = [
3100
3296
  summary: "Apply Settlements",
3101
3297
  flags: [],
3102
3298
  acceptsJsonBody: true,
3299
+ acceptsFile: false,
3103
3300
  bodyRequired: true
3104
3301
  },
3105
3302
  {
@@ -3124,6 +3321,7 @@ var COMMANDS = [
3124
3321
  }
3125
3322
  ],
3126
3323
  acceptsJsonBody: false,
3324
+ acceptsFile: false,
3127
3325
  bodyRequired: false
3128
3326
  },
3129
3327
  {
@@ -3135,6 +3333,7 @@ var COMMANDS = [
3135
3333
  summary: "Sync Product Commercial Fields",
3136
3334
  flags: [],
3137
3335
  acceptsJsonBody: true,
3336
+ acceptsFile: false,
3138
3337
  bodyRequired: false
3139
3338
  },
3140
3339
  {
@@ -3165,6 +3364,7 @@ var COMMANDS = [
3165
3364
  }
3166
3365
  ],
3167
3366
  acceptsJsonBody: false,
3367
+ acceptsFile: false,
3168
3368
  bodyRequired: false
3169
3369
  },
3170
3370
  {
@@ -3207,6 +3407,7 @@ var COMMANDS = [
3207
3407
  }
3208
3408
  ],
3209
3409
  acceptsJsonBody: false,
3410
+ acceptsFile: false,
3210
3411
  bodyRequired: false
3211
3412
  },
3212
3413
  {
@@ -3218,6 +3419,7 @@ var COMMANDS = [
3218
3419
  summary: "List Developer Webhooks",
3219
3420
  flags: [],
3220
3421
  acceptsJsonBody: false,
3422
+ acceptsFile: false,
3221
3423
  bodyRequired: false
3222
3424
  },
3223
3425
  {
@@ -3229,6 +3431,7 @@ var COMMANDS = [
3229
3431
  summary: "Create Developer Webhook",
3230
3432
  flags: [],
3231
3433
  acceptsJsonBody: true,
3434
+ acceptsFile: false,
3232
3435
  bodyRequired: true
3233
3436
  },
3234
3437
  {
@@ -3265,6 +3468,7 @@ var COMMANDS = [
3265
3468
  }
3266
3469
  ],
3267
3470
  acceptsJsonBody: false,
3471
+ acceptsFile: false,
3268
3472
  bodyRequired: false
3269
3473
  },
3270
3474
  {
@@ -3276,6 +3480,7 @@ var COMMANDS = [
3276
3480
  summary: "Import Selected Zalora Products",
3277
3481
  flags: [],
3278
3482
  acceptsJsonBody: true,
3483
+ acceptsFile: false,
3279
3484
  bodyRequired: true
3280
3485
  },
3281
3486
  {
@@ -3287,6 +3492,7 @@ var COMMANDS = [
3287
3492
  summary: "Create UCP Checkout Session",
3288
3493
  flags: [],
3289
3494
  acceptsJsonBody: true,
3495
+ acceptsFile: false,
3290
3496
  bodyRequired: true
3291
3497
  },
3292
3498
  {
@@ -3311,6 +3517,7 @@ var COMMANDS = [
3311
3517
  }
3312
3518
  ],
3313
3519
  acceptsJsonBody: false,
3520
+ acceptsFile: false,
3314
3521
  bodyRequired: false
3315
3522
  },
3316
3523
  {
@@ -3335,6 +3542,7 @@ var COMMANDS = [
3335
3542
  }
3336
3543
  ],
3337
3544
  acceptsJsonBody: true,
3545
+ acceptsFile: false,
3338
3546
  bodyRequired: true
3339
3547
  },
3340
3548
  {
@@ -3359,6 +3567,7 @@ var COMMANDS = [
3359
3567
  }
3360
3568
  ],
3361
3569
  acceptsJsonBody: true,
3570
+ acceptsFile: false,
3362
3571
  bodyRequired: true
3363
3572
  },
3364
3573
  {
@@ -3383,6 +3592,7 @@ var COMMANDS = [
3383
3592
  }
3384
3593
  ],
3385
3594
  acceptsJsonBody: true,
3595
+ acceptsFile: false,
3386
3596
  bodyRequired: false
3387
3597
  },
3388
3598
  {
@@ -3407,6 +3617,7 @@ var COMMANDS = [
3407
3617
  }
3408
3618
  ],
3409
3619
  acceptsJsonBody: true,
3620
+ acceptsFile: false,
3410
3621
  bodyRequired: true
3411
3622
  },
3412
3623
  {
@@ -3431,6 +3642,7 @@ var COMMANDS = [
3431
3642
  }
3432
3643
  ],
3433
3644
  acceptsJsonBody: false,
3645
+ acceptsFile: false,
3434
3646
  bodyRequired: false
3435
3647
  },
3436
3648
  {
@@ -3455,6 +3667,7 @@ var COMMANDS = [
3455
3667
  }
3456
3668
  ],
3457
3669
  acceptsJsonBody: false,
3670
+ acceptsFile: false,
3458
3671
  bodyRequired: false
3459
3672
  }
3460
3673
  ];
@@ -3497,8 +3710,8 @@ function printCommandHelp(command) {
3497
3710
  const req = flag.required ? "required" : "optional";
3498
3711
  return ` --${flag.flag} <${flag.name}> ${req} ${flag.source}`;
3499
3712
  }).join("\n");
3500
- const jsonLine = command.acceptsJsonBody ? ` --json <object|-> ${command.bodyRequired ? "required" : "optional"} body
3501
- ` : "";
3713
+ const jsonLine = `${command.acceptsFile ? " --file <path> required file to upload\n" : ""}${command.acceptsJsonBody ? ` --json <object|-> ${command.bodyRequired && !command.acceptsFile ? "required" : "optional"} body
3714
+ ` : ""}`;
3502
3715
  return `omni ${command.trail.join(" ")}
3503
3716
 
3504
3717
  ${command.summary}
@@ -3519,7 +3732,7 @@ function matchCommands(commands, trail) {
3519
3732
  }
3520
3733
 
3521
3734
  // src/version.ts
3522
- var CLI_VERSION = "0.4.0";
3735
+ var CLI_VERSION = "0.5.0";
3523
3736
 
3524
3737
  // src/run.ts
3525
3738
  async function readStdin() {
@@ -3639,10 +3852,15 @@ ${unique.map((line) => ` omni ${line}`).join("\n")}
3639
3852
  return 0;
3640
3853
  }
3641
3854
  const body = await parseJsonBody(flagString(parsed.flags, "json"));
3642
- if (command.bodyRequired && !body) {
3855
+ const filePath = command.acceptsFile ? flagString(parsed.flags, "file") : void 0;
3856
+ if (command.acceptsFile && !filePath) {
3857
+ throw new Error(`omni ${command.trail.join(" ")} requires --file <path>`);
3858
+ }
3859
+ if (command.bodyRequired && !body && !filePath) {
3643
3860
  throw new Error(`omni ${command.trail.join(" ")} requires --json`);
3644
3861
  }
3645
3862
  const request = buildRequest(command, parsed.flags, body);
3863
+ if (filePath) request.file = filePath;
3646
3864
  if (parsed.dryRun) {
3647
3865
  process.stdout.write(
3648
3866
  `${JSON.stringify(