saasignal 0.9.32 → 0.9.33
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/cli.js +2298 -105
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +354 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +406 -0
- package/dist/client.js.map +1 -1
- package/dist/types.d.ts +186 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -15,12 +15,26 @@ Environment:
|
|
|
15
15
|
Namespaces:
|
|
16
16
|
auth Browser login, logout, and status
|
|
17
17
|
kv Key-value store
|
|
18
|
+
locks Distributed locks
|
|
19
|
+
sketches Probabilistic data structures (HLL, CMS)
|
|
18
20
|
channels Real-time pub/sub
|
|
19
21
|
jobs Task / queue / cron
|
|
20
|
-
|
|
22
|
+
workflows Multi-step workflow orchestration
|
|
23
|
+
webhooks Webhook management and publishing
|
|
21
24
|
storage Object storage (buckets, objects, signed URLs)
|
|
25
|
+
media Media asset processing (images, video)
|
|
22
26
|
ai AI models, inference, and retrieval primitives
|
|
23
|
-
|
|
27
|
+
search Full-text and vector search indexes
|
|
28
|
+
matching Constraint-solving and assignment optimization
|
|
29
|
+
ranking Behavioral and semantic item ranking
|
|
30
|
+
logistics Geospatial, tracking, routing, geocoding
|
|
31
|
+
delivery Delivery order, driver, and zone management
|
|
32
|
+
commerce E-commerce catalogs, carts, orders, payments
|
|
33
|
+
booking Appointment and resource booking
|
|
34
|
+
messaging Conversations, messages, and reactions
|
|
35
|
+
billing Packages, tokens, usage
|
|
36
|
+
orgs Organization and project management
|
|
37
|
+
meta Health checks, docs, and API metadata
|
|
24
38
|
|
|
25
39
|
KV Commands:
|
|
26
40
|
kv get <key>
|
|
@@ -28,9 +42,24 @@ KV Commands:
|
|
|
28
42
|
kv delete <key>
|
|
29
43
|
kv increment <key> [--delta <n>] [--ttl <seconds>]
|
|
30
44
|
kv scan [--prefix <p>] [--limit <n>] [--cursor <c>]
|
|
45
|
+
kv batch --ops <json-array>
|
|
46
|
+
|
|
47
|
+
Locks Commands:
|
|
48
|
+
locks acquire <key> --ttl-ms <ms> [--holder-id <id>]
|
|
49
|
+
locks release <key> --token <lock_token>
|
|
50
|
+
locks renew <key> --token <lock_token> --ttl-ms <ms>
|
|
51
|
+
locks status <key>
|
|
52
|
+
|
|
53
|
+
Sketches Commands:
|
|
54
|
+
sketches hll add <key> --elements <json-array>
|
|
55
|
+
sketches hll count <key>
|
|
56
|
+
sketches hll merge --dest-key <key> --source-keys <json-array>
|
|
57
|
+
sketches cms increment <key> --elements <json-array>
|
|
58
|
+
sketches cms estimate <key> --item <item>
|
|
31
59
|
|
|
32
60
|
Channel Commands:
|
|
33
61
|
channels publish <channel> <event> <json-data>
|
|
62
|
+
channels batch-publish --messages <json-array>
|
|
34
63
|
channels presence <channel>
|
|
35
64
|
channels history <channel> [--limit <n>]
|
|
36
65
|
|
|
@@ -38,12 +67,33 @@ Job Commands:
|
|
|
38
67
|
jobs create <name> --trigger <type> [--queue <q>] [--cron <expr>] [--delay <s>] [--payload <json>] [--handler <url>]
|
|
39
68
|
jobs list [--status <s>] [--trigger-type <t>] [--queue <q>] [--limit <n>]
|
|
40
69
|
jobs get <job_id>
|
|
70
|
+
jobs update <job_id> [--handler <url>] [--payload <json>] [--enabled <bool>] [--cron <expr>]
|
|
41
71
|
jobs cancel <job_id>
|
|
42
72
|
jobs trigger <job_id>
|
|
43
73
|
jobs retry <job_id>
|
|
44
74
|
jobs runs <job_id> [--limit <n>]
|
|
45
75
|
jobs claim <queue> [--count <n>] [--timeout <s>]
|
|
46
76
|
jobs ack <job_id> --status <completed|failed> [--result <json>] [--error <msg>]
|
|
77
|
+
jobs batch-create --jobs <json-array>
|
|
78
|
+
|
|
79
|
+
Workflow Commands:
|
|
80
|
+
workflows create-blueprint --body <json>
|
|
81
|
+
workflows list-blueprints [--limit <n>] [--cursor <c>]
|
|
82
|
+
workflows trigger <blueprint_id> [--input-data <json>] [--idempotency-key <key>]
|
|
83
|
+
workflows get-execution <execution_id>
|
|
84
|
+
workflows cancel <execution_id>
|
|
85
|
+
workflows resume <execution_id> [--step-id <id>] [--override-output <json>]
|
|
86
|
+
|
|
87
|
+
Webhook Commands:
|
|
88
|
+
webhooks create --name <n> --url <u> --topics <json-array> [--secret <s>]
|
|
89
|
+
webhooks list [--limit <n>] [--cursor <c>] [--enabled <bool>]
|
|
90
|
+
webhooks get <webhook_id>
|
|
91
|
+
webhooks update <webhook_id> [--name <n>] [--url <u>] [--topics <json>]
|
|
92
|
+
webhooks delete <webhook_id>
|
|
93
|
+
webhooks test <webhook_id>
|
|
94
|
+
webhooks deliveries <webhook_id> [--limit <n>]
|
|
95
|
+
webhooks retry-delivery <webhook_id> <delivery_id>
|
|
96
|
+
webhooks publish --topic <t> --data <json>
|
|
47
97
|
|
|
48
98
|
Billing Commands:
|
|
49
99
|
billing packages
|
|
@@ -51,6 +101,8 @@ Billing Commands:
|
|
|
51
101
|
billing balance <org_id>
|
|
52
102
|
billing bundles
|
|
53
103
|
billing token-usage <org_id> [--from <date>] [--to <date>] [--granularity <hour|day|month>]
|
|
104
|
+
billing subscription <org_id>
|
|
105
|
+
billing switch-to-free <org_id>
|
|
54
106
|
|
|
55
107
|
Storage Commands:
|
|
56
108
|
storage buckets list [--limit <n>] [--cursor <c>]
|
|
@@ -60,9 +112,20 @@ Storage Commands:
|
|
|
60
112
|
storage objects list <bucket_id> [--prefix <p>] [--delimiter <d>] [--limit <n>]
|
|
61
113
|
storage objects put <bucket_id> <key> <file_path> [--content-type <ct>]
|
|
62
114
|
storage objects get <bucket_id> <key>
|
|
115
|
+
storage objects head <bucket_id> <key>
|
|
63
116
|
storage objects delete <bucket_id> <key>
|
|
64
117
|
storage signed-url <bucket_id> <key> --method <GET|PUT> [--expires-in <s>] [--content-type <ct>]
|
|
65
118
|
|
|
119
|
+
Media Commands:
|
|
120
|
+
media upload <file_path> [--content-type <ct>] [--visibility <v>]
|
|
121
|
+
media upload-url --url <u> [--filename <f>] [--visibility <v>]
|
|
122
|
+
media list [--limit <n>] [--cursor <c>] [--media-type <t>]
|
|
123
|
+
media get <asset_id>
|
|
124
|
+
media delete <asset_id>
|
|
125
|
+
media transform-image <asset_id> --body <json>
|
|
126
|
+
media encode-video <asset_id> --body <json>
|
|
127
|
+
media list-variants <asset_id>
|
|
128
|
+
|
|
66
129
|
AI Commands:
|
|
67
130
|
ai models
|
|
68
131
|
ai model <model_id>
|
|
@@ -83,19 +146,231 @@ AI Commands:
|
|
|
83
146
|
ai operations get <operation_id>
|
|
84
147
|
ai operations cancel <operation_id>
|
|
85
148
|
|
|
149
|
+
Search Commands:
|
|
150
|
+
search create-index --body <json>
|
|
151
|
+
search list-indexes
|
|
152
|
+
search get-index <index_id>
|
|
153
|
+
search update-index <index_id> --body <json>
|
|
154
|
+
search delete-index <index_id>
|
|
155
|
+
search upsert-docs <index_id> --body <json>
|
|
156
|
+
search list-docs <index_id>
|
|
157
|
+
search get-doc <index_id> <document_id>
|
|
158
|
+
search delete-doc <index_id> <document_id>
|
|
159
|
+
search query <index_id> --body <json>
|
|
160
|
+
search suggest <index_id> --prefix <p> [--limit <n>]
|
|
161
|
+
search stats <index_id>
|
|
162
|
+
search rebuild <index_id> [--async <true|false>]
|
|
163
|
+
|
|
164
|
+
Matching Commands:
|
|
165
|
+
matching create-operation --body <json>
|
|
166
|
+
matching batch-operation --body <json>
|
|
167
|
+
matching get-operation <operation_id>
|
|
168
|
+
matching cancel-operation <operation_id>
|
|
169
|
+
matching create-template --body <json>
|
|
170
|
+
matching list-templates
|
|
171
|
+
matching get-template <template_id>
|
|
172
|
+
matching update-template <template_id> --body <json>
|
|
173
|
+
matching delete-template <template_id>
|
|
174
|
+
matching template-operation <template_id> [--body <json>]
|
|
175
|
+
|
|
176
|
+
Ranking Commands:
|
|
177
|
+
ranking create-collection --body <json>
|
|
178
|
+
ranking list-collections
|
|
179
|
+
ranking get-collection <collection_id>
|
|
180
|
+
ranking update-collection <collection_id> --body <json>
|
|
181
|
+
ranking delete-collection <collection_id>
|
|
182
|
+
ranking upsert-items <collection_id> --body <json>
|
|
183
|
+
ranking list-items <collection_id>
|
|
184
|
+
ranking get-item <collection_id> <item_id>
|
|
185
|
+
ranking delete-item <collection_id> <item_id>
|
|
186
|
+
ranking ingest-signals <collection_id> --body <json>
|
|
187
|
+
ranking rank <collection_id> --body <json>
|
|
188
|
+
ranking related <collection_id> --body <json>
|
|
189
|
+
ranking stats <collection_id>
|
|
190
|
+
|
|
191
|
+
Logistics Commands:
|
|
192
|
+
logistics geo create --body <json>
|
|
193
|
+
logistics geo list [--type <t>] [--status <s>] [--limit <n>]
|
|
194
|
+
logistics geo nearby --lat <lat> --lng <lng> [--radius-km <r>] [--type <t>]
|
|
195
|
+
logistics geo get <entity_id>
|
|
196
|
+
logistics geo update <entity_id> --body <json>
|
|
197
|
+
logistics geo deactivate <entity_id>
|
|
198
|
+
logistics geofences create --body <json>
|
|
199
|
+
logistics geofences list [--enabled <bool>] [--limit <n>]
|
|
200
|
+
logistics geofences get <fence_id>
|
|
201
|
+
logistics geofences delete <fence_id>
|
|
202
|
+
logistics eta-fences create --name <n> --dest-lat <lat> --dest-lng <lng> --threshold <min>
|
|
203
|
+
logistics eta-fences list [--enabled <bool>] [--limit <n>]
|
|
204
|
+
logistics eta-fences get <fence_id>
|
|
205
|
+
logistics eta-fences delete <fence_id>
|
|
206
|
+
logistics tracking ping <entity_id> --lat <lat> --lng <lng> [--heading <h>] [--speed <s>]
|
|
207
|
+
logistics tracking batch-ping <entity_id> --pings <json-array>
|
|
208
|
+
logistics tracking history <entity_id> [--limit <n>]
|
|
209
|
+
logistics routing route --origin-lat <lat> --origin-lng <lng> --dest-lat <lat> --dest-lng <lng>
|
|
210
|
+
logistics routing optimize --origin-lat <lat> --origin-lng <lng> --stops <json-array>
|
|
211
|
+
logistics routing distance-matrix --origins <json> --destinations <json>
|
|
212
|
+
logistics routing dispatch --agents <json> --tasks <json>
|
|
213
|
+
logistics routing isochrone --origin-lat <lat> --origin-lng <lng> --minutes <json-array>
|
|
214
|
+
logistics routing snap --pings <json-array> [--profile <driving|walking|cycling>]
|
|
215
|
+
logistics geocoding forward --q <query> [--limit <n>] [--country <c>]
|
|
216
|
+
logistics geocoding reverse --lat <lat> --lng <lng>
|
|
217
|
+
logistics geocoding autocomplete --q <query> [--limit <n>] [--country <c>]
|
|
218
|
+
|
|
86
219
|
Delivery Commands:
|
|
87
220
|
delivery orders list [--status <s>] [--driver-id <id>] [--limit <n>]
|
|
88
221
|
delivery orders get <order_id>
|
|
89
222
|
delivery orders create --customer-id <id> --dropoff <address> [--pickup <address>]
|
|
223
|
+
delivery orders update <order_id> [--driver-id <id>] [--dropoff <addr>]
|
|
90
224
|
delivery orders transition <order_id> --status <s> [--driver-id <id>]
|
|
225
|
+
delivery orders events <order_id>
|
|
226
|
+
delivery orders delete <order_id>
|
|
227
|
+
delivery orders proof list <order_id>
|
|
228
|
+
delivery orders proof get <order_id> <proof_id>
|
|
229
|
+
delivery orders proof create <order_id> --type <t> --value <v> [--stop-id <id>]
|
|
230
|
+
delivery orders proof delete <order_id> <proof_id>
|
|
91
231
|
delivery drivers list [--status <s>] [--limit <n>]
|
|
92
232
|
delivery drivers get <driver_id>
|
|
233
|
+
delivery drivers create --name <n> [--phone <p>] [--email <e>]
|
|
234
|
+
delivery drivers update <driver_id> [--name <n>] [--phone <p>]
|
|
235
|
+
delivery drivers online <driver_id>
|
|
236
|
+
delivery drivers offline <driver_id>
|
|
237
|
+
delivery drivers delete <driver_id>
|
|
238
|
+
delivery customers list [--limit <n>]
|
|
239
|
+
delivery customers get <customer_id>
|
|
240
|
+
delivery customers create --name <n> [--email <e>] [--phone <p>]
|
|
241
|
+
delivery customers update <customer_id> [--name <n>]
|
|
242
|
+
delivery customers delete <customer_id>
|
|
243
|
+
delivery customers addresses list <customer_id>
|
|
244
|
+
delivery customers addresses add <customer_id> --address-line <a> [--label <l>]
|
|
245
|
+
delivery customers addresses delete <customer_id> <address_id>
|
|
246
|
+
delivery vehicles list [--type <t>] [--limit <n>]
|
|
247
|
+
delivery vehicles get <vehicle_id>
|
|
248
|
+
delivery vehicles create [--type <t>] [--plate <p>] [--name <n>]
|
|
249
|
+
delivery vehicles update <vehicle_id> [--type <t>] [--plate <p>]
|
|
250
|
+
delivery vehicles delete <vehicle_id>
|
|
251
|
+
delivery stops list <order_id>
|
|
252
|
+
delivery stops get <stop_id>
|
|
253
|
+
delivery stops create <order_id> --sequence <n> --type <t> [--address <a>]
|
|
254
|
+
delivery stops update <stop_id> [--sequence <n>] [--address <a>]
|
|
255
|
+
delivery stops arrive <stop_id>
|
|
256
|
+
delivery stops complete <stop_id>
|
|
257
|
+
delivery stops skip <stop_id>
|
|
258
|
+
delivery stops delete <stop_id>
|
|
259
|
+
delivery dispatch suggest --order-id <id> [--radius-km <r>] [--limit <n>]
|
|
260
|
+
delivery dispatch auto-assign --order-id <id>
|
|
261
|
+
delivery tracking-links create --order-id <id> [--ttl-minutes <m>]
|
|
262
|
+
delivery tracking-links resolve <token>
|
|
263
|
+
delivery tracking-links revoke <link_id>
|
|
264
|
+
delivery tracking-pages customer-page <token>
|
|
265
|
+
delivery tracking-pages customer-feed <token>
|
|
266
|
+
delivery tracking-pages rate <token> --score <n> [--comment <c>]
|
|
267
|
+
delivery tracking-pages driver-page <token>
|
|
268
|
+
delivery tracking-pages ping <token> --lat <lat> --lng <lng>
|
|
269
|
+
delivery tracking-pages comment-proof <token> --text <t>
|
|
270
|
+
delivery dispatch-rules list
|
|
271
|
+
delivery dispatch-rules get <rule_id>
|
|
272
|
+
delivery dispatch-rules create --body <json>
|
|
273
|
+
delivery dispatch-rules update <rule_id> --body <json>
|
|
274
|
+
delivery dispatch-rules delete <rule_id>
|
|
275
|
+
delivery dispatch-rules evaluate --lat <lat> --lng <lng> [--time <t>]
|
|
276
|
+
delivery auto-dispatch --order-id <id>
|
|
277
|
+
delivery zones list [--limit <n>]
|
|
278
|
+
delivery zones get <zone_id>
|
|
279
|
+
delivery zones create --body <json>
|
|
280
|
+
delivery zones update <zone_id> --body <json>
|
|
281
|
+
delivery zones delete <zone_id>
|
|
93
282
|
delivery eta-fences list [--enabled <true|false>] [--limit <n>]
|
|
94
283
|
delivery eta-fences get <fence_id>
|
|
95
284
|
delivery eta-fences create --name <n> --dest-lat <lat> --dest-lng <lng> --threshold <min>
|
|
96
285
|
delivery eta-fences delete <fence_id>
|
|
97
|
-
delivery
|
|
98
|
-
delivery
|
|
286
|
+
delivery hubs list [--limit <n>]
|
|
287
|
+
delivery hubs get <hub_id>
|
|
288
|
+
delivery hubs create --name <n> [--address <a>] [--lat <lat>] [--lng <lng>]
|
|
289
|
+
delivery hubs update <hub_id> [--name <n>] [--address <a>]
|
|
290
|
+
delivery hubs delete <hub_id>
|
|
291
|
+
delivery notifications list
|
|
292
|
+
delivery notifications upsert --event <e> --enabled <bool> [--channel <c>]
|
|
293
|
+
delivery webhooks list
|
|
294
|
+
delivery webhooks create --name <n> --url <u> --topics <json-array>
|
|
295
|
+
delivery settings [get]
|
|
296
|
+
delivery settings update --body <json>
|
|
297
|
+
delivery analytics [summary] [--from <date>] [--to <date>]
|
|
298
|
+
delivery analytics drivers [--from <date>] [--to <date>]
|
|
299
|
+
delivery export orders [--from <date>] [--to <date>] [--format <json|csv>]
|
|
300
|
+
|
|
301
|
+
Commerce Commands:
|
|
302
|
+
commerce settings [get|update] [--body <json>]
|
|
303
|
+
commerce catalogs list|get|create|update|delete [args...]
|
|
304
|
+
commerce categories list|get|tree|create|update|delete [args...]
|
|
305
|
+
commerce products list|get|create|update|delete [args...]
|
|
306
|
+
commerce variants list|get|create|update|delete <product_id> [args...]
|
|
307
|
+
commerce inventory list|get|update|adjust [args...]
|
|
308
|
+
commerce customers list|get|create|update|delete [args...]
|
|
309
|
+
commerce customers addresses list|add|delete <customer_id> [args...]
|
|
310
|
+
commerce carts create|get|add-item|update-item|remove-item|apply-discount|remove-discount|checkout [args...]
|
|
311
|
+
commerce orders list|get|update|transition|events|delete [args...]
|
|
312
|
+
commerce payments list|get|create|transition <order_id> [args...]
|
|
313
|
+
commerce reviews list|get|create|transition|delete [args...]
|
|
314
|
+
commerce discounts list|get|create|update|delete|validate [args...]
|
|
315
|
+
commerce webhooks list|create [args...]
|
|
316
|
+
commerce analytics summary|top-products|revenue [--from <date>] [--to <date>]
|
|
317
|
+
commerce export orders|products|customers [--format <json|csv>]
|
|
318
|
+
|
|
319
|
+
Booking Commands:
|
|
320
|
+
booking settings [get|update] [--body <json>]
|
|
321
|
+
booking resources list|get|create|update|delete [args...]
|
|
322
|
+
booking resources set-availability <resource_id> --rules <json>
|
|
323
|
+
booking resources get-availability <resource_id>
|
|
324
|
+
booking resources slots <resource_id> --date <d> [--duration <min>]
|
|
325
|
+
booking bookings list|get|create|update|delete|transition|events [args...]
|
|
326
|
+
booking customers list|get|create|update|delete [args...]
|
|
327
|
+
booking blockers list|create|delete [args...]
|
|
328
|
+
booking webhooks list|create [args...]
|
|
329
|
+
booking analytics summary|by-resource|by-period [--from <date>] [--to <date>]
|
|
330
|
+
booking export bookings|customers|resources [--format <json|csv>]
|
|
331
|
+
|
|
332
|
+
Messaging Commands:
|
|
333
|
+
messaging settings [get|update] [--body <json>]
|
|
334
|
+
messaging conversations list|get|create|update|delete|archive|close|reopen [args...]
|
|
335
|
+
messaging participants list|add|update|remove <conversation_id> [args...]
|
|
336
|
+
messaging messages list|get|send|edit|delete <conversation_id> [args...]
|
|
337
|
+
messaging reactions add|remove <message_id> [args...]
|
|
338
|
+
messaging webhooks list|create [args...]
|
|
339
|
+
messaging analytics summary|by-conversation|by-period [--from <date>] [--to <date>]
|
|
340
|
+
messaging export conversations|messages [--format <json|csv>]
|
|
341
|
+
|
|
342
|
+
Orgs Commands:
|
|
343
|
+
orgs list
|
|
344
|
+
orgs create --name <n> [--slug <s>]
|
|
345
|
+
orgs get <org_id>
|
|
346
|
+
orgs update <org_id> [--name <n>] [--slug <s>]
|
|
347
|
+
orgs delete <org_id> --confirm-name <name>
|
|
348
|
+
orgs members <org_id>
|
|
349
|
+
orgs invite <org_id> --email <e> [--scopes <json>] [--project-id <id>]
|
|
350
|
+
orgs remove-member <org_id> <user_id>
|
|
351
|
+
orgs my-scopes <org_id>
|
|
352
|
+
orgs update-member-scopes <org_id> <user_id> --scopes <json>
|
|
353
|
+
orgs projects list <org_id>
|
|
354
|
+
orgs projects create <org_id> --name <n> [--region <r>]
|
|
355
|
+
orgs projects get <org_id> <project_id>
|
|
356
|
+
orgs projects delete <org_id> <project_id>
|
|
357
|
+
orgs tokens list <org_id> [--project-id <id>]
|
|
358
|
+
orgs tokens create <org_id> --name <n> --scopes <json> [--project-id <id>]
|
|
359
|
+
orgs tokens revoke <org_id> <token_id>
|
|
360
|
+
|
|
361
|
+
Meta Commands:
|
|
362
|
+
meta livez
|
|
363
|
+
meta readyz
|
|
364
|
+
meta healthz
|
|
365
|
+
meta openapi
|
|
366
|
+
meta skill
|
|
367
|
+
meta llms-txt
|
|
368
|
+
meta human-docs
|
|
369
|
+
meta robots-txt
|
|
370
|
+
meta sitemap-xml
|
|
371
|
+
meta landing
|
|
372
|
+
meta scalar-url
|
|
373
|
+
meta mcp-url
|
|
99
374
|
|
|
100
375
|
Auth Commands:
|
|
101
376
|
auth login
|
|
@@ -210,152 +485,1587 @@ async function executeNamespaceCommand(client, namespace, command, positional, f
|
|
|
210
485
|
case "delivery":
|
|
211
486
|
await handleDelivery(client, command, positional, flags);
|
|
212
487
|
break;
|
|
488
|
+
case "locks":
|
|
489
|
+
await handleLocks(client, command, positional, flags);
|
|
490
|
+
break;
|
|
491
|
+
case "sketches":
|
|
492
|
+
await handleSketches(client, command, positional, flags);
|
|
493
|
+
break;
|
|
494
|
+
case "workflows":
|
|
495
|
+
await handleWorkflows(client, command, positional, flags);
|
|
496
|
+
break;
|
|
497
|
+
case "webhooks":
|
|
498
|
+
await handleWebhooks(client, command, positional, flags);
|
|
499
|
+
break;
|
|
500
|
+
case "media":
|
|
501
|
+
await handleMedia(client, command, positional, flags);
|
|
502
|
+
break;
|
|
503
|
+
case "search":
|
|
504
|
+
await handleSearch(client, command, positional, flags);
|
|
505
|
+
break;
|
|
506
|
+
case "matching":
|
|
507
|
+
await handleMatching(client, command, positional, flags);
|
|
508
|
+
break;
|
|
509
|
+
case "ranking":
|
|
510
|
+
await handleRanking(client, command, positional, flags);
|
|
511
|
+
break;
|
|
512
|
+
case "logistics":
|
|
513
|
+
await handleLogistics(client, command, positional, flags);
|
|
514
|
+
break;
|
|
515
|
+
case "commerce":
|
|
516
|
+
await handleCommerce(client, command, positional, flags);
|
|
517
|
+
break;
|
|
518
|
+
case "booking":
|
|
519
|
+
await handleBooking(client, command, positional, flags);
|
|
520
|
+
break;
|
|
521
|
+
case "messaging":
|
|
522
|
+
await handleMessaging(client, command, positional, flags);
|
|
523
|
+
break;
|
|
524
|
+
case "orgs":
|
|
525
|
+
await handleOrgs(client, command, positional, flags);
|
|
526
|
+
break;
|
|
527
|
+
case "meta":
|
|
528
|
+
await handleMeta(client, command, positional, flags);
|
|
529
|
+
break;
|
|
213
530
|
default:
|
|
214
531
|
console.error(`Unknown namespace: ${namespace}\n`);
|
|
215
532
|
console.log(USAGE);
|
|
216
533
|
process.exit(1);
|
|
217
534
|
}
|
|
218
535
|
}
|
|
219
|
-
async function
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
536
|
+
async function handleLocks(client, cmd, pos, flags) {
|
|
537
|
+
switch (cmd) {
|
|
538
|
+
case "acquire":
|
|
539
|
+
out(await client.infra.locks.acquire(pos[0], {
|
|
540
|
+
ttl_ms: Number(flags["ttl-ms"]),
|
|
541
|
+
holder_id: flags["holder-id"],
|
|
542
|
+
}));
|
|
543
|
+
break;
|
|
544
|
+
case "release":
|
|
545
|
+
out(await client.infra.locks.release(pos[0], flags.token));
|
|
546
|
+
break;
|
|
547
|
+
case "renew":
|
|
548
|
+
out(await client.infra.locks.renew(pos[0], {
|
|
549
|
+
token: flags.token,
|
|
550
|
+
ttl_ms: Number(flags["ttl-ms"]),
|
|
551
|
+
}));
|
|
552
|
+
break;
|
|
553
|
+
case "status":
|
|
554
|
+
out(await client.infra.locks.status(pos[0]));
|
|
555
|
+
break;
|
|
556
|
+
default:
|
|
557
|
+
console.error(`Unknown locks command: ${cmd}`);
|
|
558
|
+
process.exit(1);
|
|
224
559
|
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
560
|
+
}
|
|
561
|
+
async function handleSketches(client, cmd, pos, flags) {
|
|
562
|
+
switch (cmd) {
|
|
563
|
+
case "hll": {
|
|
564
|
+
const sub = pos[0];
|
|
565
|
+
switch (sub) {
|
|
566
|
+
case "add":
|
|
567
|
+
out(await client.infra.sketches.hll.add(pos[1], JSON.parse(flags.elements)));
|
|
568
|
+
break;
|
|
569
|
+
case "count":
|
|
570
|
+
out(await client.infra.sketches.hll.count(pos[1]));
|
|
571
|
+
break;
|
|
572
|
+
case "merge":
|
|
573
|
+
out(await client.infra.sketches.hll.merge(flags["dest-key"], JSON.parse(flags["source-keys"])));
|
|
574
|
+
break;
|
|
575
|
+
default:
|
|
576
|
+
console.error(`Unknown sketches hll command: ${sub}`);
|
|
577
|
+
process.exit(1);
|
|
578
|
+
}
|
|
579
|
+
break;
|
|
236
580
|
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
581
|
+
case "cms": {
|
|
582
|
+
const sub = pos[0];
|
|
583
|
+
switch (sub) {
|
|
584
|
+
case "increment":
|
|
585
|
+
out(await client.infra.sketches.cms.increment(pos[1], parseJsonFlag(flags, "elements")));
|
|
586
|
+
break;
|
|
587
|
+
case "estimate":
|
|
588
|
+
out(await client.infra.sketches.cms.estimate(pos[1], flags.item));
|
|
589
|
+
break;
|
|
590
|
+
default:
|
|
591
|
+
console.error(`Unknown sketches cms command: ${sub}`);
|
|
592
|
+
process.exit(1);
|
|
244
593
|
}
|
|
245
|
-
|
|
594
|
+
break;
|
|
246
595
|
}
|
|
596
|
+
default:
|
|
597
|
+
console.error(`Unknown sketches command: ${cmd}`);
|
|
598
|
+
process.exit(1);
|
|
247
599
|
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
600
|
+
}
|
|
601
|
+
async function handleWorkflows(client, cmd, pos, flags) {
|
|
602
|
+
switch (cmd) {
|
|
603
|
+
case "create-blueprint":
|
|
604
|
+
out(await client.infra.workflows.createBlueprint(parseJsonFlag(flags)));
|
|
605
|
+
break;
|
|
606
|
+
case "list-blueprints":
|
|
607
|
+
out(await client.infra.workflows.listBlueprints({
|
|
608
|
+
limit: flags.limit ? Number(flags.limit) : undefined,
|
|
609
|
+
cursor: flags.cursor,
|
|
610
|
+
}));
|
|
611
|
+
break;
|
|
612
|
+
case "trigger":
|
|
613
|
+
out(await client.infra.workflows.trigger(pos[0], {
|
|
614
|
+
input_data: flags["input-data"] ? JSON.parse(flags["input-data"]) : undefined,
|
|
615
|
+
idempotency_key: flags["idempotency-key"],
|
|
616
|
+
}));
|
|
617
|
+
break;
|
|
618
|
+
case "get-execution":
|
|
619
|
+
out(await client.infra.workflows.getExecution(pos[0]));
|
|
620
|
+
break;
|
|
621
|
+
case "cancel":
|
|
622
|
+
out(await client.infra.workflows.cancel(pos[0]));
|
|
623
|
+
break;
|
|
624
|
+
case "resume":
|
|
625
|
+
out(await client.infra.workflows.resume(pos[0], {
|
|
626
|
+
step_id: flags["step-id"],
|
|
627
|
+
override_output: flags["override-output"] ? JSON.parse(flags["override-output"]) : undefined,
|
|
628
|
+
}));
|
|
629
|
+
break;
|
|
630
|
+
default:
|
|
631
|
+
console.error(`Unknown workflows command: ${cmd}`);
|
|
251
632
|
process.exit(1);
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
254
|
-
console.error(`Error: ${e.message}`);
|
|
255
|
-
process.exit(1);
|
|
256
633
|
}
|
|
257
634
|
}
|
|
258
|
-
async function
|
|
635
|
+
async function handleWebhooks(client, cmd, pos, flags) {
|
|
259
636
|
switch (cmd) {
|
|
637
|
+
case "create":
|
|
638
|
+
out(await client.infra.webhooks.create({
|
|
639
|
+
name: flags.name,
|
|
640
|
+
url: flags.url,
|
|
641
|
+
topics: JSON.parse(flags.topics),
|
|
642
|
+
secret: flags.secret,
|
|
643
|
+
enabled: flags.enabled !== undefined ? flags.enabled === "true" : undefined,
|
|
644
|
+
}));
|
|
645
|
+
break;
|
|
646
|
+
case "list":
|
|
647
|
+
out(await client.infra.webhooks.list({
|
|
648
|
+
limit: flags.limit ? Number(flags.limit) : undefined,
|
|
649
|
+
cursor: flags.cursor,
|
|
650
|
+
enabled: flags.enabled !== undefined ? flags.enabled === "true" : undefined,
|
|
651
|
+
}));
|
|
652
|
+
break;
|
|
260
653
|
case "get":
|
|
261
|
-
out(await client.infra.
|
|
654
|
+
out(await client.infra.webhooks.get(pos[0]));
|
|
262
655
|
break;
|
|
263
|
-
case "
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
656
|
+
case "update":
|
|
657
|
+
out(await client.infra.webhooks.update(pos[0], {
|
|
658
|
+
name: flags.name,
|
|
659
|
+
url: flags.url,
|
|
660
|
+
topics: flags.topics ? JSON.parse(flags.topics) : undefined,
|
|
661
|
+
secret: flags.secret,
|
|
662
|
+
enabled: flags.enabled !== undefined ? flags.enabled === "true" : undefined,
|
|
268
663
|
}));
|
|
269
664
|
break;
|
|
270
|
-
}
|
|
271
665
|
case "delete":
|
|
272
|
-
await client.infra.
|
|
666
|
+
await client.infra.webhooks.delete(pos[0]);
|
|
273
667
|
console.log("Deleted");
|
|
274
668
|
break;
|
|
275
|
-
case "
|
|
276
|
-
out(await client.infra.
|
|
669
|
+
case "test":
|
|
670
|
+
out(await client.infra.webhooks.test(pos[0]));
|
|
277
671
|
break;
|
|
278
|
-
case "
|
|
279
|
-
out(await client.infra.
|
|
280
|
-
prefix: flags.prefix,
|
|
672
|
+
case "deliveries":
|
|
673
|
+
out(await client.infra.webhooks.listDeliveries(pos[0], {
|
|
281
674
|
limit: flags.limit ? Number(flags.limit) : undefined,
|
|
282
675
|
cursor: flags.cursor,
|
|
283
676
|
}));
|
|
284
677
|
break;
|
|
678
|
+
case "retry-delivery":
|
|
679
|
+
out(await client.infra.webhooks.retryDelivery(pos[0], pos[1]));
|
|
680
|
+
break;
|
|
681
|
+
case "publish":
|
|
682
|
+
out(await client.infra.webhooks.publish(flags.topic, flags.data ? JSON.parse(flags.data) : {}));
|
|
683
|
+
break;
|
|
285
684
|
default:
|
|
286
|
-
console.error(`Unknown
|
|
685
|
+
console.error(`Unknown webhooks command: ${cmd}`);
|
|
287
686
|
process.exit(1);
|
|
288
687
|
}
|
|
289
688
|
}
|
|
290
|
-
async function
|
|
689
|
+
async function handleMedia(client, cmd, pos, flags) {
|
|
291
690
|
switch (cmd) {
|
|
292
|
-
case "
|
|
293
|
-
|
|
691
|
+
case "upload": {
|
|
692
|
+
const filePath = pos[0];
|
|
693
|
+
const fileData = await (await import("node:fs/promises")).readFile(filePath);
|
|
694
|
+
const data = fileData.buffer.slice(fileData.byteOffset, fileData.byteOffset + fileData.byteLength);
|
|
695
|
+
const filename = filePath.split("/").pop() ?? filePath;
|
|
696
|
+
out(await client.infra.media.upload(filename, data, {
|
|
697
|
+
contentType: flags["content-type"],
|
|
698
|
+
visibility: flags.visibility,
|
|
699
|
+
}));
|
|
294
700
|
break;
|
|
295
|
-
|
|
296
|
-
|
|
701
|
+
}
|
|
702
|
+
case "upload-url":
|
|
703
|
+
out(await client.infra.media.uploadFromUrl(flags.url, {
|
|
704
|
+
filename: flags.filename,
|
|
705
|
+
visibility: flags.visibility,
|
|
706
|
+
}));
|
|
297
707
|
break;
|
|
298
|
-
case "
|
|
299
|
-
out(await client.infra.
|
|
708
|
+
case "list":
|
|
709
|
+
out(await client.infra.media.list({
|
|
710
|
+
limit: flags.limit ? Number(flags.limit) : undefined,
|
|
711
|
+
cursor: flags.cursor,
|
|
712
|
+
media_type: flags["media-type"],
|
|
713
|
+
}));
|
|
714
|
+
break;
|
|
715
|
+
case "get":
|
|
716
|
+
out(await client.infra.media.get(pos[0]));
|
|
717
|
+
break;
|
|
718
|
+
case "delete":
|
|
719
|
+
await client.infra.media.delete(pos[0]);
|
|
720
|
+
console.log("Deleted");
|
|
721
|
+
break;
|
|
722
|
+
case "transform-image":
|
|
723
|
+
out(await client.infra.media.transformImage(pos[0], parseJsonFlag(flags)));
|
|
724
|
+
break;
|
|
725
|
+
case "encode-video":
|
|
726
|
+
out(await client.infra.media.encodeVideo(pos[0], parseJsonFlag(flags)));
|
|
727
|
+
break;
|
|
728
|
+
case "list-variants":
|
|
729
|
+
out(await client.infra.media.listVariants(pos[0]));
|
|
300
730
|
break;
|
|
301
731
|
default:
|
|
302
|
-
console.error(`Unknown
|
|
732
|
+
console.error(`Unknown media command: ${cmd}`);
|
|
303
733
|
process.exit(1);
|
|
304
734
|
}
|
|
305
735
|
}
|
|
306
|
-
async function
|
|
736
|
+
async function handleSearch(client, cmd, pos, flags) {
|
|
307
737
|
switch (cmd) {
|
|
308
|
-
case "create":
|
|
309
|
-
out(await client.infra.
|
|
310
|
-
name: pos[0],
|
|
311
|
-
trigger: {
|
|
312
|
-
type: flags.trigger,
|
|
313
|
-
queue: flags.queue,
|
|
314
|
-
schedule: flags.cron,
|
|
315
|
-
delay_seconds: flags.delay ? Number(flags.delay) : undefined,
|
|
316
|
-
},
|
|
317
|
-
payload: flags.payload ? JSON.parse(flags.payload) : undefined,
|
|
318
|
-
handler: flags.handler,
|
|
319
|
-
max_attempts: flags["max-attempts"] ? Number(flags["max-attempts"]) : undefined,
|
|
320
|
-
backoff: flags.backoff,
|
|
321
|
-
}));
|
|
738
|
+
case "create-index":
|
|
739
|
+
out(await client.infra.decisioning.search.createIndex(parseJsonFlag(flags)));
|
|
322
740
|
break;
|
|
323
|
-
case "list":
|
|
324
|
-
out(await client.infra.
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
741
|
+
case "list-indexes":
|
|
742
|
+
out(await client.infra.decisioning.search.listIndexes());
|
|
743
|
+
break;
|
|
744
|
+
case "get-index":
|
|
745
|
+
out(await client.infra.decisioning.search.getIndex(pos[0]));
|
|
746
|
+
break;
|
|
747
|
+
case "update-index":
|
|
748
|
+
out(await client.infra.decisioning.search.updateIndex(pos[0], parseJsonFlag(flags)));
|
|
749
|
+
break;
|
|
750
|
+
case "delete-index":
|
|
751
|
+
await client.infra.decisioning.search.deleteIndex(pos[0]);
|
|
752
|
+
console.log("Deleted");
|
|
753
|
+
break;
|
|
754
|
+
case "upsert-docs":
|
|
755
|
+
out(await client.infra.decisioning.search.upsertDocuments(pos[0], parseJsonFlag(flags)));
|
|
756
|
+
break;
|
|
757
|
+
case "list-docs":
|
|
758
|
+
out(await client.infra.decisioning.search.listDocuments(pos[0]));
|
|
759
|
+
break;
|
|
760
|
+
case "get-doc":
|
|
761
|
+
out(await client.infra.decisioning.search.getDocument(pos[0], pos[1]));
|
|
762
|
+
break;
|
|
763
|
+
case "delete-doc":
|
|
764
|
+
await client.infra.decisioning.search.deleteDocument(pos[0], pos[1]);
|
|
765
|
+
console.log("Deleted");
|
|
766
|
+
break;
|
|
767
|
+
case "query":
|
|
768
|
+
out(await client.infra.decisioning.search.query(pos[0], parseJsonFlag(flags)));
|
|
769
|
+
break;
|
|
770
|
+
case "suggest":
|
|
771
|
+
out(await client.infra.decisioning.search.suggest(pos[0], {
|
|
772
|
+
prefix: flags.prefix,
|
|
328
773
|
limit: flags.limit ? Number(flags.limit) : undefined,
|
|
329
774
|
}));
|
|
330
775
|
break;
|
|
331
|
-
case "
|
|
332
|
-
out(await client.infra.
|
|
776
|
+
case "stats":
|
|
777
|
+
out(await client.infra.decisioning.search.stats(pos[0]));
|
|
333
778
|
break;
|
|
334
|
-
case "
|
|
335
|
-
out(await client.infra.
|
|
779
|
+
case "rebuild":
|
|
780
|
+
out(await client.infra.decisioning.search.rebuild(pos[0], {
|
|
781
|
+
async: flags.async === "true",
|
|
782
|
+
}));
|
|
336
783
|
break;
|
|
337
|
-
|
|
338
|
-
|
|
784
|
+
default:
|
|
785
|
+
console.error(`Unknown search command: ${cmd}`);
|
|
786
|
+
process.exit(1);
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
async function handleMatching(client, cmd, pos, flags) {
|
|
790
|
+
switch (cmd) {
|
|
791
|
+
case "create-operation":
|
|
792
|
+
out(await client.infra.decisioning.matching.createOperation(parseJsonFlag(flags)));
|
|
339
793
|
break;
|
|
340
|
-
case "
|
|
341
|
-
out(await client.infra.
|
|
794
|
+
case "batch-operation":
|
|
795
|
+
out(await client.infra.decisioning.matching.createBatchOperation(parseJsonFlag(flags)));
|
|
342
796
|
break;
|
|
343
|
-
case "
|
|
344
|
-
out(await client.infra.
|
|
797
|
+
case "get-operation":
|
|
798
|
+
out(await client.infra.decisioning.matching.getOperation(pos[0]));
|
|
345
799
|
break;
|
|
346
|
-
case "
|
|
347
|
-
out(await client.infra.
|
|
348
|
-
count: flags.count ? Number(flags.count) : undefined,
|
|
349
|
-
visibility_timeout: flags.timeout ? Number(flags.timeout) : undefined,
|
|
350
|
-
}));
|
|
800
|
+
case "cancel-operation":
|
|
801
|
+
out(await client.infra.decisioning.matching.cancelOperation(pos[0]));
|
|
351
802
|
break;
|
|
352
|
-
case "
|
|
353
|
-
out(await client.infra.
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
803
|
+
case "create-template":
|
|
804
|
+
out(await client.infra.decisioning.matching.createTemplate(parseJsonFlag(flags)));
|
|
805
|
+
break;
|
|
806
|
+
case "list-templates":
|
|
807
|
+
out(await client.infra.decisioning.matching.listTemplates());
|
|
808
|
+
break;
|
|
809
|
+
case "get-template":
|
|
810
|
+
out(await client.infra.decisioning.matching.getTemplate(pos[0]));
|
|
811
|
+
break;
|
|
812
|
+
case "update-template":
|
|
813
|
+
out(await client.infra.decisioning.matching.updateTemplate(pos[0], parseJsonFlag(flags)));
|
|
814
|
+
break;
|
|
815
|
+
case "delete-template":
|
|
816
|
+
await client.infra.decisioning.matching.deleteTemplate(pos[0]);
|
|
817
|
+
console.log("Deleted");
|
|
818
|
+
break;
|
|
819
|
+
case "template-operation":
|
|
820
|
+
out(await client.infra.decisioning.matching.createTemplateOperation(pos[0], flags.body ? parseJsonFlag(flags) : undefined));
|
|
821
|
+
break;
|
|
822
|
+
default:
|
|
823
|
+
console.error(`Unknown matching command: ${cmd}`);
|
|
824
|
+
process.exit(1);
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
async function handleRanking(client, cmd, pos, flags) {
|
|
828
|
+
switch (cmd) {
|
|
829
|
+
case "create-collection":
|
|
830
|
+
out(await client.infra.decisioning.ranking.createCollection(parseJsonFlag(flags)));
|
|
831
|
+
break;
|
|
832
|
+
case "list-collections":
|
|
833
|
+
out(await client.infra.decisioning.ranking.listCollections());
|
|
834
|
+
break;
|
|
835
|
+
case "get-collection":
|
|
836
|
+
out(await client.infra.decisioning.ranking.getCollection(pos[0]));
|
|
837
|
+
break;
|
|
838
|
+
case "update-collection":
|
|
839
|
+
out(await client.infra.decisioning.ranking.updateCollection(pos[0], parseJsonFlag(flags)));
|
|
840
|
+
break;
|
|
841
|
+
case "delete-collection":
|
|
842
|
+
await client.infra.decisioning.ranking.deleteCollection(pos[0]);
|
|
843
|
+
console.log("Deleted");
|
|
844
|
+
break;
|
|
845
|
+
case "upsert-items":
|
|
846
|
+
out(await client.infra.decisioning.ranking.upsertItems(pos[0], parseJsonFlag(flags)));
|
|
847
|
+
break;
|
|
848
|
+
case "list-items":
|
|
849
|
+
out(await client.infra.decisioning.ranking.listItems(pos[0]));
|
|
850
|
+
break;
|
|
851
|
+
case "get-item":
|
|
852
|
+
out(await client.infra.decisioning.ranking.getItem(pos[0], pos[1]));
|
|
853
|
+
break;
|
|
854
|
+
case "delete-item":
|
|
855
|
+
await client.infra.decisioning.ranking.deleteItem(pos[0], pos[1]);
|
|
856
|
+
console.log("Deleted");
|
|
857
|
+
break;
|
|
858
|
+
case "ingest-signals":
|
|
859
|
+
out(await client.infra.decisioning.ranking.ingestSignals(pos[0], parseJsonFlag(flags)));
|
|
860
|
+
break;
|
|
861
|
+
case "rank":
|
|
862
|
+
out(await client.infra.decisioning.ranking.rank(pos[0], parseJsonFlag(flags)));
|
|
863
|
+
break;
|
|
864
|
+
case "related":
|
|
865
|
+
out(await client.infra.decisioning.ranking.related(pos[0], parseJsonFlag(flags)));
|
|
866
|
+
break;
|
|
867
|
+
case "stats":
|
|
868
|
+
out(await client.infra.decisioning.ranking.stats(pos[0]));
|
|
869
|
+
break;
|
|
870
|
+
default:
|
|
871
|
+
console.error(`Unknown ranking command: ${cmd}`);
|
|
872
|
+
process.exit(1);
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
async function handleLogistics(client, cmd, pos, flags) {
|
|
876
|
+
switch (cmd) {
|
|
877
|
+
case "geo": {
|
|
878
|
+
const sub = pos[0];
|
|
879
|
+
switch (sub) {
|
|
880
|
+
case "create":
|
|
881
|
+
out(await client.logistics.geo.create(parseJsonFlag(flags)));
|
|
882
|
+
break;
|
|
883
|
+
case "list":
|
|
884
|
+
out(await client.logistics.geo.list({
|
|
885
|
+
type: flags.type,
|
|
886
|
+
status: flags.status,
|
|
887
|
+
limit: flags.limit ? Number(flags.limit) : undefined,
|
|
888
|
+
cursor: flags.cursor,
|
|
889
|
+
}));
|
|
890
|
+
break;
|
|
891
|
+
case "nearby":
|
|
892
|
+
out(await client.logistics.geo.nearby({
|
|
893
|
+
lat: Number(flags.lat),
|
|
894
|
+
lng: Number(flags.lng),
|
|
895
|
+
radius_km: flags["radius-km"] ? Number(flags["radius-km"]) : undefined,
|
|
896
|
+
type: flags.type,
|
|
897
|
+
status: flags.status,
|
|
898
|
+
limit: flags.limit ? Number(flags.limit) : undefined,
|
|
899
|
+
}));
|
|
900
|
+
break;
|
|
901
|
+
case "get":
|
|
902
|
+
out(await client.logistics.geo.get(pos[1]));
|
|
903
|
+
break;
|
|
904
|
+
case "update":
|
|
905
|
+
out(await client.logistics.geo.update(pos[1], parseJsonFlag(flags)));
|
|
906
|
+
break;
|
|
907
|
+
case "deactivate":
|
|
908
|
+
out(await client.logistics.geo.deactivate(pos[1]));
|
|
909
|
+
break;
|
|
910
|
+
default:
|
|
911
|
+
console.error(`Unknown logistics geo command: ${sub}`);
|
|
912
|
+
process.exit(1);
|
|
913
|
+
}
|
|
914
|
+
break;
|
|
915
|
+
}
|
|
916
|
+
case "geofences": {
|
|
917
|
+
const sub = pos[0];
|
|
918
|
+
switch (sub) {
|
|
919
|
+
case "create":
|
|
920
|
+
out(await client.logistics.geofences.create(parseJsonFlag(flags)));
|
|
921
|
+
break;
|
|
922
|
+
case "list":
|
|
923
|
+
out(await client.logistics.geofences.list({
|
|
924
|
+
enabled: flags.enabled !== undefined ? flags.enabled === "true" : undefined,
|
|
925
|
+
limit: flags.limit ? Number(flags.limit) : undefined,
|
|
926
|
+
cursor: flags.cursor,
|
|
927
|
+
}));
|
|
928
|
+
break;
|
|
929
|
+
case "get":
|
|
930
|
+
out(await client.logistics.geofences.get(pos[1]));
|
|
931
|
+
break;
|
|
932
|
+
case "delete":
|
|
933
|
+
out(await client.logistics.geofences.delete(pos[1]));
|
|
934
|
+
break;
|
|
935
|
+
default:
|
|
936
|
+
console.error(`Unknown logistics geofences command: ${sub}`);
|
|
937
|
+
process.exit(1);
|
|
938
|
+
}
|
|
939
|
+
break;
|
|
940
|
+
}
|
|
941
|
+
case "eta-fences": {
|
|
942
|
+
const sub = pos[0];
|
|
943
|
+
switch (sub) {
|
|
944
|
+
case "create":
|
|
945
|
+
out(await client.logistics.etaFences.create({
|
|
946
|
+
name: flags.name,
|
|
947
|
+
dest_lat: Number(flags["dest-lat"]),
|
|
948
|
+
dest_lng: Number(flags["dest-lng"]),
|
|
949
|
+
threshold_min: Number(flags.threshold),
|
|
950
|
+
avg_speed_kmh: flags["avg-speed"] ? Number(flags["avg-speed"]) : undefined,
|
|
951
|
+
}));
|
|
952
|
+
break;
|
|
953
|
+
case "list":
|
|
954
|
+
out(await client.logistics.etaFences.list({
|
|
955
|
+
enabled: flags.enabled !== undefined ? flags.enabled === "true" : undefined,
|
|
956
|
+
limit: flags.limit ? Number(flags.limit) : undefined,
|
|
957
|
+
cursor: flags.cursor,
|
|
958
|
+
}));
|
|
959
|
+
break;
|
|
960
|
+
case "get":
|
|
961
|
+
out(await client.logistics.etaFences.get(pos[1]));
|
|
962
|
+
break;
|
|
963
|
+
case "delete":
|
|
964
|
+
out(await client.logistics.etaFences.delete(pos[1]));
|
|
965
|
+
break;
|
|
966
|
+
default:
|
|
967
|
+
console.error(`Unknown logistics eta-fences command: ${sub}`);
|
|
968
|
+
process.exit(1);
|
|
969
|
+
}
|
|
970
|
+
break;
|
|
971
|
+
}
|
|
972
|
+
case "tracking": {
|
|
973
|
+
const sub = pos[0];
|
|
974
|
+
switch (sub) {
|
|
975
|
+
case "ping":
|
|
976
|
+
out(await client.logistics.tracking.ping(pos[1], {
|
|
977
|
+
lat: Number(flags.lat),
|
|
978
|
+
lng: Number(flags.lng),
|
|
979
|
+
heading: flags.heading ? Number(flags.heading) : undefined,
|
|
980
|
+
speed: flags.speed ? Number(flags.speed) : undefined,
|
|
981
|
+
accuracy: flags.accuracy ? Number(flags.accuracy) : undefined,
|
|
982
|
+
}));
|
|
983
|
+
break;
|
|
984
|
+
case "batch-ping":
|
|
985
|
+
out(await client.logistics.tracking.batchPing(pos[1], parseJsonFlag(flags, "pings")));
|
|
986
|
+
break;
|
|
987
|
+
case "history":
|
|
988
|
+
out(await client.logistics.tracking.history(pos[1], {
|
|
989
|
+
limit: flags.limit ? Number(flags.limit) : undefined,
|
|
990
|
+
cursor: flags.cursor,
|
|
991
|
+
}));
|
|
992
|
+
break;
|
|
993
|
+
default:
|
|
994
|
+
console.error(`Unknown logistics tracking command: ${sub}`);
|
|
995
|
+
process.exit(1);
|
|
996
|
+
}
|
|
997
|
+
break;
|
|
998
|
+
}
|
|
999
|
+
case "routing": {
|
|
1000
|
+
const sub = pos[0];
|
|
1001
|
+
switch (sub) {
|
|
1002
|
+
case "route":
|
|
1003
|
+
out(await client.logistics.routing.route({ lat: Number(flags["origin-lat"]), lng: Number(flags["origin-lng"]) }, { lat: Number(flags["dest-lat"]), lng: Number(flags["dest-lng"]) }, flags.waypoints ? JSON.parse(flags.waypoints) : undefined));
|
|
1004
|
+
break;
|
|
1005
|
+
case "optimize":
|
|
1006
|
+
out(await client.logistics.routing.optimize({ lat: Number(flags["origin-lat"]), lng: Number(flags["origin-lng"]) }, parseJsonFlag(flags, "stops"), flags["dest-lat"] ? { lat: Number(flags["dest-lat"]), lng: Number(flags["dest-lng"]) } : undefined));
|
|
1007
|
+
break;
|
|
1008
|
+
case "distance-matrix":
|
|
1009
|
+
out(await client.logistics.routing.distanceMatrix(parseJsonFlag(flags, "origins"), parseJsonFlag(flags, "destinations")));
|
|
1010
|
+
break;
|
|
1011
|
+
case "dispatch":
|
|
1012
|
+
out(await client.logistics.routing.dispatch(parseJsonFlag(flags, "agents"), parseJsonFlag(flags, "tasks")));
|
|
1013
|
+
break;
|
|
1014
|
+
case "isochrone":
|
|
1015
|
+
out(await client.logistics.routing.isochrone({ lat: Number(flags["origin-lat"]), lng: Number(flags["origin-lng"]) }, JSON.parse(flags.minutes), flags.profile));
|
|
1016
|
+
break;
|
|
1017
|
+
case "snap":
|
|
1018
|
+
out(await client.logistics.routing.snap(parseJsonFlag(flags, "pings"), flags.profile));
|
|
1019
|
+
break;
|
|
1020
|
+
default:
|
|
1021
|
+
console.error(`Unknown logistics routing command: ${sub}`);
|
|
1022
|
+
process.exit(1);
|
|
1023
|
+
}
|
|
1024
|
+
break;
|
|
1025
|
+
}
|
|
1026
|
+
case "geocoding": {
|
|
1027
|
+
const sub = pos[0];
|
|
1028
|
+
switch (sub) {
|
|
1029
|
+
case "forward":
|
|
1030
|
+
out(await client.logistics.geocoding.forward(flags.q ?? pos[1], {
|
|
1031
|
+
limit: flags.limit ? Number(flags.limit) : undefined,
|
|
1032
|
+
country: flags.country,
|
|
1033
|
+
bbox: flags.bbox,
|
|
1034
|
+
}));
|
|
1035
|
+
break;
|
|
1036
|
+
case "reverse":
|
|
1037
|
+
out(await client.logistics.geocoding.reverse(Number(flags.lat), Number(flags.lng)));
|
|
1038
|
+
break;
|
|
1039
|
+
case "autocomplete":
|
|
1040
|
+
out(await client.logistics.geocoding.autocomplete(flags.q ?? pos[1], {
|
|
1041
|
+
limit: flags.limit ? Number(flags.limit) : undefined,
|
|
1042
|
+
country: flags.country,
|
|
1043
|
+
language: flags.language,
|
|
1044
|
+
}));
|
|
1045
|
+
break;
|
|
1046
|
+
default:
|
|
1047
|
+
console.error(`Unknown logistics geocoding command: ${sub}`);
|
|
1048
|
+
process.exit(1);
|
|
1049
|
+
}
|
|
1050
|
+
break;
|
|
1051
|
+
}
|
|
1052
|
+
default:
|
|
1053
|
+
console.error(`Unknown logistics command: ${cmd}`);
|
|
1054
|
+
process.exit(1);
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
async function handleCommerce(client, cmd, pos, flags) {
|
|
1058
|
+
switch (cmd) {
|
|
1059
|
+
case "settings": {
|
|
1060
|
+
const sub = pos[0];
|
|
1061
|
+
if (!sub || sub === "get") {
|
|
1062
|
+
out(await client.commerce.settings.get());
|
|
1063
|
+
}
|
|
1064
|
+
else if (sub === "update") {
|
|
1065
|
+
out(await client.commerce.settings.update(parseJsonFlag(flags)));
|
|
1066
|
+
}
|
|
1067
|
+
else {
|
|
1068
|
+
console.error(`Unknown commerce settings command: ${sub}`);
|
|
1069
|
+
process.exit(1);
|
|
1070
|
+
}
|
|
1071
|
+
break;
|
|
1072
|
+
}
|
|
1073
|
+
case "catalogs": {
|
|
1074
|
+
const sub = pos[0];
|
|
1075
|
+
switch (sub) {
|
|
1076
|
+
case "list":
|
|
1077
|
+
out(await client.commerce.catalogs.list({ limit: flags.limit ? Number(flags.limit) : undefined, cursor: flags.cursor }));
|
|
1078
|
+
break;
|
|
1079
|
+
case "get":
|
|
1080
|
+
out(await client.commerce.catalogs.get(pos[1]));
|
|
1081
|
+
break;
|
|
1082
|
+
case "create":
|
|
1083
|
+
out(await client.commerce.catalogs.create({ name: flags.name, description: flags.description, metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined }));
|
|
1084
|
+
break;
|
|
1085
|
+
case "update":
|
|
1086
|
+
out(await client.commerce.catalogs.update(pos[1], { name: flags.name, description: flags.description, metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined }));
|
|
1087
|
+
break;
|
|
1088
|
+
case "delete":
|
|
1089
|
+
await client.commerce.catalogs.delete(pos[1]);
|
|
1090
|
+
console.log("Deleted");
|
|
1091
|
+
break;
|
|
1092
|
+
default:
|
|
1093
|
+
console.error(`Unknown commerce catalogs command: ${sub}`);
|
|
1094
|
+
process.exit(1);
|
|
1095
|
+
}
|
|
1096
|
+
break;
|
|
1097
|
+
}
|
|
1098
|
+
case "categories": {
|
|
1099
|
+
const sub = pos[0];
|
|
1100
|
+
switch (sub) {
|
|
1101
|
+
case "list":
|
|
1102
|
+
out(await client.commerce.categories.list({ catalog_id: flags["catalog-id"], parent_id: flags["parent-id"], limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
1103
|
+
break;
|
|
1104
|
+
case "get":
|
|
1105
|
+
out(await client.commerce.categories.get(pos[1]));
|
|
1106
|
+
break;
|
|
1107
|
+
case "tree":
|
|
1108
|
+
out(await client.commerce.categories.getTree(pos[1]));
|
|
1109
|
+
break;
|
|
1110
|
+
case "create":
|
|
1111
|
+
out(await client.commerce.categories.create(parseJsonFlag(flags)));
|
|
1112
|
+
break;
|
|
1113
|
+
case "update":
|
|
1114
|
+
out(await client.commerce.categories.update(pos[1], parseJsonFlag(flags)));
|
|
1115
|
+
break;
|
|
1116
|
+
case "delete":
|
|
1117
|
+
await client.commerce.categories.delete(pos[1]);
|
|
1118
|
+
console.log("Deleted");
|
|
1119
|
+
break;
|
|
1120
|
+
default:
|
|
1121
|
+
console.error(`Unknown commerce categories command: ${sub}`);
|
|
1122
|
+
process.exit(1);
|
|
1123
|
+
}
|
|
1124
|
+
break;
|
|
1125
|
+
}
|
|
1126
|
+
case "products": {
|
|
1127
|
+
const sub = pos[0];
|
|
1128
|
+
switch (sub) {
|
|
1129
|
+
case "list":
|
|
1130
|
+
out(await client.commerce.products.list({ catalog_id: flags["catalog-id"], category_id: flags["category-id"], status: flags.status, tag: flags.tag, limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
1131
|
+
break;
|
|
1132
|
+
case "get":
|
|
1133
|
+
out(await client.commerce.products.get(pos[1]));
|
|
1134
|
+
break;
|
|
1135
|
+
case "create":
|
|
1136
|
+
out(await client.commerce.products.create(parseJsonFlag(flags)));
|
|
1137
|
+
break;
|
|
1138
|
+
case "update":
|
|
1139
|
+
out(await client.commerce.products.update(pos[1], parseJsonFlag(flags)));
|
|
1140
|
+
break;
|
|
1141
|
+
case "delete":
|
|
1142
|
+
await client.commerce.products.delete(pos[1]);
|
|
1143
|
+
console.log("Deleted");
|
|
1144
|
+
break;
|
|
1145
|
+
default:
|
|
1146
|
+
console.error(`Unknown commerce products command: ${sub}`);
|
|
1147
|
+
process.exit(1);
|
|
1148
|
+
}
|
|
1149
|
+
break;
|
|
1150
|
+
}
|
|
1151
|
+
case "variants": {
|
|
1152
|
+
const sub = pos[0];
|
|
1153
|
+
switch (sub) {
|
|
1154
|
+
case "list":
|
|
1155
|
+
out(await client.commerce.variants.list(pos[1]));
|
|
1156
|
+
break;
|
|
1157
|
+
case "get":
|
|
1158
|
+
out(await client.commerce.variants.get(pos[1], pos[2]));
|
|
1159
|
+
break;
|
|
1160
|
+
case "create":
|
|
1161
|
+
out(await client.commerce.variants.create(pos[1], parseJsonFlag(flags)));
|
|
1162
|
+
break;
|
|
1163
|
+
case "update":
|
|
1164
|
+
out(await client.commerce.variants.update(pos[1], pos[2], parseJsonFlag(flags)));
|
|
1165
|
+
break;
|
|
1166
|
+
case "delete":
|
|
1167
|
+
await client.commerce.variants.delete(pos[1], pos[2]);
|
|
1168
|
+
console.log("Deleted");
|
|
1169
|
+
break;
|
|
1170
|
+
default:
|
|
1171
|
+
console.error(`Unknown commerce variants command: ${sub}`);
|
|
1172
|
+
process.exit(1);
|
|
1173
|
+
}
|
|
1174
|
+
break;
|
|
1175
|
+
}
|
|
1176
|
+
case "inventory": {
|
|
1177
|
+
const sub = pos[0];
|
|
1178
|
+
switch (sub) {
|
|
1179
|
+
case "list":
|
|
1180
|
+
out(await client.commerce.inventory.list({ product_id: flags["product-id"], variant_id: flags["variant-id"], location: flags.location, limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
1181
|
+
break;
|
|
1182
|
+
case "get":
|
|
1183
|
+
out(await client.commerce.inventory.get(pos[1]));
|
|
1184
|
+
break;
|
|
1185
|
+
case "update":
|
|
1186
|
+
out(await client.commerce.inventory.update(pos[1], parseJsonFlag(flags)));
|
|
1187
|
+
break;
|
|
1188
|
+
case "adjust":
|
|
1189
|
+
out(await client.commerce.inventory.adjust(pos[1], { adjustment: Number(flags.adjustment), reason: flags.reason }));
|
|
1190
|
+
break;
|
|
1191
|
+
default:
|
|
1192
|
+
console.error(`Unknown commerce inventory command: ${sub}`);
|
|
1193
|
+
process.exit(1);
|
|
1194
|
+
}
|
|
1195
|
+
break;
|
|
1196
|
+
}
|
|
1197
|
+
case "customers": {
|
|
1198
|
+
const sub = pos[0];
|
|
1199
|
+
switch (sub) {
|
|
1200
|
+
case "list":
|
|
1201
|
+
out(await client.commerce.customers.list({ limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
1202
|
+
break;
|
|
1203
|
+
case "get":
|
|
1204
|
+
out(await client.commerce.customers.get(pos[1]));
|
|
1205
|
+
break;
|
|
1206
|
+
case "create":
|
|
1207
|
+
out(await client.commerce.customers.create({ name: flags.name, external_id: flags["external-id"], email: flags.email, phone: flags.phone, metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined }));
|
|
1208
|
+
break;
|
|
1209
|
+
case "update":
|
|
1210
|
+
out(await client.commerce.customers.update(pos[1], { name: flags.name, external_id: flags["external-id"], email: flags.email, phone: flags.phone, metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined }));
|
|
1211
|
+
break;
|
|
1212
|
+
case "delete":
|
|
1213
|
+
await client.commerce.customers.delete(pos[1]);
|
|
1214
|
+
console.log("Deleted");
|
|
1215
|
+
break;
|
|
1216
|
+
case "addresses": {
|
|
1217
|
+
const addrCmd = pos[1];
|
|
1218
|
+
switch (addrCmd) {
|
|
1219
|
+
case "list":
|
|
1220
|
+
out(await client.commerce.customers.listAddresses(pos[2]));
|
|
1221
|
+
break;
|
|
1222
|
+
case "add":
|
|
1223
|
+
out(await client.commerce.customers.addAddress(pos[2], parseJsonFlag(flags)));
|
|
1224
|
+
break;
|
|
1225
|
+
case "delete":
|
|
1226
|
+
await client.commerce.customers.deleteAddress(pos[2], pos[3]);
|
|
1227
|
+
console.log("Deleted");
|
|
1228
|
+
break;
|
|
1229
|
+
default:
|
|
1230
|
+
console.error(`Unknown commerce customers addresses command: ${addrCmd}`);
|
|
1231
|
+
process.exit(1);
|
|
1232
|
+
}
|
|
1233
|
+
break;
|
|
1234
|
+
}
|
|
1235
|
+
default:
|
|
1236
|
+
console.error(`Unknown commerce customers command: ${sub}`);
|
|
1237
|
+
process.exit(1);
|
|
1238
|
+
}
|
|
1239
|
+
break;
|
|
1240
|
+
}
|
|
1241
|
+
case "carts": {
|
|
1242
|
+
const sub = pos[0];
|
|
1243
|
+
switch (sub) {
|
|
1244
|
+
case "create":
|
|
1245
|
+
out(await client.commerce.carts.create({ customer_id: flags["customer-id"], currency: flags.currency, metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined }));
|
|
1246
|
+
break;
|
|
1247
|
+
case "get":
|
|
1248
|
+
out(await client.commerce.carts.get(pos[1]));
|
|
1249
|
+
break;
|
|
1250
|
+
case "add-item":
|
|
1251
|
+
out(await client.commerce.carts.addItem(pos[1], { product_id: flags["product-id"], variant_id: flags["variant-id"], quantity: Number(flags.quantity) }));
|
|
1252
|
+
break;
|
|
1253
|
+
case "update-item":
|
|
1254
|
+
out(await client.commerce.carts.updateItem(pos[1], pos[2], { quantity: Number(flags.quantity) }));
|
|
1255
|
+
break;
|
|
1256
|
+
case "remove-item":
|
|
1257
|
+
out(await client.commerce.carts.removeItem(pos[1], pos[2]));
|
|
1258
|
+
break;
|
|
1259
|
+
case "apply-discount":
|
|
1260
|
+
out(await client.commerce.carts.applyDiscount(pos[1], { code: flags.code }));
|
|
1261
|
+
break;
|
|
1262
|
+
case "remove-discount":
|
|
1263
|
+
out(await client.commerce.carts.removeDiscount(pos[1]));
|
|
1264
|
+
break;
|
|
1265
|
+
case "checkout":
|
|
1266
|
+
out(await client.commerce.carts.checkout(pos[1], flags.body ? parseJsonFlag(flags) : {}));
|
|
1267
|
+
break;
|
|
1268
|
+
default:
|
|
1269
|
+
console.error(`Unknown commerce carts command: ${sub}`);
|
|
1270
|
+
process.exit(1);
|
|
1271
|
+
}
|
|
1272
|
+
break;
|
|
1273
|
+
}
|
|
1274
|
+
case "orders": {
|
|
1275
|
+
const sub = pos[0];
|
|
1276
|
+
switch (sub) {
|
|
1277
|
+
case "list":
|
|
1278
|
+
out(await client.commerce.orders.list({ status: flags.status, customer_id: flags["customer-id"], limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
1279
|
+
break;
|
|
1280
|
+
case "get":
|
|
1281
|
+
out(await client.commerce.orders.get(pos[1]));
|
|
1282
|
+
break;
|
|
1283
|
+
case "update":
|
|
1284
|
+
out(await client.commerce.orders.update(pos[1], parseJsonFlag(flags)));
|
|
1285
|
+
break;
|
|
1286
|
+
case "transition":
|
|
1287
|
+
out(await client.commerce.orders.transition(pos[1], { status: flags.status, reason: flags.reason, actor: flags.actor }));
|
|
1288
|
+
break;
|
|
1289
|
+
case "events":
|
|
1290
|
+
out(await client.commerce.orders.getEvents(pos[1]));
|
|
1291
|
+
break;
|
|
1292
|
+
case "delete":
|
|
1293
|
+
await client.commerce.orders.delete(pos[1]);
|
|
1294
|
+
console.log("Deleted");
|
|
1295
|
+
break;
|
|
1296
|
+
default:
|
|
1297
|
+
console.error(`Unknown commerce orders command: ${sub}`);
|
|
1298
|
+
process.exit(1);
|
|
1299
|
+
}
|
|
1300
|
+
break;
|
|
1301
|
+
}
|
|
1302
|
+
case "payments": {
|
|
1303
|
+
const sub = pos[0];
|
|
1304
|
+
switch (sub) {
|
|
1305
|
+
case "list":
|
|
1306
|
+
out(await client.commerce.payments.list(pos[1]));
|
|
1307
|
+
break;
|
|
1308
|
+
case "get":
|
|
1309
|
+
out(await client.commerce.payments.get(pos[1], pos[2]));
|
|
1310
|
+
break;
|
|
1311
|
+
case "create":
|
|
1312
|
+
out(await client.commerce.payments.create(pos[1], parseJsonFlag(flags)));
|
|
1313
|
+
break;
|
|
1314
|
+
case "transition":
|
|
1315
|
+
out(await client.commerce.payments.transition(pos[1], pos[2], { status: flags.status, reason: flags.reason }));
|
|
1316
|
+
break;
|
|
1317
|
+
default:
|
|
1318
|
+
console.error(`Unknown commerce payments command: ${sub}`);
|
|
1319
|
+
process.exit(1);
|
|
1320
|
+
}
|
|
1321
|
+
break;
|
|
1322
|
+
}
|
|
1323
|
+
case "reviews": {
|
|
1324
|
+
const sub = pos[0];
|
|
1325
|
+
switch (sub) {
|
|
1326
|
+
case "list":
|
|
1327
|
+
out(await client.commerce.reviews.list({ product_id: flags["product-id"], customer_id: flags["customer-id"], status: flags.status, limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
1328
|
+
break;
|
|
1329
|
+
case "get":
|
|
1330
|
+
out(await client.commerce.reviews.get(pos[1]));
|
|
1331
|
+
break;
|
|
1332
|
+
case "create":
|
|
1333
|
+
out(await client.commerce.reviews.create(parseJsonFlag(flags)));
|
|
1334
|
+
break;
|
|
1335
|
+
case "transition":
|
|
1336
|
+
out(await client.commerce.reviews.transition(pos[1], { status: flags.status, reason: flags.reason }));
|
|
1337
|
+
break;
|
|
1338
|
+
case "delete":
|
|
1339
|
+
await client.commerce.reviews.delete(pos[1]);
|
|
1340
|
+
console.log("Deleted");
|
|
1341
|
+
break;
|
|
1342
|
+
default:
|
|
1343
|
+
console.error(`Unknown commerce reviews command: ${sub}`);
|
|
1344
|
+
process.exit(1);
|
|
1345
|
+
}
|
|
1346
|
+
break;
|
|
1347
|
+
}
|
|
1348
|
+
case "discounts": {
|
|
1349
|
+
const sub = pos[0];
|
|
1350
|
+
switch (sub) {
|
|
1351
|
+
case "list":
|
|
1352
|
+
out(await client.commerce.discounts.list({ enabled: flags.enabled !== undefined ? flags.enabled === "true" : undefined, limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
1353
|
+
break;
|
|
1354
|
+
case "get":
|
|
1355
|
+
out(await client.commerce.discounts.get(pos[1]));
|
|
1356
|
+
break;
|
|
1357
|
+
case "create":
|
|
1358
|
+
out(await client.commerce.discounts.create(parseJsonFlag(flags)));
|
|
1359
|
+
break;
|
|
1360
|
+
case "update":
|
|
1361
|
+
out(await client.commerce.discounts.update(pos[1], parseJsonFlag(flags)));
|
|
1362
|
+
break;
|
|
1363
|
+
case "delete":
|
|
1364
|
+
await client.commerce.discounts.delete(pos[1]);
|
|
1365
|
+
console.log("Deleted");
|
|
1366
|
+
break;
|
|
1367
|
+
case "validate":
|
|
1368
|
+
out(await client.commerce.discounts.validate({ code: flags.code, order_amount: flags["order-amount"] ? Number(flags["order-amount"]) : undefined }));
|
|
1369
|
+
break;
|
|
1370
|
+
default:
|
|
1371
|
+
console.error(`Unknown commerce discounts command: ${sub}`);
|
|
1372
|
+
process.exit(1);
|
|
1373
|
+
}
|
|
1374
|
+
break;
|
|
1375
|
+
}
|
|
1376
|
+
case "webhooks": {
|
|
1377
|
+
const sub = pos[0];
|
|
1378
|
+
switch (sub) {
|
|
1379
|
+
case "list":
|
|
1380
|
+
out(await client.commerce.webhooks.list());
|
|
1381
|
+
break;
|
|
1382
|
+
case "create":
|
|
1383
|
+
out(await client.commerce.webhooks.create({ name: flags.name, url: flags.url, topics: JSON.parse(flags.topics), secret: flags.secret }));
|
|
1384
|
+
break;
|
|
1385
|
+
default:
|
|
1386
|
+
console.error(`Unknown commerce webhooks command: ${sub}`);
|
|
1387
|
+
process.exit(1);
|
|
1388
|
+
}
|
|
1389
|
+
break;
|
|
1390
|
+
}
|
|
1391
|
+
case "analytics": {
|
|
1392
|
+
const sub = pos[0];
|
|
1393
|
+
switch (sub) {
|
|
1394
|
+
case "summary":
|
|
1395
|
+
out(await client.commerce.analytics.summary({ from: flags.from, to: flags.to }));
|
|
1396
|
+
break;
|
|
1397
|
+
case "top-products":
|
|
1398
|
+
out(await client.commerce.analytics.topProducts({ from: flags.from, to: flags.to, limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
1399
|
+
break;
|
|
1400
|
+
case "revenue":
|
|
1401
|
+
out(await client.commerce.analytics.revenue({ from: flags.from, to: flags.to, granularity: flags.granularity }));
|
|
1402
|
+
break;
|
|
1403
|
+
default:
|
|
1404
|
+
console.error(`Unknown commerce analytics command: ${sub}`);
|
|
1405
|
+
process.exit(1);
|
|
1406
|
+
}
|
|
1407
|
+
break;
|
|
1408
|
+
}
|
|
1409
|
+
case "export": {
|
|
1410
|
+
const sub = pos[0];
|
|
1411
|
+
switch (sub) {
|
|
1412
|
+
case "orders":
|
|
1413
|
+
out(await client.commerce.export.orders({ from: flags.from, to: flags.to, status: flags.status, format: flags.format }));
|
|
1414
|
+
break;
|
|
1415
|
+
case "products":
|
|
1416
|
+
out(await client.commerce.export.products({ catalog_id: flags["catalog-id"], status: flags.status, format: flags.format }));
|
|
1417
|
+
break;
|
|
1418
|
+
case "customers":
|
|
1419
|
+
out(await client.commerce.export.customers({ format: flags.format }));
|
|
1420
|
+
break;
|
|
1421
|
+
default:
|
|
1422
|
+
console.error(`Unknown commerce export command: ${sub}`);
|
|
1423
|
+
process.exit(1);
|
|
1424
|
+
}
|
|
1425
|
+
break;
|
|
1426
|
+
}
|
|
1427
|
+
default:
|
|
1428
|
+
console.error(`Unknown commerce command: ${cmd}`);
|
|
1429
|
+
process.exit(1);
|
|
1430
|
+
}
|
|
1431
|
+
}
|
|
1432
|
+
async function handleBooking(client, cmd, pos, flags) {
|
|
1433
|
+
switch (cmd) {
|
|
1434
|
+
case "settings": {
|
|
1435
|
+
const sub = pos[0];
|
|
1436
|
+
if (!sub || sub === "get") {
|
|
1437
|
+
out(await client.booking.settings.get());
|
|
1438
|
+
}
|
|
1439
|
+
else if (sub === "update") {
|
|
1440
|
+
out(await client.booking.settings.update(parseJsonFlag(flags)));
|
|
1441
|
+
}
|
|
1442
|
+
else {
|
|
1443
|
+
console.error(`Unknown booking settings command: ${sub}`);
|
|
1444
|
+
process.exit(1);
|
|
1445
|
+
}
|
|
1446
|
+
break;
|
|
1447
|
+
}
|
|
1448
|
+
case "resources": {
|
|
1449
|
+
const sub = pos[0];
|
|
1450
|
+
switch (sub) {
|
|
1451
|
+
case "list":
|
|
1452
|
+
out(await client.booking.resources.list({ type: flags.type, enabled: flags.enabled !== undefined ? flags.enabled === "true" : undefined, limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
1453
|
+
break;
|
|
1454
|
+
case "get":
|
|
1455
|
+
out(await client.booking.resources.get(pos[1]));
|
|
1456
|
+
break;
|
|
1457
|
+
case "create":
|
|
1458
|
+
out(await client.booking.resources.create(parseJsonFlag(flags)));
|
|
1459
|
+
break;
|
|
1460
|
+
case "update":
|
|
1461
|
+
out(await client.booking.resources.update(pos[1], parseJsonFlag(flags)));
|
|
1462
|
+
break;
|
|
1463
|
+
case "delete":
|
|
1464
|
+
await client.booking.resources.delete(pos[1]);
|
|
1465
|
+
console.log("Deleted");
|
|
1466
|
+
break;
|
|
1467
|
+
case "set-availability":
|
|
1468
|
+
out(await client.booking.resources.setAvailability(pos[1], parseJsonFlag(flags, "rules")));
|
|
1469
|
+
break;
|
|
1470
|
+
case "get-availability":
|
|
1471
|
+
out(await client.booking.resources.getAvailability(pos[1]));
|
|
1472
|
+
break;
|
|
1473
|
+
case "slots":
|
|
1474
|
+
out(await client.booking.resources.getSlots(pos[1], flags.date, flags.duration ? Number(flags.duration) : undefined));
|
|
1475
|
+
break;
|
|
1476
|
+
default:
|
|
1477
|
+
console.error(`Unknown booking resources command: ${sub}`);
|
|
1478
|
+
process.exit(1);
|
|
1479
|
+
}
|
|
1480
|
+
break;
|
|
1481
|
+
}
|
|
1482
|
+
case "bookings": {
|
|
1483
|
+
const sub = pos[0];
|
|
1484
|
+
switch (sub) {
|
|
1485
|
+
case "list":
|
|
1486
|
+
out(await client.booking.bookings.list({ status: flags.status, resource_id: flags["resource-id"], customer_id: flags["customer-id"], from: flags.from, to: flags.to, limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
1487
|
+
break;
|
|
1488
|
+
case "get":
|
|
1489
|
+
out(await client.booking.bookings.get(pos[1]));
|
|
1490
|
+
break;
|
|
1491
|
+
case "create":
|
|
1492
|
+
out(await client.booking.bookings.create(parseJsonFlag(flags)));
|
|
1493
|
+
break;
|
|
1494
|
+
case "update":
|
|
1495
|
+
out(await client.booking.bookings.update(pos[1], parseJsonFlag(flags)));
|
|
1496
|
+
break;
|
|
1497
|
+
case "delete":
|
|
1498
|
+
await client.booking.bookings.delete(pos[1]);
|
|
1499
|
+
console.log("Deleted");
|
|
1500
|
+
break;
|
|
1501
|
+
case "transition":
|
|
1502
|
+
out(await client.booking.bookings.transition(pos[1], { status: flags.status, cancel_reason: flags["cancel-reason"], actor: flags.actor }));
|
|
1503
|
+
break;
|
|
1504
|
+
case "events":
|
|
1505
|
+
out(await client.booking.bookings.getEvents(pos[1]));
|
|
1506
|
+
break;
|
|
1507
|
+
default:
|
|
1508
|
+
console.error(`Unknown booking bookings command: ${sub}`);
|
|
1509
|
+
process.exit(1);
|
|
1510
|
+
}
|
|
1511
|
+
break;
|
|
1512
|
+
}
|
|
1513
|
+
case "customers": {
|
|
1514
|
+
const sub = pos[0];
|
|
1515
|
+
switch (sub) {
|
|
1516
|
+
case "list":
|
|
1517
|
+
out(await client.booking.customers.list({ email: flags.email, q: flags.q, limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
1518
|
+
break;
|
|
1519
|
+
case "get":
|
|
1520
|
+
out(await client.booking.customers.get(pos[1]));
|
|
1521
|
+
break;
|
|
1522
|
+
case "create":
|
|
1523
|
+
out(await client.booking.customers.create({ name: flags.name, external_id: flags["external-id"], email: flags.email, phone: flags.phone, notes: flags.notes, metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined }));
|
|
1524
|
+
break;
|
|
1525
|
+
case "update":
|
|
1526
|
+
out(await client.booking.customers.update(pos[1], parseJsonFlag(flags)));
|
|
1527
|
+
break;
|
|
1528
|
+
case "delete":
|
|
1529
|
+
await client.booking.customers.delete(pos[1]);
|
|
1530
|
+
console.log("Deleted");
|
|
1531
|
+
break;
|
|
1532
|
+
default:
|
|
1533
|
+
console.error(`Unknown booking customers command: ${sub}`);
|
|
1534
|
+
process.exit(1);
|
|
1535
|
+
}
|
|
1536
|
+
break;
|
|
1537
|
+
}
|
|
1538
|
+
case "blockers": {
|
|
1539
|
+
const sub = pos[0];
|
|
1540
|
+
switch (sub) {
|
|
1541
|
+
case "list":
|
|
1542
|
+
out(await client.booking.blockers.list({ resource_id: flags["resource-id"], from: flags.from, to: flags.to, limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
1543
|
+
break;
|
|
1544
|
+
case "create":
|
|
1545
|
+
out(await client.booking.blockers.create(parseJsonFlag(flags)));
|
|
1546
|
+
break;
|
|
1547
|
+
case "delete":
|
|
1548
|
+
await client.booking.blockers.delete(pos[1]);
|
|
1549
|
+
console.log("Deleted");
|
|
1550
|
+
break;
|
|
1551
|
+
default:
|
|
1552
|
+
console.error(`Unknown booking blockers command: ${sub}`);
|
|
1553
|
+
process.exit(1);
|
|
1554
|
+
}
|
|
1555
|
+
break;
|
|
1556
|
+
}
|
|
1557
|
+
case "webhooks": {
|
|
1558
|
+
const sub = pos[0];
|
|
1559
|
+
switch (sub) {
|
|
1560
|
+
case "list":
|
|
1561
|
+
out(await client.booking.webhooks.list());
|
|
1562
|
+
break;
|
|
1563
|
+
case "create":
|
|
1564
|
+
out(await client.booking.webhooks.create({ name: flags.name, url: flags.url, topics: JSON.parse(flags.topics), secret: flags.secret }));
|
|
1565
|
+
break;
|
|
1566
|
+
default:
|
|
1567
|
+
console.error(`Unknown booking webhooks command: ${sub}`);
|
|
1568
|
+
process.exit(1);
|
|
1569
|
+
}
|
|
1570
|
+
break;
|
|
1571
|
+
}
|
|
1572
|
+
case "analytics": {
|
|
1573
|
+
const sub = pos[0];
|
|
1574
|
+
switch (sub) {
|
|
1575
|
+
case "summary":
|
|
1576
|
+
out(await client.booking.analytics.summary({ from: flags.from, to: flags.to }));
|
|
1577
|
+
break;
|
|
1578
|
+
case "by-resource":
|
|
1579
|
+
out(await client.booking.analytics.byResource({ from: flags.from, to: flags.to }));
|
|
1580
|
+
break;
|
|
1581
|
+
case "by-period":
|
|
1582
|
+
out(await client.booking.analytics.byPeriod({ from: flags.from, to: flags.to, group_by: flags["group-by"] }));
|
|
1583
|
+
break;
|
|
1584
|
+
default:
|
|
1585
|
+
console.error(`Unknown booking analytics command: ${sub}`);
|
|
1586
|
+
process.exit(1);
|
|
1587
|
+
}
|
|
1588
|
+
break;
|
|
1589
|
+
}
|
|
1590
|
+
case "export": {
|
|
1591
|
+
const sub = pos[0];
|
|
1592
|
+
switch (sub) {
|
|
1593
|
+
case "bookings":
|
|
1594
|
+
out(await client.booking.export.bookings({ from: flags.from, to: flags.to, status: flags.status, format: flags.format }));
|
|
1595
|
+
break;
|
|
1596
|
+
case "customers":
|
|
1597
|
+
out(await client.booking.export.customers({ from: flags.from, to: flags.to, format: flags.format }));
|
|
1598
|
+
break;
|
|
1599
|
+
case "resources":
|
|
1600
|
+
out(await client.booking.export.resources({ type: flags.type, format: flags.format }));
|
|
1601
|
+
break;
|
|
1602
|
+
default:
|
|
1603
|
+
console.error(`Unknown booking export command: ${sub}`);
|
|
1604
|
+
process.exit(1);
|
|
1605
|
+
}
|
|
1606
|
+
break;
|
|
1607
|
+
}
|
|
1608
|
+
default:
|
|
1609
|
+
console.error(`Unknown booking command: ${cmd}`);
|
|
1610
|
+
process.exit(1);
|
|
1611
|
+
}
|
|
1612
|
+
}
|
|
1613
|
+
async function handleMessaging(client, cmd, pos, flags) {
|
|
1614
|
+
switch (cmd) {
|
|
1615
|
+
case "settings": {
|
|
1616
|
+
const sub = pos[0];
|
|
1617
|
+
if (!sub || sub === "get") {
|
|
1618
|
+
out(await client.messaging.settings.get());
|
|
1619
|
+
}
|
|
1620
|
+
else if (sub === "update") {
|
|
1621
|
+
out(await client.messaging.settings.update(parseJsonFlag(flags)));
|
|
1622
|
+
}
|
|
1623
|
+
else {
|
|
1624
|
+
console.error(`Unknown messaging settings command: ${sub}`);
|
|
1625
|
+
process.exit(1);
|
|
1626
|
+
}
|
|
1627
|
+
break;
|
|
1628
|
+
}
|
|
1629
|
+
case "conversations": {
|
|
1630
|
+
const sub = pos[0];
|
|
1631
|
+
switch (sub) {
|
|
1632
|
+
case "list":
|
|
1633
|
+
out(await client.messaging.conversations.list({ type: flags.type, status: flags.status, limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
1634
|
+
break;
|
|
1635
|
+
case "get":
|
|
1636
|
+
out(await client.messaging.conversations.get(pos[1]));
|
|
1637
|
+
break;
|
|
1638
|
+
case "create":
|
|
1639
|
+
out(await client.messaging.conversations.create({ type: flags.type, title: flags.title, description: flags.description, metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined }));
|
|
1640
|
+
break;
|
|
1641
|
+
case "update":
|
|
1642
|
+
out(await client.messaging.conversations.update(pos[1], { title: flags.title, description: flags.description, metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined }));
|
|
1643
|
+
break;
|
|
1644
|
+
case "delete":
|
|
1645
|
+
await client.messaging.conversations.delete(pos[1]);
|
|
1646
|
+
console.log("Deleted");
|
|
1647
|
+
break;
|
|
1648
|
+
case "archive":
|
|
1649
|
+
out(await client.messaging.conversations.archive(pos[1]));
|
|
1650
|
+
break;
|
|
1651
|
+
case "close":
|
|
1652
|
+
out(await client.messaging.conversations.close(pos[1]));
|
|
1653
|
+
break;
|
|
1654
|
+
case "reopen":
|
|
1655
|
+
out(await client.messaging.conversations.reopen(pos[1]));
|
|
1656
|
+
break;
|
|
1657
|
+
default:
|
|
1658
|
+
console.error(`Unknown messaging conversations command: ${sub}`);
|
|
1659
|
+
process.exit(1);
|
|
1660
|
+
}
|
|
1661
|
+
break;
|
|
1662
|
+
}
|
|
1663
|
+
case "participants": {
|
|
1664
|
+
const sub = pos[0];
|
|
1665
|
+
switch (sub) {
|
|
1666
|
+
case "list":
|
|
1667
|
+
out(await client.messaging.participants.list(pos[1], { limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
1668
|
+
break;
|
|
1669
|
+
case "add":
|
|
1670
|
+
out(await client.messaging.participants.add(pos[1], { external_id: flags["external-id"], display_name: flags["display-name"], role: flags.role, metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined }));
|
|
1671
|
+
break;
|
|
1672
|
+
case "update":
|
|
1673
|
+
out(await client.messaging.participants.update(pos[1], pos[2], { display_name: flags["display-name"], role: flags.role, last_read_at: flags["last-read-at"], metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined }));
|
|
1674
|
+
break;
|
|
1675
|
+
case "remove":
|
|
1676
|
+
await client.messaging.participants.remove(pos[1], pos[2]);
|
|
1677
|
+
console.log("Removed");
|
|
1678
|
+
break;
|
|
1679
|
+
default:
|
|
1680
|
+
console.error(`Unknown messaging participants command: ${sub}`);
|
|
1681
|
+
process.exit(1);
|
|
1682
|
+
}
|
|
1683
|
+
break;
|
|
1684
|
+
}
|
|
1685
|
+
case "messages": {
|
|
1686
|
+
const sub = pos[0];
|
|
1687
|
+
switch (sub) {
|
|
1688
|
+
case "list":
|
|
1689
|
+
out(await client.messaging.messages.list(pos[1], { before: flags.before, after: flags.after, limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
1690
|
+
break;
|
|
1691
|
+
case "get":
|
|
1692
|
+
out(await client.messaging.messages.get(pos[1], pos[2]));
|
|
1693
|
+
break;
|
|
1694
|
+
case "send":
|
|
1695
|
+
out(await client.messaging.messages.send(pos[1], { participant_id: flags["participant-id"], body: flags.body ?? flags.text, type: flags.type, reply_to: flags["reply-to"], metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined }));
|
|
1696
|
+
break;
|
|
1697
|
+
case "edit":
|
|
1698
|
+
out(await client.messaging.messages.edit(pos[1], pos[2], { body: flags.body ?? flags.text }));
|
|
1699
|
+
break;
|
|
1700
|
+
case "delete":
|
|
1701
|
+
await client.messaging.messages.delete(pos[1], pos[2]);
|
|
1702
|
+
console.log("Deleted");
|
|
1703
|
+
break;
|
|
1704
|
+
default:
|
|
1705
|
+
console.error(`Unknown messaging messages command: ${sub}`);
|
|
1706
|
+
process.exit(1);
|
|
1707
|
+
}
|
|
1708
|
+
break;
|
|
1709
|
+
}
|
|
1710
|
+
case "reactions": {
|
|
1711
|
+
const sub = pos[0];
|
|
1712
|
+
switch (sub) {
|
|
1713
|
+
case "add":
|
|
1714
|
+
out(await client.messaging.reactions.add(pos[1], { participant_id: flags["participant-id"], emoji: flags.emoji }));
|
|
1715
|
+
break;
|
|
1716
|
+
case "remove":
|
|
1717
|
+
await client.messaging.reactions.remove(pos[1], pos[2]);
|
|
1718
|
+
console.log("Removed");
|
|
1719
|
+
break;
|
|
1720
|
+
default:
|
|
1721
|
+
console.error(`Unknown messaging reactions command: ${sub}`);
|
|
1722
|
+
process.exit(1);
|
|
1723
|
+
}
|
|
1724
|
+
break;
|
|
1725
|
+
}
|
|
1726
|
+
case "webhooks": {
|
|
1727
|
+
const sub = pos[0];
|
|
1728
|
+
switch (sub) {
|
|
1729
|
+
case "list":
|
|
1730
|
+
out(await client.messaging.webhooks.list());
|
|
1731
|
+
break;
|
|
1732
|
+
case "create":
|
|
1733
|
+
out(await client.messaging.webhooks.create({ name: flags.name, url: flags.url, topics: JSON.parse(flags.topics), secret: flags.secret }));
|
|
1734
|
+
break;
|
|
1735
|
+
default:
|
|
1736
|
+
console.error(`Unknown messaging webhooks command: ${sub}`);
|
|
1737
|
+
process.exit(1);
|
|
1738
|
+
}
|
|
1739
|
+
break;
|
|
1740
|
+
}
|
|
1741
|
+
case "analytics": {
|
|
1742
|
+
const sub = pos[0];
|
|
1743
|
+
switch (sub) {
|
|
1744
|
+
case "summary":
|
|
1745
|
+
out(await client.messaging.analytics.summary({ from: flags.from, to: flags.to }));
|
|
1746
|
+
break;
|
|
1747
|
+
case "by-conversation":
|
|
1748
|
+
out(await client.messaging.analytics.byConversation({ from: flags.from, to: flags.to }));
|
|
1749
|
+
break;
|
|
1750
|
+
case "by-period":
|
|
1751
|
+
out(await client.messaging.analytics.byPeriod({ from: flags.from, to: flags.to, group_by: flags["group-by"] }));
|
|
1752
|
+
break;
|
|
1753
|
+
default:
|
|
1754
|
+
console.error(`Unknown messaging analytics command: ${sub}`);
|
|
1755
|
+
process.exit(1);
|
|
1756
|
+
}
|
|
1757
|
+
break;
|
|
1758
|
+
}
|
|
1759
|
+
case "export": {
|
|
1760
|
+
const sub = pos[0];
|
|
1761
|
+
switch (sub) {
|
|
1762
|
+
case "conversations":
|
|
1763
|
+
out(await client.messaging.export.conversations({ from: flags.from, to: flags.to, status: flags.status, format: flags.format }));
|
|
1764
|
+
break;
|
|
1765
|
+
case "messages":
|
|
1766
|
+
out(await client.messaging.export.messages({ from: flags.from, to: flags.to, format: flags.format }));
|
|
1767
|
+
break;
|
|
1768
|
+
default:
|
|
1769
|
+
console.error(`Unknown messaging export command: ${sub}`);
|
|
1770
|
+
process.exit(1);
|
|
1771
|
+
}
|
|
1772
|
+
break;
|
|
1773
|
+
}
|
|
1774
|
+
default:
|
|
1775
|
+
console.error(`Unknown messaging command: ${cmd}`);
|
|
1776
|
+
process.exit(1);
|
|
1777
|
+
}
|
|
1778
|
+
}
|
|
1779
|
+
async function handleOrgs(client, cmd, pos, flags) {
|
|
1780
|
+
switch (cmd) {
|
|
1781
|
+
case "list":
|
|
1782
|
+
out(await client.core.orgs.list());
|
|
1783
|
+
break;
|
|
1784
|
+
case "create":
|
|
1785
|
+
out(await client.core.orgs.create({ name: flags.name, slug: flags.slug }));
|
|
1786
|
+
break;
|
|
1787
|
+
case "get":
|
|
1788
|
+
out(await client.core.orgs.get(pos[0]));
|
|
1789
|
+
break;
|
|
1790
|
+
case "update":
|
|
1791
|
+
out(await client.core.orgs.update(pos[0], { name: flags.name, slug: flags.slug }));
|
|
1792
|
+
break;
|
|
1793
|
+
case "delete":
|
|
1794
|
+
await client.core.orgs.delete(pos[0], flags["confirm-name"]);
|
|
1795
|
+
console.log("Deleted");
|
|
1796
|
+
break;
|
|
1797
|
+
case "members":
|
|
1798
|
+
out(await client.core.orgs.members(pos[0]));
|
|
1799
|
+
break;
|
|
1800
|
+
case "invite":
|
|
1801
|
+
out(await client.core.orgs.invite(pos[0], {
|
|
1802
|
+
email: flags.email,
|
|
1803
|
+
scopes: flags.scopes ? JSON.parse(flags.scopes) : undefined,
|
|
1804
|
+
project_id: flags["project-id"],
|
|
1805
|
+
}));
|
|
1806
|
+
break;
|
|
1807
|
+
case "remove-member":
|
|
1808
|
+
await client.core.orgs.removeMember(pos[0], pos[1]);
|
|
1809
|
+
console.log("Removed");
|
|
1810
|
+
break;
|
|
1811
|
+
case "my-scopes":
|
|
1812
|
+
out(await client.core.orgs.myScopes(pos[0]));
|
|
1813
|
+
break;
|
|
1814
|
+
case "update-member-scopes":
|
|
1815
|
+
await client.core.orgs.updateMemberScopes(pos[0], pos[1], JSON.parse(flags.scopes));
|
|
1816
|
+
console.log("Updated");
|
|
1817
|
+
break;
|
|
1818
|
+
case "projects": {
|
|
1819
|
+
const sub = pos[0];
|
|
1820
|
+
switch (sub) {
|
|
1821
|
+
case "list":
|
|
1822
|
+
out(await client.core.orgs.listProjects(pos[1] ?? flags["org-id"]));
|
|
1823
|
+
break;
|
|
1824
|
+
case "create":
|
|
1825
|
+
out(await client.core.orgs.createProject(pos[1] ?? flags["org-id"], { name: flags.name, region: flags.region }));
|
|
1826
|
+
break;
|
|
1827
|
+
case "get":
|
|
1828
|
+
out(await client.core.orgs.getProject(pos[1], pos[2]));
|
|
1829
|
+
break;
|
|
1830
|
+
case "delete":
|
|
1831
|
+
await client.core.orgs.deleteProject(pos[1], pos[2]);
|
|
1832
|
+
console.log("Deleted");
|
|
1833
|
+
break;
|
|
1834
|
+
default:
|
|
1835
|
+
console.error(`Unknown orgs projects command: ${sub}`);
|
|
1836
|
+
process.exit(1);
|
|
1837
|
+
}
|
|
1838
|
+
break;
|
|
1839
|
+
}
|
|
1840
|
+
case "tokens": {
|
|
1841
|
+
const sub = pos[0];
|
|
1842
|
+
switch (sub) {
|
|
1843
|
+
case "list":
|
|
1844
|
+
out(await client.core.orgs.listTokens(pos[1] ?? flags["org-id"], flags["project-id"]));
|
|
1845
|
+
break;
|
|
1846
|
+
case "create":
|
|
1847
|
+
out(await client.core.orgs.createToken(pos[1] ?? flags["org-id"], {
|
|
1848
|
+
name: flags.name,
|
|
1849
|
+
scopes: JSON.parse(flags.scopes),
|
|
1850
|
+
project_id: flags["project-id"],
|
|
1851
|
+
expires_at: flags["expires-at"],
|
|
1852
|
+
}));
|
|
1853
|
+
break;
|
|
1854
|
+
case "revoke":
|
|
1855
|
+
await client.core.orgs.revokeToken(pos[1], pos[2]);
|
|
1856
|
+
console.log("Revoked");
|
|
1857
|
+
break;
|
|
1858
|
+
default:
|
|
1859
|
+
console.error(`Unknown orgs tokens command: ${sub}`);
|
|
1860
|
+
process.exit(1);
|
|
1861
|
+
}
|
|
1862
|
+
break;
|
|
1863
|
+
}
|
|
1864
|
+
default:
|
|
1865
|
+
console.error(`Unknown orgs command: ${cmd}`);
|
|
1866
|
+
process.exit(1);
|
|
1867
|
+
}
|
|
1868
|
+
}
|
|
1869
|
+
async function handleMeta(client, cmd, _pos, _flags) {
|
|
1870
|
+
switch (cmd) {
|
|
1871
|
+
case "livez":
|
|
1872
|
+
out(await client.meta.livez());
|
|
1873
|
+
break;
|
|
1874
|
+
case "readyz":
|
|
1875
|
+
out(await client.meta.readyz());
|
|
1876
|
+
break;
|
|
1877
|
+
case "healthz":
|
|
1878
|
+
out(await client.meta.healthz());
|
|
1879
|
+
break;
|
|
1880
|
+
case "openapi":
|
|
1881
|
+
out(await client.meta.openApiSpec());
|
|
1882
|
+
break;
|
|
1883
|
+
case "skill":
|
|
1884
|
+
console.log(await client.meta.saasignalSkill());
|
|
1885
|
+
break;
|
|
1886
|
+
case "llms-txt":
|
|
1887
|
+
console.log(await client.meta.llmsTxt());
|
|
1888
|
+
break;
|
|
1889
|
+
case "human-docs":
|
|
1890
|
+
console.log(await client.meta.humanDocs());
|
|
1891
|
+
break;
|
|
1892
|
+
case "robots-txt":
|
|
1893
|
+
console.log(await client.meta.robotsTxt());
|
|
1894
|
+
break;
|
|
1895
|
+
case "sitemap-xml":
|
|
1896
|
+
console.log(await client.meta.sitemapXml());
|
|
1897
|
+
break;
|
|
1898
|
+
case "landing":
|
|
1899
|
+
console.log(await client.meta.landing());
|
|
1900
|
+
break;
|
|
1901
|
+
case "scalar-url":
|
|
1902
|
+
console.log(client.meta.scalarUrl());
|
|
1903
|
+
break;
|
|
1904
|
+
case "mcp-url":
|
|
1905
|
+
console.log(client.meta.mcpUrl());
|
|
1906
|
+
break;
|
|
1907
|
+
default:
|
|
1908
|
+
console.error(`Unknown meta command: ${cmd}`);
|
|
1909
|
+
process.exit(1);
|
|
1910
|
+
}
|
|
1911
|
+
}
|
|
1912
|
+
async function main() {
|
|
1913
|
+
const args = process.argv.slice(2);
|
|
1914
|
+
if (args.length === 0 || args[0] === "--help" || args[0] === "-h") {
|
|
1915
|
+
console.log(USAGE);
|
|
1916
|
+
process.exit(0);
|
|
1917
|
+
}
|
|
1918
|
+
const [namespace, command, ...rest] = args;
|
|
1919
|
+
const { positional, flags } = parseArgs(rest);
|
|
1920
|
+
try {
|
|
1921
|
+
if (namespace === "auth") {
|
|
1922
|
+
await handleAuth(command);
|
|
1923
|
+
return;
|
|
1924
|
+
}
|
|
1925
|
+
const resolvedAuth = await resolveCliAuth();
|
|
1926
|
+
let client = new SaaSignalClient({ token: resolvedAuth.token, baseUrl: resolvedAuth.baseUrl });
|
|
1927
|
+
try {
|
|
1928
|
+
await executeNamespaceCommand(client, namespace, command, positional, flags);
|
|
1929
|
+
}
|
|
1930
|
+
catch (error) {
|
|
1931
|
+
if (error instanceof SaaSignalError && error.status === 401 && resolvedAuth.profile) {
|
|
1932
|
+
const refreshedProfile = await refreshAuthProfile(resolvedAuth.profile);
|
|
1933
|
+
await saveAuthProfile(refreshedProfile);
|
|
1934
|
+
client = new SaaSignalClient({ token: refreshedProfile.access_token, baseUrl: resolvedAuth.baseUrl });
|
|
1935
|
+
await executeNamespaceCommand(client, namespace, command, positional, flags);
|
|
1936
|
+
return;
|
|
1937
|
+
}
|
|
1938
|
+
throw error;
|
|
1939
|
+
}
|
|
1940
|
+
}
|
|
1941
|
+
catch (e) {
|
|
1942
|
+
if (e instanceof SaaSignalError) {
|
|
1943
|
+
console.error(JSON.stringify({ error: e.code, message: e.message, status: e.status }, null, 2));
|
|
1944
|
+
process.exit(1);
|
|
1945
|
+
return;
|
|
1946
|
+
}
|
|
1947
|
+
console.error(`Error: ${e.message}`);
|
|
1948
|
+
process.exit(1);
|
|
1949
|
+
}
|
|
1950
|
+
}
|
|
1951
|
+
async function handleKv(client, cmd, pos, flags) {
|
|
1952
|
+
switch (cmd) {
|
|
1953
|
+
case "get":
|
|
1954
|
+
out(await client.infra.kv.get(pos[0]));
|
|
1955
|
+
break;
|
|
1956
|
+
case "set": {
|
|
1957
|
+
const value = JSON.parse(pos[1]);
|
|
1958
|
+
out(await client.infra.kv.set(pos[0], value, {
|
|
1959
|
+
ttl: flags.ttl ? Number(flags.ttl) : undefined,
|
|
1960
|
+
if_not_exists: flags.nx === "true",
|
|
1961
|
+
}));
|
|
1962
|
+
break;
|
|
1963
|
+
}
|
|
1964
|
+
case "delete":
|
|
1965
|
+
await client.infra.kv.delete(pos[0]);
|
|
1966
|
+
console.log("Deleted");
|
|
1967
|
+
break;
|
|
1968
|
+
case "increment":
|
|
1969
|
+
out(await client.infra.kv.increment(pos[0], flags.delta ? Number(flags.delta) : 1, flags.ttl ? Number(flags.ttl) : undefined));
|
|
1970
|
+
break;
|
|
1971
|
+
case "scan":
|
|
1972
|
+
out(await client.infra.kv.scan({
|
|
1973
|
+
prefix: flags.prefix,
|
|
1974
|
+
limit: flags.limit ? Number(flags.limit) : undefined,
|
|
1975
|
+
cursor: flags.cursor,
|
|
1976
|
+
}));
|
|
1977
|
+
break;
|
|
1978
|
+
case "batch":
|
|
1979
|
+
out(await client.infra.kv.batch(parseJsonFlag(flags, "ops")));
|
|
1980
|
+
break;
|
|
1981
|
+
default:
|
|
1982
|
+
console.error(`Unknown kv command: ${cmd}`);
|
|
1983
|
+
process.exit(1);
|
|
1984
|
+
}
|
|
1985
|
+
}
|
|
1986
|
+
async function handleChannels(client, cmd, pos, flags) {
|
|
1987
|
+
switch (cmd) {
|
|
1988
|
+
case "publish":
|
|
1989
|
+
out(await client.infra.channels.publish(pos[0], pos[1], JSON.parse(pos[2])));
|
|
1990
|
+
break;
|
|
1991
|
+
case "presence":
|
|
1992
|
+
out(await client.infra.channels.presence(pos[0]));
|
|
1993
|
+
break;
|
|
1994
|
+
case "history":
|
|
1995
|
+
out(await client.infra.channels.history(pos[0], { limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
1996
|
+
break;
|
|
1997
|
+
case "batch-publish":
|
|
1998
|
+
out(await client.infra.channels.batchPublish(parseJsonFlag(flags, "messages")));
|
|
1999
|
+
break;
|
|
2000
|
+
default:
|
|
2001
|
+
console.error(`Unknown channels command: ${cmd}`);
|
|
2002
|
+
process.exit(1);
|
|
2003
|
+
}
|
|
2004
|
+
}
|
|
2005
|
+
async function handleJobs(client, cmd, pos, flags) {
|
|
2006
|
+
switch (cmd) {
|
|
2007
|
+
case "create":
|
|
2008
|
+
out(await client.infra.jobs.create({
|
|
2009
|
+
name: pos[0],
|
|
2010
|
+
trigger: {
|
|
2011
|
+
type: flags.trigger,
|
|
2012
|
+
queue: flags.queue,
|
|
2013
|
+
schedule: flags.cron,
|
|
2014
|
+
delay_seconds: flags.delay ? Number(flags.delay) : undefined,
|
|
2015
|
+
},
|
|
2016
|
+
payload: flags.payload ? JSON.parse(flags.payload) : undefined,
|
|
2017
|
+
handler: flags.handler,
|
|
2018
|
+
max_attempts: flags["max-attempts"] ? Number(flags["max-attempts"]) : undefined,
|
|
2019
|
+
backoff: flags.backoff,
|
|
2020
|
+
}));
|
|
2021
|
+
break;
|
|
2022
|
+
case "list":
|
|
2023
|
+
out(await client.infra.jobs.list({
|
|
2024
|
+
status: flags.status,
|
|
2025
|
+
trigger_type: flags["trigger-type"],
|
|
2026
|
+
queue: flags.queue,
|
|
2027
|
+
limit: flags.limit ? Number(flags.limit) : undefined,
|
|
2028
|
+
}));
|
|
2029
|
+
break;
|
|
2030
|
+
case "get":
|
|
2031
|
+
out(await client.infra.jobs.get(pos[0]));
|
|
2032
|
+
break;
|
|
2033
|
+
case "cancel":
|
|
2034
|
+
out(await client.infra.jobs.cancel(pos[0]));
|
|
2035
|
+
break;
|
|
2036
|
+
case "trigger":
|
|
2037
|
+
out(await client.infra.jobs.trigger(pos[0]));
|
|
2038
|
+
break;
|
|
2039
|
+
case "retry":
|
|
2040
|
+
out(await client.infra.jobs.retry(pos[0]));
|
|
2041
|
+
break;
|
|
2042
|
+
case "runs":
|
|
2043
|
+
out(await client.infra.jobs.runs(pos[0], { limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
2044
|
+
break;
|
|
2045
|
+
case "claim":
|
|
2046
|
+
out(await client.infra.jobs.claim(pos[0], {
|
|
2047
|
+
count: flags.count ? Number(flags.count) : undefined,
|
|
2048
|
+
visibility_timeout: flags.timeout ? Number(flags.timeout) : undefined,
|
|
2049
|
+
}));
|
|
2050
|
+
break;
|
|
2051
|
+
case "ack":
|
|
2052
|
+
out(await client.infra.jobs.ack(pos[0], {
|
|
2053
|
+
status: flags.status,
|
|
2054
|
+
result: flags.result ? JSON.parse(flags.result) : undefined,
|
|
2055
|
+
error: flags.error,
|
|
2056
|
+
}));
|
|
2057
|
+
break;
|
|
2058
|
+
case "update":
|
|
2059
|
+
out(await client.infra.jobs.update(pos[0], {
|
|
2060
|
+
handler: flags.handler,
|
|
2061
|
+
payload: flags.payload ? JSON.parse(flags.payload) : undefined,
|
|
2062
|
+
enabled: flags.enabled !== undefined ? flags.enabled === "true" : undefined,
|
|
2063
|
+
trigger: flags.cron ? { schedule: flags.cron, timezone: flags.timezone } : undefined,
|
|
357
2064
|
}));
|
|
358
2065
|
break;
|
|
2066
|
+
case "batch-create":
|
|
2067
|
+
out(await client.infra.jobs.batchCreate(parseJsonFlag(flags, "jobs")));
|
|
2068
|
+
break;
|
|
359
2069
|
default:
|
|
360
2070
|
console.error(`Unknown jobs command: ${cmd}`);
|
|
361
2071
|
process.exit(1);
|
|
@@ -382,6 +2092,12 @@ async function handleBilling(client, cmd, pos, flags) {
|
|
|
382
2092
|
granularity: flags.granularity,
|
|
383
2093
|
}));
|
|
384
2094
|
break;
|
|
2095
|
+
case "subscription":
|
|
2096
|
+
out(await client.core.billing.subscription(pos[0]));
|
|
2097
|
+
break;
|
|
2098
|
+
case "switch-to-free":
|
|
2099
|
+
out(await client.core.billing.switchToFreePlan(pos[0]));
|
|
2100
|
+
break;
|
|
385
2101
|
default:
|
|
386
2102
|
console.error(`Unknown billing command: ${cmd}`);
|
|
387
2103
|
process.exit(1);
|
|
@@ -446,6 +2162,9 @@ async function handleStorage(client, cmd, pos, flags) {
|
|
|
446
2162
|
await client.infra.storage.deleteObject(pos[1], pos[2]);
|
|
447
2163
|
console.log("Deleted");
|
|
448
2164
|
break;
|
|
2165
|
+
case "head":
|
|
2166
|
+
out(await client.infra.storage.headObject(pos[1], pos[2]));
|
|
2167
|
+
break;
|
|
449
2168
|
default:
|
|
450
2169
|
console.error(`Unknown storage objects command: ${sub}`);
|
|
451
2170
|
process.exit(1);
|
|
@@ -614,14 +2333,40 @@ async function handleDelivery(client, cmd, pos, flags) {
|
|
|
614
2333
|
dropoff_address: flags.dropoff,
|
|
615
2334
|
pickup_address: flags.pickup,
|
|
616
2335
|
driver_id: flags["driver-id"],
|
|
2336
|
+
pickup_lat: flags["pickup-lat"] ? Number(flags["pickup-lat"]) : undefined,
|
|
2337
|
+
pickup_lng: flags["pickup-lng"] ? Number(flags["pickup-lng"]) : undefined,
|
|
2338
|
+
dropoff_lat: flags["dropoff-lat"] ? Number(flags["dropoff-lat"]) : undefined,
|
|
2339
|
+
dropoff_lng: flags["dropoff-lng"] ? Number(flags["dropoff-lng"]) : undefined,
|
|
2340
|
+
zone_id: flags["zone-id"],
|
|
2341
|
+
hub_id: flags["hub-id"],
|
|
2342
|
+
priority: flags.priority ? Number(flags.priority) : undefined,
|
|
2343
|
+
scheduled_at: flags["scheduled-at"],
|
|
2344
|
+
metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined,
|
|
2345
|
+
}));
|
|
2346
|
+
break;
|
|
2347
|
+
case "update":
|
|
2348
|
+
out(await client.delivery.orders.update(pos[1], {
|
|
2349
|
+
driver_id: flags["driver-id"],
|
|
2350
|
+
dropoff_address: flags.dropoff,
|
|
2351
|
+
pickup_address: flags.pickup,
|
|
2352
|
+
metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined,
|
|
617
2353
|
}));
|
|
618
2354
|
break;
|
|
619
2355
|
case "transition":
|
|
620
2356
|
out(await client.delivery.orders.transition(pos[1], {
|
|
621
2357
|
status: flags.status,
|
|
622
2358
|
driver_id: flags["driver-id"],
|
|
2359
|
+
failed_reason: flags["failed-reason"],
|
|
2360
|
+
cancelled_reason: flags["cancelled-reason"],
|
|
623
2361
|
}));
|
|
624
2362
|
break;
|
|
2363
|
+
case "events":
|
|
2364
|
+
out(await client.delivery.orders.events(pos[1]));
|
|
2365
|
+
break;
|
|
2366
|
+
case "delete":
|
|
2367
|
+
await client.delivery.orders.delete(pos[1]);
|
|
2368
|
+
console.log("Deleted");
|
|
2369
|
+
break;
|
|
625
2370
|
case "proof": {
|
|
626
2371
|
const proofCmd = pos[1];
|
|
627
2372
|
switch (proofCmd) {
|
|
@@ -631,6 +2376,15 @@ async function handleDelivery(client, cmd, pos, flags) {
|
|
|
631
2376
|
case "get":
|
|
632
2377
|
out(await client.delivery.orders.getProof(pos[2], pos[3]));
|
|
633
2378
|
break;
|
|
2379
|
+
case "create":
|
|
2380
|
+
out(await client.delivery.orders.addProof(pos[2], {
|
|
2381
|
+
type: flags.type,
|
|
2382
|
+
value: flags.value,
|
|
2383
|
+
stop_id: flags["stop-id"],
|
|
2384
|
+
lat: flags.lat ? Number(flags.lat) : undefined,
|
|
2385
|
+
lng: flags.lng ? Number(flags.lng) : undefined,
|
|
2386
|
+
}));
|
|
2387
|
+
break;
|
|
634
2388
|
case "delete":
|
|
635
2389
|
await client.delivery.orders.deleteProof(pos[2], pos[3]);
|
|
636
2390
|
console.log("Deleted");
|
|
@@ -659,12 +2413,338 @@ async function handleDelivery(client, cmd, pos, flags) {
|
|
|
659
2413
|
case "get":
|
|
660
2414
|
out(await client.delivery.drivers.get(pos[1]));
|
|
661
2415
|
break;
|
|
2416
|
+
case "create":
|
|
2417
|
+
out(await client.delivery.drivers.create({
|
|
2418
|
+
name: flags.name,
|
|
2419
|
+
phone: flags.phone,
|
|
2420
|
+
email: flags.email,
|
|
2421
|
+
status: flags.status,
|
|
2422
|
+
vehicle_id: flags["vehicle-id"],
|
|
2423
|
+
hub_id: flags["hub-id"],
|
|
2424
|
+
capacity: flags.capacity ? Number(flags.capacity) : undefined,
|
|
2425
|
+
metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined,
|
|
2426
|
+
}));
|
|
2427
|
+
break;
|
|
2428
|
+
case "update":
|
|
2429
|
+
out(await client.delivery.drivers.update(pos[1], {
|
|
2430
|
+
name: flags.name,
|
|
2431
|
+
phone: flags.phone,
|
|
2432
|
+
email: flags.email,
|
|
2433
|
+
vehicle_id: flags["vehicle-id"],
|
|
2434
|
+
hub_id: flags["hub-id"],
|
|
2435
|
+
capacity: flags.capacity ? Number(flags.capacity) : undefined,
|
|
2436
|
+
metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined,
|
|
2437
|
+
}));
|
|
2438
|
+
break;
|
|
2439
|
+
case "online":
|
|
2440
|
+
out(await client.delivery.drivers.online(pos[1]));
|
|
2441
|
+
break;
|
|
2442
|
+
case "offline":
|
|
2443
|
+
out(await client.delivery.drivers.offline(pos[1]));
|
|
2444
|
+
break;
|
|
2445
|
+
case "delete":
|
|
2446
|
+
await client.delivery.drivers.delete(pos[1]);
|
|
2447
|
+
console.log("Deleted");
|
|
2448
|
+
break;
|
|
662
2449
|
default:
|
|
663
2450
|
console.error(`Unknown delivery drivers command: ${sub}`);
|
|
664
2451
|
process.exit(1);
|
|
665
2452
|
}
|
|
666
2453
|
break;
|
|
667
2454
|
}
|
|
2455
|
+
case "customers": {
|
|
2456
|
+
const sub = pos[0];
|
|
2457
|
+
switch (sub) {
|
|
2458
|
+
case "list":
|
|
2459
|
+
out(await client.delivery.customers.list({ limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
2460
|
+
break;
|
|
2461
|
+
case "get":
|
|
2462
|
+
out(await client.delivery.customers.get(pos[1]));
|
|
2463
|
+
break;
|
|
2464
|
+
case "create":
|
|
2465
|
+
out(await client.delivery.customers.create({
|
|
2466
|
+
name: flags.name,
|
|
2467
|
+
external_id: flags["external-id"],
|
|
2468
|
+
phone: flags.phone,
|
|
2469
|
+
email: flags.email,
|
|
2470
|
+
metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined,
|
|
2471
|
+
}));
|
|
2472
|
+
break;
|
|
2473
|
+
case "update":
|
|
2474
|
+
out(await client.delivery.customers.update(pos[1], {
|
|
2475
|
+
name: flags.name,
|
|
2476
|
+
external_id: flags["external-id"],
|
|
2477
|
+
phone: flags.phone,
|
|
2478
|
+
email: flags.email,
|
|
2479
|
+
metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined,
|
|
2480
|
+
}));
|
|
2481
|
+
break;
|
|
2482
|
+
case "delete":
|
|
2483
|
+
await client.delivery.customers.delete(pos[1]);
|
|
2484
|
+
console.log("Deleted");
|
|
2485
|
+
break;
|
|
2486
|
+
case "addresses": {
|
|
2487
|
+
const addrCmd = pos[1];
|
|
2488
|
+
switch (addrCmd) {
|
|
2489
|
+
case "list":
|
|
2490
|
+
out(await client.delivery.customers.listAddresses(pos[2]));
|
|
2491
|
+
break;
|
|
2492
|
+
case "add":
|
|
2493
|
+
out(await client.delivery.customers.addAddress(pos[2], {
|
|
2494
|
+
address_line: flags["address-line"],
|
|
2495
|
+
label: flags.label,
|
|
2496
|
+
lat: flags.lat ? Number(flags.lat) : undefined,
|
|
2497
|
+
lng: flags.lng ? Number(flags.lng) : undefined,
|
|
2498
|
+
}));
|
|
2499
|
+
break;
|
|
2500
|
+
case "delete":
|
|
2501
|
+
await client.delivery.customers.deleteAddress(pos[2], pos[3]);
|
|
2502
|
+
console.log("Deleted");
|
|
2503
|
+
break;
|
|
2504
|
+
default:
|
|
2505
|
+
console.error(`Unknown delivery customers addresses command: ${addrCmd}`);
|
|
2506
|
+
process.exit(1);
|
|
2507
|
+
}
|
|
2508
|
+
break;
|
|
2509
|
+
}
|
|
2510
|
+
default:
|
|
2511
|
+
console.error(`Unknown delivery customers command: ${sub}`);
|
|
2512
|
+
process.exit(1);
|
|
2513
|
+
}
|
|
2514
|
+
break;
|
|
2515
|
+
}
|
|
2516
|
+
case "vehicles": {
|
|
2517
|
+
const sub = pos[0];
|
|
2518
|
+
switch (sub) {
|
|
2519
|
+
case "list":
|
|
2520
|
+
out(await client.delivery.vehicles.list({
|
|
2521
|
+
type: flags.type,
|
|
2522
|
+
limit: flags.limit ? Number(flags.limit) : undefined,
|
|
2523
|
+
}));
|
|
2524
|
+
break;
|
|
2525
|
+
case "get":
|
|
2526
|
+
out(await client.delivery.vehicles.get(pos[1]));
|
|
2527
|
+
break;
|
|
2528
|
+
case "create":
|
|
2529
|
+
out(await client.delivery.vehicles.create({
|
|
2530
|
+
type: flags.type,
|
|
2531
|
+
plate: flags.plate,
|
|
2532
|
+
name: flags.name,
|
|
2533
|
+
capacity: flags.capacity ? Number(flags.capacity) : undefined,
|
|
2534
|
+
driver_id: flags["driver-id"],
|
|
2535
|
+
metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined,
|
|
2536
|
+
}));
|
|
2537
|
+
break;
|
|
2538
|
+
case "update":
|
|
2539
|
+
out(await client.delivery.vehicles.update(pos[1], {
|
|
2540
|
+
type: flags.type,
|
|
2541
|
+
plate: flags.plate,
|
|
2542
|
+
name: flags.name,
|
|
2543
|
+
capacity: flags.capacity ? Number(flags.capacity) : undefined,
|
|
2544
|
+
driver_id: flags["driver-id"],
|
|
2545
|
+
metadata: flags.metadata ? JSON.parse(flags.metadata) : undefined,
|
|
2546
|
+
}));
|
|
2547
|
+
break;
|
|
2548
|
+
case "delete":
|
|
2549
|
+
await client.delivery.vehicles.delete(pos[1]);
|
|
2550
|
+
console.log("Deleted");
|
|
2551
|
+
break;
|
|
2552
|
+
default:
|
|
2553
|
+
console.error(`Unknown delivery vehicles command: ${sub}`);
|
|
2554
|
+
process.exit(1);
|
|
2555
|
+
}
|
|
2556
|
+
break;
|
|
2557
|
+
}
|
|
2558
|
+
case "stops": {
|
|
2559
|
+
const sub = pos[0];
|
|
2560
|
+
switch (sub) {
|
|
2561
|
+
case "list":
|
|
2562
|
+
out(await client.delivery.stops.list(pos[1]));
|
|
2563
|
+
break;
|
|
2564
|
+
case "get":
|
|
2565
|
+
out(await client.delivery.stops.get(pos[1]));
|
|
2566
|
+
break;
|
|
2567
|
+
case "create":
|
|
2568
|
+
out(await client.delivery.stops.create(pos[1], {
|
|
2569
|
+
sequence: Number(flags.sequence),
|
|
2570
|
+
type: flags.type,
|
|
2571
|
+
address: flags.address,
|
|
2572
|
+
lat: flags.lat ? Number(flags.lat) : undefined,
|
|
2573
|
+
lng: flags.lng ? Number(flags.lng) : undefined,
|
|
2574
|
+
contact_name: flags["contact-name"],
|
|
2575
|
+
contact_phone: flags["contact-phone"],
|
|
2576
|
+
notes: flags.notes,
|
|
2577
|
+
}));
|
|
2578
|
+
break;
|
|
2579
|
+
case "update":
|
|
2580
|
+
out(await client.delivery.stops.update(pos[1], {
|
|
2581
|
+
sequence: flags.sequence ? Number(flags.sequence) : undefined,
|
|
2582
|
+
type: flags.type,
|
|
2583
|
+
address: flags.address,
|
|
2584
|
+
lat: flags.lat ? Number(flags.lat) : undefined,
|
|
2585
|
+
lng: flags.lng ? Number(flags.lng) : undefined,
|
|
2586
|
+
contact_name: flags["contact-name"],
|
|
2587
|
+
contact_phone: flags["contact-phone"],
|
|
2588
|
+
notes: flags.notes,
|
|
2589
|
+
}));
|
|
2590
|
+
break;
|
|
2591
|
+
case "arrive":
|
|
2592
|
+
out(await client.delivery.stops.arrive(pos[1]));
|
|
2593
|
+
break;
|
|
2594
|
+
case "complete":
|
|
2595
|
+
out(await client.delivery.stops.complete(pos[1]));
|
|
2596
|
+
break;
|
|
2597
|
+
case "skip":
|
|
2598
|
+
out(await client.delivery.stops.skip(pos[1]));
|
|
2599
|
+
break;
|
|
2600
|
+
case "delete":
|
|
2601
|
+
await client.delivery.stops.delete(pos[1]);
|
|
2602
|
+
console.log("Deleted");
|
|
2603
|
+
break;
|
|
2604
|
+
default:
|
|
2605
|
+
console.error(`Unknown delivery stops command: ${sub}`);
|
|
2606
|
+
process.exit(1);
|
|
2607
|
+
}
|
|
2608
|
+
break;
|
|
2609
|
+
}
|
|
2610
|
+
case "dispatch": {
|
|
2611
|
+
const sub = pos[0];
|
|
2612
|
+
switch (sub) {
|
|
2613
|
+
case "suggest":
|
|
2614
|
+
out(await client.delivery.dispatch.suggest({
|
|
2615
|
+
order_id: flags["order-id"],
|
|
2616
|
+
radius_km: flags["radius-km"] ? Number(flags["radius-km"]) : undefined,
|
|
2617
|
+
limit: flags.limit ? Number(flags.limit) : undefined,
|
|
2618
|
+
}));
|
|
2619
|
+
break;
|
|
2620
|
+
case "auto-assign":
|
|
2621
|
+
out(await client.delivery.dispatch.autoAssign({ order_id: flags["order-id"] }));
|
|
2622
|
+
break;
|
|
2623
|
+
default:
|
|
2624
|
+
console.error(`Unknown delivery dispatch command: ${sub}`);
|
|
2625
|
+
process.exit(1);
|
|
2626
|
+
}
|
|
2627
|
+
break;
|
|
2628
|
+
}
|
|
2629
|
+
case "tracking-links": {
|
|
2630
|
+
const sub = pos[0];
|
|
2631
|
+
switch (sub) {
|
|
2632
|
+
case "create":
|
|
2633
|
+
out(await client.delivery.trackingLinks.create({
|
|
2634
|
+
order_id: flags["order-id"],
|
|
2635
|
+
ttl_minutes: flags["ttl-minutes"] ? Number(flags["ttl-minutes"]) : undefined,
|
|
2636
|
+
}));
|
|
2637
|
+
break;
|
|
2638
|
+
case "resolve":
|
|
2639
|
+
out(await client.delivery.trackingLinks.resolve(pos[1]));
|
|
2640
|
+
break;
|
|
2641
|
+
case "revoke":
|
|
2642
|
+
await client.delivery.trackingLinks.revoke(pos[1]);
|
|
2643
|
+
console.log("Revoked");
|
|
2644
|
+
break;
|
|
2645
|
+
default:
|
|
2646
|
+
console.error(`Unknown delivery tracking-links command: ${sub}`);
|
|
2647
|
+
process.exit(1);
|
|
2648
|
+
}
|
|
2649
|
+
break;
|
|
2650
|
+
}
|
|
2651
|
+
case "tracking-pages": {
|
|
2652
|
+
const sub = pos[0];
|
|
2653
|
+
switch (sub) {
|
|
2654
|
+
case "customer-page":
|
|
2655
|
+
console.log(await client.delivery.trackingPages.customerPage(pos[1]));
|
|
2656
|
+
break;
|
|
2657
|
+
case "customer-feed":
|
|
2658
|
+
out(await client.delivery.trackingPages.customerFeed(pos[1]));
|
|
2659
|
+
break;
|
|
2660
|
+
case "rate":
|
|
2661
|
+
out(await client.delivery.trackingPages.rate(pos[1], {
|
|
2662
|
+
score: Number(flags.score),
|
|
2663
|
+
comment: flags.comment,
|
|
2664
|
+
}));
|
|
2665
|
+
break;
|
|
2666
|
+
case "driver-page":
|
|
2667
|
+
console.log(await client.delivery.trackingPages.driverPage(pos[1]));
|
|
2668
|
+
break;
|
|
2669
|
+
case "ping":
|
|
2670
|
+
out(await client.delivery.trackingPages.ping(pos[1], {
|
|
2671
|
+
lat: Number(flags.lat),
|
|
2672
|
+
lng: Number(flags.lng),
|
|
2673
|
+
}));
|
|
2674
|
+
break;
|
|
2675
|
+
case "comment-proof":
|
|
2676
|
+
out(await client.delivery.trackingPages.commentProof(pos[1], {
|
|
2677
|
+
text: flags.text,
|
|
2678
|
+
lat: flags.lat ? Number(flags.lat) : undefined,
|
|
2679
|
+
lng: flags.lng ? Number(flags.lng) : undefined,
|
|
2680
|
+
}));
|
|
2681
|
+
break;
|
|
2682
|
+
default:
|
|
2683
|
+
console.error(`Unknown delivery tracking-pages command: ${sub}`);
|
|
2684
|
+
process.exit(1);
|
|
2685
|
+
}
|
|
2686
|
+
break;
|
|
2687
|
+
}
|
|
2688
|
+
case "dispatch-rules": {
|
|
2689
|
+
const sub = pos[0];
|
|
2690
|
+
switch (sub) {
|
|
2691
|
+
case "list":
|
|
2692
|
+
out(await client.delivery.dispatchRules.list());
|
|
2693
|
+
break;
|
|
2694
|
+
case "get":
|
|
2695
|
+
out(await client.delivery.dispatchRules.get(pos[1]));
|
|
2696
|
+
break;
|
|
2697
|
+
case "create":
|
|
2698
|
+
out(await client.delivery.dispatchRules.create(parseJsonFlag(flags)));
|
|
2699
|
+
break;
|
|
2700
|
+
case "update":
|
|
2701
|
+
out(await client.delivery.dispatchRules.update(pos[1], parseJsonFlag(flags)));
|
|
2702
|
+
break;
|
|
2703
|
+
case "delete":
|
|
2704
|
+
await client.delivery.dispatchRules.delete(pos[1]);
|
|
2705
|
+
console.log("Deleted");
|
|
2706
|
+
break;
|
|
2707
|
+
case "evaluate":
|
|
2708
|
+
out(await client.delivery.dispatchRules.evaluate({
|
|
2709
|
+
lat: Number(flags.lat),
|
|
2710
|
+
lng: Number(flags.lng),
|
|
2711
|
+
time: flags.time,
|
|
2712
|
+
}));
|
|
2713
|
+
break;
|
|
2714
|
+
default:
|
|
2715
|
+
console.error(`Unknown delivery dispatch-rules command: ${sub}`);
|
|
2716
|
+
process.exit(1);
|
|
2717
|
+
}
|
|
2718
|
+
break;
|
|
2719
|
+
}
|
|
2720
|
+
case "auto-dispatch":
|
|
2721
|
+
out(await client.delivery.dispatchRules.autoDispatch({ order_id: flags["order-id"] }));
|
|
2722
|
+
break;
|
|
2723
|
+
case "zones": {
|
|
2724
|
+
const sub = pos[0];
|
|
2725
|
+
switch (sub) {
|
|
2726
|
+
case "list":
|
|
2727
|
+
out(await client.delivery.zones.list({ limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
2728
|
+
break;
|
|
2729
|
+
case "get":
|
|
2730
|
+
out(await client.delivery.zones.get(pos[1]));
|
|
2731
|
+
break;
|
|
2732
|
+
case "create":
|
|
2733
|
+
out(await client.delivery.zones.create(parseJsonFlag(flags)));
|
|
2734
|
+
break;
|
|
2735
|
+
case "update":
|
|
2736
|
+
out(await client.delivery.zones.update(pos[1], parseJsonFlag(flags)));
|
|
2737
|
+
break;
|
|
2738
|
+
case "delete":
|
|
2739
|
+
await client.delivery.zones.delete(pos[1]);
|
|
2740
|
+
console.log("Deleted");
|
|
2741
|
+
break;
|
|
2742
|
+
default:
|
|
2743
|
+
console.error(`Unknown delivery zones command: ${sub}`);
|
|
2744
|
+
process.exit(1);
|
|
2745
|
+
}
|
|
2746
|
+
break;
|
|
2747
|
+
}
|
|
668
2748
|
case "eta-fences": {
|
|
669
2749
|
const sub = pos[0];
|
|
670
2750
|
switch (sub) {
|
|
@@ -696,15 +2776,128 @@ async function handleDelivery(client, cmd, pos, flags) {
|
|
|
696
2776
|
}
|
|
697
2777
|
break;
|
|
698
2778
|
}
|
|
699
|
-
case "
|
|
700
|
-
|
|
2779
|
+
case "hubs": {
|
|
2780
|
+
const sub = pos[0];
|
|
2781
|
+
switch (sub) {
|
|
2782
|
+
case "list":
|
|
2783
|
+
out(await client.delivery.hubs.list({ limit: flags.limit ? Number(flags.limit) : undefined }));
|
|
2784
|
+
break;
|
|
2785
|
+
case "get":
|
|
2786
|
+
out(await client.delivery.hubs.get(pos[1]));
|
|
2787
|
+
break;
|
|
2788
|
+
case "create":
|
|
2789
|
+
out(await client.delivery.hubs.create({
|
|
2790
|
+
name: flags.name,
|
|
2791
|
+
address: flags.address,
|
|
2792
|
+
lat: flags.lat ? Number(flags.lat) : undefined,
|
|
2793
|
+
lng: flags.lng ? Number(flags.lng) : undefined,
|
|
2794
|
+
radius_km: flags["radius-km"] ? Number(flags["radius-km"]) : undefined,
|
|
2795
|
+
}));
|
|
2796
|
+
break;
|
|
2797
|
+
case "update":
|
|
2798
|
+
out(await client.delivery.hubs.update(pos[1], {
|
|
2799
|
+
name: flags.name,
|
|
2800
|
+
address: flags.address,
|
|
2801
|
+
lat: flags.lat ? Number(flags.lat) : undefined,
|
|
2802
|
+
lng: flags.lng ? Number(flags.lng) : undefined,
|
|
2803
|
+
radius_km: flags["radius-km"] ? Number(flags["radius-km"]) : undefined,
|
|
2804
|
+
}));
|
|
2805
|
+
break;
|
|
2806
|
+
case "delete":
|
|
2807
|
+
await client.delivery.hubs.delete(pos[1]);
|
|
2808
|
+
console.log("Deleted");
|
|
2809
|
+
break;
|
|
2810
|
+
default:
|
|
2811
|
+
console.error(`Unknown delivery hubs command: ${sub}`);
|
|
2812
|
+
process.exit(1);
|
|
2813
|
+
}
|
|
2814
|
+
break;
|
|
2815
|
+
}
|
|
2816
|
+
case "notifications": {
|
|
2817
|
+
const sub = pos[0];
|
|
2818
|
+
switch (sub) {
|
|
2819
|
+
case "list":
|
|
2820
|
+
out(await client.delivery.notifications.list());
|
|
2821
|
+
break;
|
|
2822
|
+
case "upsert":
|
|
2823
|
+
out(await client.delivery.notifications.upsert({
|
|
2824
|
+
event: flags.event,
|
|
2825
|
+
enabled: flags.enabled === "true",
|
|
2826
|
+
channel: flags.channel,
|
|
2827
|
+
}));
|
|
2828
|
+
break;
|
|
2829
|
+
default:
|
|
2830
|
+
console.error(`Unknown delivery notifications command: ${sub}`);
|
|
2831
|
+
process.exit(1);
|
|
2832
|
+
}
|
|
701
2833
|
break;
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
2834
|
+
}
|
|
2835
|
+
case "webhooks": {
|
|
2836
|
+
const sub = pos[0];
|
|
2837
|
+
switch (sub) {
|
|
2838
|
+
case "list":
|
|
2839
|
+
out(await client.delivery.webhooks.list());
|
|
2840
|
+
break;
|
|
2841
|
+
case "create":
|
|
2842
|
+
out(await client.delivery.webhooks.create({
|
|
2843
|
+
name: flags.name,
|
|
2844
|
+
url: flags.url,
|
|
2845
|
+
topics: flags.topics ? JSON.parse(flags.topics) : [],
|
|
2846
|
+
secret: flags.secret,
|
|
2847
|
+
}));
|
|
2848
|
+
break;
|
|
2849
|
+
default:
|
|
2850
|
+
console.error(`Unknown delivery webhooks command: ${sub}`);
|
|
2851
|
+
process.exit(1);
|
|
2852
|
+
}
|
|
2853
|
+
break;
|
|
2854
|
+
}
|
|
2855
|
+
case "settings": {
|
|
2856
|
+
const sub = pos[0];
|
|
2857
|
+
if (!sub || sub === "get") {
|
|
2858
|
+
out(await client.delivery.settings.get());
|
|
2859
|
+
}
|
|
2860
|
+
else if (sub === "update") {
|
|
2861
|
+
out(await client.delivery.settings.update(parseJsonFlag(flags)));
|
|
2862
|
+
}
|
|
2863
|
+
else {
|
|
2864
|
+
console.error(`Unknown delivery settings command: ${sub}`);
|
|
2865
|
+
process.exit(1);
|
|
2866
|
+
}
|
|
2867
|
+
break;
|
|
2868
|
+
}
|
|
2869
|
+
case "analytics": {
|
|
2870
|
+
const sub = pos[0] ?? "summary";
|
|
2871
|
+
switch (sub) {
|
|
2872
|
+
case "summary":
|
|
2873
|
+
out(await client.delivery.analytics.summary({ from: flags.from, to: flags.to }));
|
|
2874
|
+
break;
|
|
2875
|
+
case "drivers":
|
|
2876
|
+
out(await client.delivery.analytics.drivers({ from: flags.from, to: flags.to, driver_id: flags["driver-id"] }));
|
|
2877
|
+
break;
|
|
2878
|
+
default:
|
|
2879
|
+
console.error(`Unknown delivery analytics command: ${sub}`);
|
|
2880
|
+
process.exit(1);
|
|
2881
|
+
}
|
|
2882
|
+
break;
|
|
2883
|
+
}
|
|
2884
|
+
case "export": {
|
|
2885
|
+
const sub = pos[0];
|
|
2886
|
+
switch (sub) {
|
|
2887
|
+
case "orders":
|
|
2888
|
+
out(await client.delivery.export.orders({
|
|
2889
|
+
from: flags.from,
|
|
2890
|
+
to: flags.to,
|
|
2891
|
+
status: flags.status,
|
|
2892
|
+
format: flags.format,
|
|
2893
|
+
}));
|
|
2894
|
+
break;
|
|
2895
|
+
default:
|
|
2896
|
+
console.error(`Unknown delivery export command: ${sub}`);
|
|
2897
|
+
process.exit(1);
|
|
2898
|
+
}
|
|
707
2899
|
break;
|
|
2900
|
+
}
|
|
708
2901
|
default:
|
|
709
2902
|
console.error(`Unknown delivery command: ${cmd}`);
|
|
710
2903
|
process.exit(1);
|