@hardfin/cli 0.1.1-dev.60 → 0.1.1-dev.61

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.
@@ -1,2781 +1 @@
1
- {
2
- "globalFlags": [
3
- {
4
- "name": "api-url",
5
- "description": "The API to call, whose host also holds the authorization server",
6
- "valueName": "url"
7
- },
8
- {
9
- "name": "api-key",
10
- "description": "An API key to call with. Prefer HARDFIN_API_KEY, because a command line is visible to other programs",
11
- "valueName": "key"
12
- },
13
- {
14
- "name": "issuer-url",
15
- "description": "The authorization server, when it does not sit at the API's host",
16
- "valueName": "url"
17
- }
18
- ],
19
- "commands": [
20
- {
21
- "name": "login",
22
- "summary": "Sign in to Hardfin through a browser",
23
- "runs": true,
24
- "flags": [
25
- {
26
- "name": "read-only",
27
- "description": "Ask for read access alone, so nothing run with this sign in can change a record"
28
- },
29
- {
30
- "name": "scope",
31
- "description": "The scopes to ask for, separated by spaces, which are hardfin:read hardfin:write offline_access when not given",
32
- "valueName": "scopes"
33
- },
34
- {
35
- "name": "no-browser",
36
- "description": "Print the URL instead of opening it"
37
- },
38
- {
39
- "name": "device",
40
- "description": "Approve on another machine, by typing a code, with no listener on this one"
41
- },
42
- {
43
- "name": "json",
44
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
45
- }
46
- ],
47
- "arguments": [],
48
- "subcommands": []
49
- },
50
- {
51
- "name": "logout",
52
- "summary": "Sign out, and tell Hardfin to forget this machine",
53
- "runs": true,
54
- "flags": [
55
- {
56
- "name": "json",
57
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
58
- }
59
- ],
60
- "arguments": [],
61
- "subcommands": []
62
- },
63
- {
64
- "name": "status",
65
- "summary": "Report what this CLI is configured with, signed in as, and able to reach",
66
- "runs": true,
67
- "flags": [
68
- {
69
- "name": "offline",
70
- "description": "Skip every network call, and report only what is on this machine"
71
- },
72
- {
73
- "name": "json",
74
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
75
- }
76
- ],
77
- "arguments": [],
78
- "subcommands": []
79
- },
80
- {
81
- "name": "init",
82
- "summary": "Set up a project so coding agents can use Hardfin",
83
- "runs": true,
84
- "flags": [
85
- {
86
- "name": "local",
87
- "description": "Set up the MCP server this CLI runs on this machine, in place of the one Hardfin hosts"
88
- },
89
- {
90
- "name": "dry-run",
91
- "description": "Say what would be written, and write nothing"
92
- },
93
- {
94
- "name": "json",
95
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
96
- }
97
- ],
98
- "arguments": [
99
- {}
100
- ],
101
- "subcommands": []
102
- },
103
- {
104
- "name": "asset",
105
- "summary": "Asset commands",
106
- "runs": false,
107
- "flags": [],
108
- "arguments": [],
109
- "subcommands": [
110
- {
111
- "name": "list",
112
- "summary": "Get asset listing",
113
- "runs": true,
114
- "flags": [
115
- {
116
- "name": "page",
117
- "description": "The page to return, starting at 1",
118
- "valueName": "number"
119
- },
120
- {
121
- "name": "limit",
122
- "description": "The number of records per page, from 1 to 100",
123
- "valueName": "number"
124
- },
125
- {
126
- "name": "sort-by",
127
- "description": "The field to sort by",
128
- "valueName": "value",
129
- "values": [
130
- "serial",
131
- "project",
132
- "item",
133
- "location",
134
- "owner",
135
- "activity"
136
- ]
137
- },
138
- {
139
- "name": "sort-order",
140
- "description": "The sort direction",
141
- "valueName": "value",
142
- "values": [
143
- "ASC",
144
- "DESC"
145
- ]
146
- },
147
- {
148
- "name": "archived",
149
- "description": "Whether to return unarchived records, archived records, or all of them",
150
- "valueName": "value",
151
- "values": [
152
- "all",
153
- "false",
154
- "true"
155
- ]
156
- },
157
- {
158
- "name": "search-query",
159
- "description": "Text to match against the serial, description, item, project, owner, and location, ignored when shorter than three characters",
160
- "valueName": "value"
161
- },
162
- {
163
- "name": "for-asset-id",
164
- "description": "The IDs of the assets to list",
165
- "valueName": "uuid",
166
- "repeatable": true
167
- },
168
- {
169
- "name": "for-asset-key",
170
- "description": "The keys of the assets to list",
171
- "valueName": "value",
172
- "repeatable": true
173
- },
174
- {
175
- "name": "for-customer",
176
- "description": "The IDs of the customers whose assets to list",
177
- "valueName": "uuid",
178
- "repeatable": true
179
- },
180
- {
181
- "name": "for-item",
182
- "description": "The IDs of the items whose assets to list",
183
- "valueName": "uuid",
184
- "repeatable": true
185
- },
186
- {
187
- "name": "at-site",
188
- "description": "The IDs of the locations whose assets to list",
189
- "valueName": "uuid",
190
- "repeatable": true
191
- },
192
- {
193
- "name": "at-customer-sites",
194
- "description": "The IDs of the customers whose sites to list assets at",
195
- "valueName": "uuid",
196
- "repeatable": true
197
- },
198
- {
199
- "name": "with-functional-statuses",
200
- "description": "The functional statuses to list, where SCRAPPED lists scrapped assets",
201
- "valueName": "value",
202
- "repeatable": true
203
- },
204
- {
205
- "name": "with-transit-statuses",
206
- "description": "The transit statuses to list",
207
- "valueName": "value",
208
- "repeatable": true
209
- },
210
- {
211
- "name": "with-inventory-statuses",
212
- "description": "In_inventory, not_in_inventory, or both, which filters only when one is sent",
213
- "valueName": "value",
214
- "repeatable": true
215
- },
216
- {
217
- "name": "with-location-company-type",
218
- "description": "Customer, manufacturer, or both, for assets at customer sites or your own, which filters only when one is sent",
219
- "valueName": "value",
220
- "repeatable": true
221
- },
222
- {
223
- "name": "with-project-status",
224
- "description": "The project assignments to list: upcoming, active, past, or none",
225
- "valueName": "value",
226
- "repeatable": true
227
- },
228
- {
229
- "name": "with-owner",
230
- "description": "Manufacturer for assets your organization owns, customer for assets customers own, or both",
231
- "valueName": "value",
232
- "repeatable": true
233
- },
234
- {
235
- "name": "for-project",
236
- "description": "The IDs of the projects whose assets to list",
237
- "valueName": "uuid",
238
- "repeatable": true
239
- },
240
- {
241
- "name": "scrapped",
242
- "description": "Whether to list unscrapped assets, scrapped assets, or all of them",
243
- "valueName": "value",
244
- "values": [
245
- "all",
246
- "false",
247
- "true"
248
- ]
249
- },
250
- {
251
- "name": "json",
252
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
253
- }
254
- ],
255
- "arguments": [],
256
- "subcommands": []
257
- },
258
- {
259
- "name": "create",
260
- "summary": "Create asset",
261
- "runs": true,
262
- "flags": [
263
- {
264
- "name": "allocated-indirect",
265
- "description": "One unit's share of overhead, a cost component",
266
- "valueName": "value"
267
- },
268
- {
269
- "name": "bill-of-materials",
270
- "description": "The parts cost of one unit, a cost component",
271
- "valueName": "value"
272
- },
273
- {
274
- "name": "depreciation-model",
275
- "description": "The method one unit is depreciated by, or null to clear it",
276
- "valueName": "value",
277
- "values": [
278
- "DOUBLE_DECLINING",
279
- "STRAIGHT_LINE",
280
- "SUM_YEAR",
281
- "UNIT_OF_PRODUCTION"
282
- ]
283
- },
284
- {
285
- "name": "description",
286
- "description": "A free-form description of the asset",
287
- "valueName": "value"
288
- },
289
- {
290
- "name": "direct-labor",
291
- "description": "The labor cost to build one unit, a cost component",
292
- "valueName": "value"
293
- },
294
- {
295
- "name": "freight-inbound",
296
- "description": "The shipping cost to receive one unit, a cost component",
297
- "valueName": "value"
298
- },
299
- {
300
- "name": "freight-outbound",
301
- "description": "The shipping cost to deploy one unit, a deployment cost component",
302
- "valueName": "value"
303
- },
304
- {
305
- "name": "functional-status",
306
- "description": "The asset's starting functional status, FUNCTIONAL when absent, which cannot be SCRAPPED",
307
- "valueName": "value",
308
- "values": [
309
- "FUNCTIONAL",
310
- "NEEDS_REVIEW",
311
- "NON-FUNCTIONAL",
312
- "SCRAPPED"
313
- ]
314
- },
315
- {
316
- "name": "in-inventory-date",
317
- "description": "The day the asset entered inventory, which cannot be in the future",
318
- "valueName": "value"
319
- },
320
- {
321
- "name": "in-service-date",
322
- "description": "The day the asset was put into service, which Hardfin sets itself when absent",
323
- "valueName": "value"
324
- },
325
- {
326
- "name": "installation",
327
- "description": "The cost to install one unit, a deployment cost component",
328
- "valueName": "value"
329
- },
330
- {
331
- "name": "interest",
332
- "description": "The financing cost of one unit, a cost component",
333
- "valueName": "value"
334
- },
335
- {
336
- "name": "item-id",
337
- "description": "The ID of the catalog item the asset is a unit of",
338
- "valueName": "uuid"
339
- },
340
- {
341
- "name": "location-id",
342
- "description": "The ID of the location the asset enters inventory at",
343
- "valueName": "uuid"
344
- },
345
- {
346
- "name": "salvage-value",
347
- "description": "The value one unit keeps at the end of its useful life, or null to clear it",
348
- "valueName": "value"
349
- },
350
- {
351
- "name": "serial",
352
- "description": "The asset's serial number, unique within its item",
353
- "valueName": "value"
354
- },
355
- {
356
- "name": "simple-cost-basis",
357
- "description": "A single cost for one unit, which cannot be sent together with the cost components",
358
- "valueName": "value"
359
- },
360
- {
361
- "name": "tariffs",
362
- "description": "The import duty paid on one unit, a cost component",
363
- "valueName": "value"
364
- },
365
- {
366
- "name": "tax",
367
- "description": "The tax paid on one unit, a cost component",
368
- "valueName": "value"
369
- },
370
- {
371
- "name": "useful-life",
372
- "description": "The number of months one unit is depreciated over, or null to clear it",
373
- "valueName": "number"
374
- },
375
- {
376
- "name": "unset",
377
- "description": "A field to clear, named as its flag is, repeatable",
378
- "valueName": "field",
379
- "repeatable": true
380
- },
381
- {
382
- "name": "input",
383
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
384
- "valueName": "path"
385
- },
386
- {
387
- "name": "json",
388
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
389
- }
390
- ],
391
- "arguments": [],
392
- "subcommands": []
393
- },
394
- {
395
- "name": "move",
396
- "summary": "Move commands",
397
- "runs": false,
398
- "flags": [],
399
- "arguments": [],
400
- "subcommands": [
401
- {
402
- "name": "execute",
403
- "summary": "Execute commands",
404
- "runs": false,
405
- "flags": [],
406
- "arguments": [],
407
- "subcommands": [
408
- {
409
- "name": "create",
410
- "summary": "Execute asset move",
411
- "runs": true,
412
- "flags": [
413
- {
414
- "name": "move",
415
- "description": "The moves to carry out",
416
- "valueName": "assetId=,deliverAt=,deliverAtTimezone=,destinationId=,originId=,shipAt=,shipAtTimezone=",
417
- "repeatable": true
418
- },
419
- {
420
- "name": "input",
421
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
422
- "valueName": "path"
423
- },
424
- {
425
- "name": "json",
426
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
427
- }
428
- ],
429
- "arguments": [],
430
- "subcommands": []
431
- }
432
- ]
433
- },
434
- {
435
- "name": "plan",
436
- "summary": "Plan commands",
437
- "runs": false,
438
- "flags": [],
439
- "arguments": [],
440
- "subcommands": [
441
- {
442
- "name": "create",
443
- "summary": "Plan asset move",
444
- "runs": true,
445
- "flags": [
446
- {
447
- "name": "move",
448
- "description": "The moves to plan",
449
- "valueName": "assetId=,deliverAt=,id=,shipAt=",
450
- "repeatable": true
451
- },
452
- {
453
- "name": "input",
454
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
455
- "valueName": "path"
456
- },
457
- {
458
- "name": "json",
459
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
460
- }
461
- ],
462
- "arguments": [],
463
- "subcommands": []
464
- }
465
- ]
466
- }
467
- ]
468
- },
469
- {
470
- "name": "get",
471
- "summary": "Get asset",
472
- "runs": true,
473
- "flags": [
474
- {
475
- "name": "json",
476
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
477
- }
478
- ],
479
- "arguments": [
480
- {}
481
- ],
482
- "subcommands": []
483
- },
484
- {
485
- "name": "update",
486
- "summary": "Patch asset",
487
- "runs": true,
488
- "flags": [
489
- {
490
- "name": "description",
491
- "description": "The asset's new description, or null to clear it",
492
- "valueName": "value"
493
- },
494
- {
495
- "name": "functional-status",
496
- "description": "The asset's new functional status, which cannot be SCRAPPED because scrapping has its own endpoint",
497
- "valueName": "value",
498
- "values": [
499
- "FUNCTIONAL",
500
- "NEEDS_REVIEW",
501
- "NON-FUNCTIONAL",
502
- "SCRAPPED"
503
- ]
504
- },
505
- {
506
- "name": "in-inventory-date",
507
- "description": "The day the asset entered inventory, which cannot be in the future",
508
- "valueName": "value"
509
- },
510
- {
511
- "name": "initial-location-id",
512
- "description": "The ID of the location the asset entered inventory at",
513
- "valueName": "uuid"
514
- },
515
- {
516
- "name": "metadata",
517
- "description": "New values for the asset's custom fields, each naming its field",
518
- "valueName": "fieldId=,value=",
519
- "repeatable": true
520
- },
521
- {
522
- "name": "serial",
523
- "description": "The asset's new serial number, which cannot be empty",
524
- "valueName": "value"
525
- },
526
- {
527
- "name": "unset",
528
- "description": "A field to clear, named as its flag is, repeatable",
529
- "valueName": "field",
530
- "repeatable": true
531
- },
532
- {
533
- "name": "input",
534
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
535
- "valueName": "path"
536
- },
537
- {
538
- "name": "json",
539
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
540
- }
541
- ],
542
- "arguments": [
543
- {}
544
- ],
545
- "subcommands": []
546
- },
547
- {
548
- "name": "accounting",
549
- "summary": "Accounting commands",
550
- "runs": false,
551
- "flags": [],
552
- "arguments": [],
553
- "subcommands": [
554
- {
555
- "name": "update",
556
- "summary": "Update asset accounting",
557
- "runs": true,
558
- "flags": [
559
- {
560
- "name": "allocated-indirect",
561
- "description": "One unit's share of overhead, a cost component",
562
- "valueName": "value"
563
- },
564
- {
565
- "name": "bill-of-materials",
566
- "description": "The parts cost of one unit, a cost component",
567
- "valueName": "value"
568
- },
569
- {
570
- "name": "depreciation-model",
571
- "description": "The method one unit is depreciated by, or null to clear it",
572
- "valueName": "value",
573
- "values": [
574
- "DOUBLE_DECLINING",
575
- "STRAIGHT_LINE",
576
- "SUM_YEAR",
577
- "UNIT_OF_PRODUCTION"
578
- ]
579
- },
580
- {
581
- "name": "direct-labor",
582
- "description": "The labor cost to build one unit, a cost component",
583
- "valueName": "value"
584
- },
585
- {
586
- "name": "freight-inbound",
587
- "description": "The shipping cost to receive one unit, a cost component",
588
- "valueName": "value"
589
- },
590
- {
591
- "name": "freight-outbound",
592
- "description": "The shipping cost to deploy one unit, a deployment cost component",
593
- "valueName": "value"
594
- },
595
- {
596
- "name": "in-service-date",
597
- "description": "The day the asset was put into service and began depreciating, or null to clear it",
598
- "valueName": "value"
599
- },
600
- {
601
- "name": "installation",
602
- "description": "The cost to install one unit, a deployment cost component",
603
- "valueName": "value"
604
- },
605
- {
606
- "name": "interest",
607
- "description": "The financing cost of one unit, a cost component",
608
- "valueName": "value"
609
- },
610
- {
611
- "name": "is-in-service-date-managed-automatically",
612
- "description": "Whether Hardfin sets the in-service date itself, which sending an in-service date turns off",
613
- "negatable": true
614
- },
615
- {
616
- "name": "salvage-value",
617
- "description": "The value one unit keeps at the end of its useful life, or null to clear it",
618
- "valueName": "value"
619
- },
620
- {
621
- "name": "simple-cost-basis",
622
- "description": "A single cost for one unit, which cannot be sent together with the cost components",
623
- "valueName": "value"
624
- },
625
- {
626
- "name": "tariffs",
627
- "description": "The import duty paid on one unit, a cost component",
628
- "valueName": "value"
629
- },
630
- {
631
- "name": "tax",
632
- "description": "The tax paid on one unit, a cost component",
633
- "valueName": "value"
634
- },
635
- {
636
- "name": "useful-life",
637
- "description": "The number of months one unit is depreciated over, or null to clear it",
638
- "valueName": "number"
639
- },
640
- {
641
- "name": "unset",
642
- "description": "A field to clear, named as its flag is, repeatable",
643
- "valueName": "field",
644
- "repeatable": true
645
- },
646
- {
647
- "name": "input",
648
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
649
- "valueName": "path"
650
- },
651
- {
652
- "name": "json",
653
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
654
- }
655
- ],
656
- "arguments": [
657
- {}
658
- ],
659
- "subcommands": []
660
- },
661
- {
662
- "name": "in-service-management",
663
- "summary": "In service management commands",
664
- "runs": false,
665
- "flags": [],
666
- "arguments": [],
667
- "subcommands": [
668
- {
669
- "name": "update",
670
- "summary": "Toggle in service date management",
671
- "runs": true,
672
- "flags": [
673
- {
674
- "name": "automatic",
675
- "description": "Whether Hardfin sets the asset's in-service date itself",
676
- "negatable": true
677
- },
678
- {
679
- "name": "input",
680
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
681
- "valueName": "path"
682
- },
683
- {
684
- "name": "json",
685
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
686
- }
687
- ],
688
- "arguments": [
689
- {}
690
- ],
691
- "subcommands": []
692
- }
693
- ]
694
- }
695
- ]
696
- },
697
- {
698
- "name": "cost-adjustment",
699
- "summary": "Cost adjustment commands",
700
- "runs": false,
701
- "flags": [],
702
- "arguments": [],
703
- "subcommands": [
704
- {
705
- "name": "create",
706
- "summary": "Create asset cost adjustment",
707
- "runs": true,
708
- "flags": [
709
- {
710
- "name": "adjustment-type",
711
- "description": "Whether the adjustment adds to the asset's cost basis or writes it down",
712
- "valueName": "value",
713
- "values": [
714
- "CAPITALIZATION",
715
- "IMPAIRMENT"
716
- ]
717
- },
718
- {
719
- "name": "amount",
720
- "description": "How much the adjustment changes the cost basis by, which must be greater than zero",
721
- "valueName": "value"
722
- },
723
- {
724
- "name": "effective-date",
725
- "description": "The day the adjustment takes effect, which cannot be in the future",
726
- "valueName": "value"
727
- },
728
- {
729
- "name": "notes",
730
- "description": "Free-form detail about the adjustment, which a reason of OTHER requires",
731
- "valueName": "value"
732
- },
733
- {
734
- "name": "reason",
735
- "description": "Why the adjustment was made, which must be one its adjustment type allows",
736
- "valueName": "value",
737
- "values": [
738
- "ADDITION",
739
- "BETTERMENT",
740
- "DAMAGE",
741
- "INSTALLATION",
742
- "LIFE_EXTENSION",
743
- "MARKET_DECLINE",
744
- "OBSOLESCENCE",
745
- "OTHER",
746
- "REGULATORY"
747
- ]
748
- },
749
- {
750
- "name": "unset",
751
- "description": "A field to clear, named as its flag is, repeatable",
752
- "valueName": "field",
753
- "repeatable": true
754
- },
755
- {
756
- "name": "input",
757
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
758
- "valueName": "path"
759
- },
760
- {
761
- "name": "json",
762
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
763
- }
764
- ],
765
- "arguments": [
766
- {}
767
- ],
768
- "subcommands": []
769
- }
770
- ]
771
- },
772
- {
773
- "name": "event",
774
- "summary": "Event commands",
775
- "runs": false,
776
- "flags": [],
777
- "arguments": [],
778
- "subcommands": [
779
- {
780
- "name": "list",
781
- "summary": "Get asset event list",
782
- "runs": true,
783
- "flags": [
784
- {
785
- "name": "json",
786
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
787
- }
788
- ],
789
- "arguments": [
790
- {}
791
- ],
792
- "subcommands": []
793
- }
794
- ]
795
- },
796
- {
797
- "name": "event-group",
798
- "summary": "Event group commands",
799
- "runs": false,
800
- "flags": [],
801
- "arguments": [],
802
- "subcommands": [
803
- {
804
- "name": "list",
805
- "summary": "Get asset event group listing",
806
- "runs": true,
807
- "flags": [
808
- {
809
- "name": "start",
810
- "description": "The earliest an event group may have happened, or null to read from the first",
811
- "valueName": "value"
812
- },
813
- {
814
- "name": "end",
815
- "description": "The latest an event group may have happened, or null to read through the last",
816
- "valueName": "value"
817
- },
818
- {
819
- "name": "json",
820
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
821
- }
822
- ],
823
- "arguments": [
824
- {}
825
- ],
826
- "subcommands": []
827
- },
828
- {
829
- "name": "get",
830
- "summary": "Get asset event group",
831
- "runs": true,
832
- "flags": [
833
- {
834
- "name": "json",
835
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
836
- }
837
- ],
838
- "arguments": [
839
- {},
840
- {}
841
- ],
842
- "subcommands": []
843
- }
844
- ]
845
- },
846
- {
847
- "name": "file",
848
- "summary": "File commands",
849
- "runs": false,
850
- "flags": [],
851
- "arguments": [],
852
- "subcommands": [
853
- {
854
- "name": "list",
855
- "summary": "Get asset files",
856
- "runs": true,
857
- "flags": [
858
- {
859
- "name": "json",
860
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
861
- }
862
- ],
863
- "arguments": [
864
- {}
865
- ],
866
- "subcommands": []
867
- },
868
- {
869
- "name": "delete",
870
- "summary": "Delete asset file",
871
- "runs": true,
872
- "flags": [
873
- {
874
- "name": "json",
875
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
876
- }
877
- ],
878
- "arguments": [
879
- {},
880
- {}
881
- ],
882
- "subcommands": []
883
- }
884
- ]
885
- },
886
- {
887
- "name": "functional-status",
888
- "summary": "Functional status commands",
889
- "runs": false,
890
- "flags": [],
891
- "arguments": [],
892
- "subcommands": [
893
- {
894
- "name": "list",
895
- "summary": "Get asset functional status history",
896
- "runs": true,
897
- "flags": [
898
- {
899
- "name": "json",
900
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
901
- }
902
- ],
903
- "arguments": [
904
- {}
905
- ],
906
- "subcommands": []
907
- }
908
- ]
909
- },
910
- {
911
- "name": "ownership",
912
- "summary": "Ownership commands",
913
- "runs": false,
914
- "flags": [],
915
- "arguments": [],
916
- "subcommands": [
917
- {
918
- "name": "list",
919
- "summary": "Get asset ownership history",
920
- "runs": true,
921
- "flags": [
922
- {
923
- "name": "json",
924
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
925
- }
926
- ],
927
- "arguments": [
928
- {}
929
- ],
930
- "subcommands": []
931
- },
932
- {
933
- "name": "create",
934
- "summary": "Create asset ownership",
935
- "runs": true,
936
- "flags": [
937
- {
938
- "name": "customer-id",
939
- "description": "The ID of the customer that takes ownership of the asset",
940
- "valueName": "uuid"
941
- },
942
- {
943
- "name": "date",
944
- "description": "The day the customer takes ownership, which cannot be in the future",
945
- "valueName": "value"
946
- },
947
- {
948
- "name": "sale-price",
949
- "description": "What the customer paid for the asset, which cannot be negative",
950
- "valueName": "value"
951
- },
952
- {
953
- "name": "unset",
954
- "description": "A field to clear, named as its flag is, repeatable",
955
- "valueName": "field",
956
- "repeatable": true
957
- },
958
- {
959
- "name": "input",
960
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
961
- "valueName": "path"
962
- },
963
- {
964
- "name": "json",
965
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
966
- }
967
- ],
968
- "arguments": [
969
- {}
970
- ],
971
- "subcommands": []
972
- },
973
- {
974
- "name": "clear",
975
- "summary": "Clear the ownership an asset holds today",
976
- "runs": true,
977
- "flags": [
978
- {
979
- "name": "date",
980
- "description": "The day your organization takes the asset back, which cannot be in the future",
981
- "valueName": "value"
982
- },
983
- {
984
- "name": "input",
985
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
986
- "valueName": "path"
987
- },
988
- {
989
- "name": "json",
990
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
991
- }
992
- ],
993
- "arguments": [
994
- {}
995
- ],
996
- "subcommands": []
997
- },
998
- {
999
- "name": "get",
1000
- "summary": "Get asset ownership segment",
1001
- "runs": true,
1002
- "flags": [
1003
- {
1004
- "name": "json",
1005
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1006
- }
1007
- ],
1008
- "arguments": [
1009
- {},
1010
- {}
1011
- ],
1012
- "subcommands": []
1013
- },
1014
- {
1015
- "name": "update",
1016
- "summary": "Patch asset ownership segment",
1017
- "runs": true,
1018
- "flags": [
1019
- {
1020
- "name": "customer-id",
1021
- "description": "The ID of the customer that owned the asset during the segment",
1022
- "valueName": "uuid"
1023
- },
1024
- {
1025
- "name": "date",
1026
- "description": "The day the segment's owner took ownership, which cannot be in the future",
1027
- "valueName": "value"
1028
- },
1029
- {
1030
- "name": "sale-price",
1031
- "description": "What the owner paid for the asset, which cannot be negative",
1032
- "valueName": "value"
1033
- },
1034
- {
1035
- "name": "unset",
1036
- "description": "A field to clear, named as its flag is, repeatable",
1037
- "valueName": "field",
1038
- "repeatable": true
1039
- },
1040
- {
1041
- "name": "input",
1042
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
1043
- "valueName": "path"
1044
- },
1045
- {
1046
- "name": "json",
1047
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1048
- }
1049
- ],
1050
- "arguments": [
1051
- {},
1052
- {}
1053
- ],
1054
- "subcommands": []
1055
- },
1056
- {
1057
- "name": "delete",
1058
- "summary": "Delete asset ownership segment",
1059
- "runs": true,
1060
- "flags": [
1061
- {
1062
- "name": "json",
1063
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1064
- }
1065
- ],
1066
- "arguments": [
1067
- {},
1068
- {}
1069
- ],
1070
- "subcommands": []
1071
- }
1072
- ]
1073
- },
1074
- {
1075
- "name": "scrap",
1076
- "summary": "Scrap commands",
1077
- "runs": false,
1078
- "flags": [],
1079
- "arguments": [],
1080
- "subcommands": [
1081
- {
1082
- "name": "create",
1083
- "summary": "Scrap asset",
1084
- "runs": true,
1085
- "flags": [
1086
- {
1087
- "name": "disposal-date",
1088
- "description": "The day the asset was scrapped",
1089
- "valueName": "value"
1090
- },
1091
- {
1092
- "name": "disposal-price",
1093
- "description": "What the scrapped asset was sold for, or null when it was not sold",
1094
- "valueName": "value"
1095
- },
1096
- {
1097
- "name": "disposal-reason",
1098
- "description": "Why the asset was scrapped",
1099
- "valueName": "value"
1100
- },
1101
- {
1102
- "name": "unset",
1103
- "description": "A field to clear, named as its flag is, repeatable",
1104
- "valueName": "field",
1105
- "repeatable": true
1106
- },
1107
- {
1108
- "name": "input",
1109
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
1110
- "valueName": "path"
1111
- },
1112
- {
1113
- "name": "json",
1114
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1115
- }
1116
- ],
1117
- "arguments": [
1118
- {}
1119
- ],
1120
- "subcommands": []
1121
- }
1122
- ]
1123
- },
1124
- {
1125
- "name": "unscrap",
1126
- "summary": "Unscrap commands",
1127
- "runs": false,
1128
- "flags": [],
1129
- "arguments": [],
1130
- "subcommands": [
1131
- {
1132
- "name": "create",
1133
- "summary": "Unscrap asset",
1134
- "runs": true,
1135
- "flags": [
1136
- {
1137
- "name": "json",
1138
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1139
- }
1140
- ],
1141
- "arguments": [
1142
- {}
1143
- ],
1144
- "subcommands": []
1145
- }
1146
- ]
1147
- },
1148
- {
1149
- "name": "url-link",
1150
- "summary": "URL link commands",
1151
- "runs": false,
1152
- "flags": [],
1153
- "arguments": [],
1154
- "subcommands": [
1155
- {
1156
- "name": "list",
1157
- "summary": "Get asset URL links",
1158
- "runs": true,
1159
- "flags": [
1160
- {
1161
- "name": "json",
1162
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1163
- }
1164
- ],
1165
- "arguments": [
1166
- {}
1167
- ],
1168
- "subcommands": []
1169
- },
1170
- {
1171
- "name": "create",
1172
- "summary": "Create asset URL link",
1173
- "runs": true,
1174
- "flags": [
1175
- {
1176
- "name": "name",
1177
- "description": "The link's display name, or null to show the address instead",
1178
- "valueName": "value"
1179
- },
1180
- {
1181
- "name": "url",
1182
- "description": "The address the link points to",
1183
- "valueName": "value"
1184
- },
1185
- {
1186
- "name": "unset",
1187
- "description": "A field to clear, named as its flag is, repeatable",
1188
- "valueName": "field",
1189
- "repeatable": true
1190
- },
1191
- {
1192
- "name": "input",
1193
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
1194
- "valueName": "path"
1195
- },
1196
- {
1197
- "name": "json",
1198
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1199
- }
1200
- ],
1201
- "arguments": [
1202
- {}
1203
- ],
1204
- "subcommands": []
1205
- }
1206
- ]
1207
- },
1208
- {
1209
- "name": "useful-life-revision",
1210
- "summary": "Useful life revision commands",
1211
- "runs": false,
1212
- "flags": [],
1213
- "arguments": [],
1214
- "subcommands": [
1215
- {
1216
- "name": "create",
1217
- "summary": "Create asset useful life revision",
1218
- "runs": true,
1219
- "flags": [
1220
- {
1221
- "name": "effective-date",
1222
- "description": "The day the revised useful life takes effect, which cannot be in the future",
1223
- "valueName": "value"
1224
- },
1225
- {
1226
- "name": "notes",
1227
- "description": "Free-form detail about the revision, which a reason of OTHER requires",
1228
- "valueName": "value"
1229
- },
1230
- {
1231
- "name": "reason",
1232
- "description": "Why the useful life was revised",
1233
- "valueName": "value",
1234
- "values": [
1235
- "CHANGE_IN_USE",
1236
- "DAMAGE",
1237
- "OBSOLESCENCE",
1238
- "OTHER",
1239
- "REASSESSMENT",
1240
- "REFURBISHMENT",
1241
- "REGULATORY"
1242
- ]
1243
- },
1244
- {
1245
- "name": "useful-life-months",
1246
- "description": "The asset's revised useful life in months",
1247
- "valueName": "number"
1248
- },
1249
- {
1250
- "name": "unset",
1251
- "description": "A field to clear, named as its flag is, repeatable",
1252
- "valueName": "field",
1253
- "repeatable": true
1254
- },
1255
- {
1256
- "name": "input",
1257
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
1258
- "valueName": "path"
1259
- },
1260
- {
1261
- "name": "json",
1262
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1263
- }
1264
- ],
1265
- "arguments": [
1266
- {}
1267
- ],
1268
- "subcommands": []
1269
- }
1270
- ]
1271
- }
1272
- ]
1273
- },
1274
- {
1275
- "name": "customer",
1276
- "summary": "Customer commands",
1277
- "runs": false,
1278
- "flags": [],
1279
- "arguments": [],
1280
- "subcommands": [
1281
- {
1282
- "name": "list",
1283
- "summary": "Get customers",
1284
- "runs": true,
1285
- "flags": [
1286
- {
1287
- "name": "page",
1288
- "description": "The page to return, starting at 1",
1289
- "valueName": "number"
1290
- },
1291
- {
1292
- "name": "limit",
1293
- "description": "The number of records per page, from 1 to 100",
1294
- "valueName": "number"
1295
- },
1296
- {
1297
- "name": "sort-by",
1298
- "description": "The field to sort by",
1299
- "valueName": "value"
1300
- },
1301
- {
1302
- "name": "sort-order",
1303
- "description": "The sort direction",
1304
- "valueName": "value",
1305
- "values": [
1306
- "ASC",
1307
- "DESC"
1308
- ]
1309
- },
1310
- {
1311
- "name": "archived",
1312
- "description": "Whether to return unarchived records, archived records, or all of them",
1313
- "valueName": "value",
1314
- "values": [
1315
- "all",
1316
- "false",
1317
- "true"
1318
- ]
1319
- },
1320
- {
1321
- "name": "is-customer",
1322
- "description": "True to return only customers, or false to return only non-customers"
1323
- },
1324
- {
1325
- "name": "is-supplier",
1326
- "description": "True to return only suppliers, or false to return only non-suppliers"
1327
- },
1328
- {
1329
- "name": "sync-statuses",
1330
- "description": "The CRM sync statuses to return: in-sync, out-of-sync, or not-linked",
1331
- "valueName": "value",
1332
- "repeatable": true
1333
- },
1334
- {
1335
- "name": "search",
1336
- "description": "Text to match against customer names",
1337
- "valueName": "value"
1338
- },
1339
- {
1340
- "name": "json",
1341
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1342
- }
1343
- ],
1344
- "arguments": [],
1345
- "subcommands": []
1346
- },
1347
- {
1348
- "name": "create",
1349
- "summary": "Create customer",
1350
- "runs": true,
1351
- "flags": [
1352
- {
1353
- "name": "billing-address",
1354
- "description": "The address invoices are sent to",
1355
- "valueName": "value"
1356
- },
1357
- {
1358
- "name": "billing-contact-email",
1359
- "description": "The billing contact's email address",
1360
- "valueName": "value"
1361
- },
1362
- {
1363
- "name": "billing-contact-name",
1364
- "description": "The billing contact's name",
1365
- "valueName": "value"
1366
- },
1367
- {
1368
- "name": "billing-contact-phone",
1369
- "description": "The billing contact's phone number",
1370
- "valueName": "value"
1371
- },
1372
- {
1373
- "name": "comment",
1374
- "description": "A free-form note about the customer",
1375
- "valueName": "value"
1376
- },
1377
- {
1378
- "name": "domain",
1379
- "description": "The customer's web domain, used to look up its logo",
1380
- "valueName": "value"
1381
- },
1382
- {
1383
- "name": "external-id",
1384
- "description": "The customer's identifier in another system",
1385
- "valueName": "value"
1386
- },
1387
- {
1388
- "name": "is-customer",
1389
- "description": "Whether the company is a customer",
1390
- "negatable": true
1391
- },
1392
- {
1393
- "name": "is-supplier",
1394
- "description": "Whether the company is a supplier",
1395
- "negatable": true
1396
- },
1397
- {
1398
- "name": "name",
1399
- "description": "The customer's display name",
1400
- "valueName": "value"
1401
- },
1402
- {
1403
- "name": "unset",
1404
- "description": "A field to clear, named as its flag is, repeatable",
1405
- "valueName": "field",
1406
- "repeatable": true
1407
- },
1408
- {
1409
- "name": "input",
1410
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
1411
- "valueName": "path"
1412
- },
1413
- {
1414
- "name": "json",
1415
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1416
- }
1417
- ],
1418
- "arguments": [],
1419
- "subcommands": []
1420
- },
1421
- {
1422
- "name": "get",
1423
- "summary": "Get customer",
1424
- "runs": true,
1425
- "flags": [
1426
- {
1427
- "name": "json",
1428
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1429
- }
1430
- ],
1431
- "arguments": [
1432
- {}
1433
- ],
1434
- "subcommands": []
1435
- },
1436
- {
1437
- "name": "update",
1438
- "summary": "Patch customer",
1439
- "runs": true,
1440
- "flags": [
1441
- {
1442
- "name": "billing-address",
1443
- "description": "The address invoices are sent to",
1444
- "valueName": "value"
1445
- },
1446
- {
1447
- "name": "billing-contact-email",
1448
- "description": "The billing contact's email address",
1449
- "valueName": "value"
1450
- },
1451
- {
1452
- "name": "billing-contact-name",
1453
- "description": "The billing contact's name",
1454
- "valueName": "value"
1455
- },
1456
- {
1457
- "name": "billing-contact-phone",
1458
- "description": "The billing contact's phone number",
1459
- "valueName": "value"
1460
- },
1461
- {
1462
- "name": "comment",
1463
- "description": "A free-form note about the customer",
1464
- "valueName": "value"
1465
- },
1466
- {
1467
- "name": "domain",
1468
- "description": "The customer's web domain, used to look up its logo",
1469
- "valueName": "value"
1470
- },
1471
- {
1472
- "name": "external-id",
1473
- "description": "The customer's identifier in another system",
1474
- "valueName": "value"
1475
- },
1476
- {
1477
- "name": "is-archived",
1478
- "description": "Whether the customer is archived",
1479
- "negatable": true
1480
- },
1481
- {
1482
- "name": "is-customer",
1483
- "description": "Whether the company is a customer",
1484
- "negatable": true
1485
- },
1486
- {
1487
- "name": "is-supplier",
1488
- "description": "Whether the company is a supplier",
1489
- "negatable": true
1490
- },
1491
- {
1492
- "name": "name",
1493
- "description": "The customer's display name",
1494
- "valueName": "value"
1495
- },
1496
- {
1497
- "name": "unset",
1498
- "description": "A field to clear, named as its flag is, repeatable",
1499
- "valueName": "field",
1500
- "repeatable": true
1501
- },
1502
- {
1503
- "name": "input",
1504
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
1505
- "valueName": "path"
1506
- },
1507
- {
1508
- "name": "json",
1509
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1510
- }
1511
- ],
1512
- "arguments": [
1513
- {}
1514
- ],
1515
- "subcommands": []
1516
- }
1517
- ]
1518
- },
1519
- {
1520
- "name": "file",
1521
- "summary": "File commands",
1522
- "runs": false,
1523
- "flags": [],
1524
- "arguments": [],
1525
- "subcommands": [
1526
- {
1527
- "name": "create",
1528
- "summary": "Upload file",
1529
- "runs": true,
1530
- "flags": [
1531
- {
1532
- "name": "file-type",
1533
- "description": "The kind of file uploaded, which is ASSET_FILE, the only kind the API uploads",
1534
- "valueName": "value"
1535
- },
1536
- {
1537
- "name": "for-entity",
1538
- "description": "The ID of the asset the file is attached to",
1539
- "valueName": "uuid"
1540
- },
1541
- {
1542
- "name": "is-public",
1543
- "description": "Whether any organization's API key may download the file, which is false unless sent as true"
1544
- },
1545
- {
1546
- "name": "file",
1547
- "description": "The file to upload",
1548
- "valueName": "path"
1549
- },
1550
- {
1551
- "name": "json",
1552
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1553
- }
1554
- ],
1555
- "arguments": [],
1556
- "subcommands": []
1557
- },
1558
- {
1559
- "name": "get",
1560
- "summary": "Get file",
1561
- "runs": true,
1562
- "flags": [
1563
- {
1564
- "name": "attachment",
1565
- "description": "True when the file downloads as an attachment rather than opening inline"
1566
- },
1567
- {
1568
- "name": "output",
1569
- "description": "Where to write the file, or - for standard output",
1570
- "valueName": "path"
1571
- },
1572
- {
1573
- "name": "json",
1574
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1575
- }
1576
- ],
1577
- "arguments": [
1578
- {}
1579
- ],
1580
- "subcommands": []
1581
- }
1582
- ]
1583
- },
1584
- {
1585
- "name": "item",
1586
- "summary": "Item commands",
1587
- "runs": false,
1588
- "flags": [],
1589
- "arguments": [],
1590
- "subcommands": [
1591
- {
1592
- "name": "list",
1593
- "summary": "Get items",
1594
- "runs": true,
1595
- "flags": [
1596
- {
1597
- "name": "type",
1598
- "description": "The item type to list, SERVICE, DEVICE, or BULK, or absent for every type",
1599
- "valueName": "value",
1600
- "values": [
1601
- "BULK",
1602
- "DEVICE",
1603
- "SERVICE"
1604
- ]
1605
- },
1606
- {
1607
- "name": "search",
1608
- "description": "Text to match against item names, SKUs, and descriptions, in any case",
1609
- "valueName": "value"
1610
- },
1611
- {
1612
- "name": "page",
1613
- "description": "The page to return, starting at 1",
1614
- "valueName": "number"
1615
- },
1616
- {
1617
- "name": "limit",
1618
- "description": "The number of records per page, from 1 to 100",
1619
- "valueName": "number"
1620
- },
1621
- {
1622
- "name": "sort-by",
1623
- "description": "The field to sort by",
1624
- "valueName": "value",
1625
- "values": [
1626
- "name",
1627
- "sku",
1628
- "type",
1629
- "lastUpdatedAt"
1630
- ]
1631
- },
1632
- {
1633
- "name": "sort-order",
1634
- "description": "The sort direction",
1635
- "valueName": "value",
1636
- "values": [
1637
- "ASC",
1638
- "DESC"
1639
- ]
1640
- },
1641
- {
1642
- "name": "archived",
1643
- "description": "Whether to return unarchived records, archived records, or all of them",
1644
- "valueName": "value",
1645
- "values": [
1646
- "all",
1647
- "false",
1648
- "true"
1649
- ]
1650
- },
1651
- {
1652
- "name": "exclude-linked-integration",
1653
- "description": "An integration whose already-linked items to leave out",
1654
- "valueName": "value"
1655
- },
1656
- {
1657
- "name": "json",
1658
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1659
- }
1660
- ],
1661
- "arguments": [],
1662
- "subcommands": []
1663
- },
1664
- {
1665
- "name": "create",
1666
- "summary": "Create item",
1667
- "runs": true,
1668
- "flags": [
1669
- {
1670
- "name": "accepts-bulk-serials",
1671
- "description": "Whether a BULK item records serial numbers on its units, which SERVICE and DEVICE items ignore",
1672
- "negatable": true
1673
- },
1674
- {
1675
- "name": "description",
1676
- "description": "A free-form description of the item",
1677
- "valueName": "value"
1678
- },
1679
- {
1680
- "name": "name",
1681
- "description": "The item's display name",
1682
- "valueName": "value"
1683
- },
1684
- {
1685
- "name": "sku",
1686
- "description": "The item's stock keeping unit, unique within your organization",
1687
- "valueName": "value"
1688
- },
1689
- {
1690
- "name": "type",
1691
- "description": "SERVICE for a non-physical item, DEVICE for a physical item tracked by serial number, or BULK for a part tracked by quantity",
1692
- "valueName": "value",
1693
- "values": [
1694
- "BULK",
1695
- "DEVICE",
1696
- "SERVICE"
1697
- ]
1698
- },
1699
- {
1700
- "name": "unit-of-measure",
1701
- "description": "The unit a BULK item's quantities are counted in, which SERVICE and DEVICE items ignore",
1702
- "valueName": "value",
1703
- "values": [
1704
- "BG",
1705
- "BO",
1706
- "BX",
1707
- "C62",
1708
- "CMK",
1709
- "CMT",
1710
- "CR",
1711
- "CS",
1712
- "CT",
1713
- "DMQ",
1714
- "DR",
1715
- "DZN",
1716
- "EA",
1717
- "EN",
1718
- "FOT",
1719
- "FTK",
1720
- "FTQ",
1721
- "GLL",
1722
- "GRM",
1723
- "GRO",
1724
- "H87",
1725
- "INH",
1726
- "INK",
1727
- "INQ",
1728
- "KG",
1729
- "KGM",
1730
- "KMT",
1731
- "KT",
1732
- "LBR",
1733
- "LO",
1734
- "LTR",
1735
- "MGM",
1736
- "MLT",
1737
- "MMK",
1738
- "MMT",
1739
- "MTK",
1740
- "MTQ",
1741
- "MTR",
1742
- "ONZ",
1743
- "OZA",
1744
- "PK",
1745
- "PR",
1746
- "PTI",
1747
- "PX",
1748
- "QTI",
1749
- "RL",
1750
- "RO",
1751
- "SET",
1752
- "SMI",
1753
- "ST",
1754
- "STN",
1755
- "SV",
1756
- "TNE",
1757
- "TU",
1758
- "YDK",
1759
- "YDQ",
1760
- "YRD"
1761
- ]
1762
- },
1763
- {
1764
- "name": "unset",
1765
- "description": "A field to clear, named as its flag is, repeatable",
1766
- "valueName": "field",
1767
- "repeatable": true
1768
- },
1769
- {
1770
- "name": "input",
1771
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
1772
- "valueName": "path"
1773
- },
1774
- {
1775
- "name": "json",
1776
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1777
- }
1778
- ],
1779
- "arguments": [],
1780
- "subcommands": []
1781
- },
1782
- {
1783
- "name": "get",
1784
- "summary": "Get item",
1785
- "runs": true,
1786
- "flags": [
1787
- {
1788
- "name": "json",
1789
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1790
- }
1791
- ],
1792
- "arguments": [
1793
- {}
1794
- ],
1795
- "subcommands": []
1796
- },
1797
- {
1798
- "name": "update",
1799
- "summary": "Update item",
1800
- "runs": true,
1801
- "flags": [
1802
- {
1803
- "name": "accepts-bulk-serials",
1804
- "description": "Whether a BULK item records serial numbers on its units, read only beside type",
1805
- "negatable": true
1806
- },
1807
- {
1808
- "name": "description",
1809
- "description": "The item's new description, or null to clear it",
1810
- "valueName": "value"
1811
- },
1812
- {
1813
- "name": "field",
1814
- "description": "New positions for a DEVICE item's fields",
1815
- "valueName": "fieldId=,order=,section=",
1816
- "repeatable": true
1817
- },
1818
- {
1819
- "name": "is-archived",
1820
- "description": "Whether the item is archived, which cannot be null",
1821
- "negatable": true
1822
- },
1823
- {
1824
- "name": "name",
1825
- "description": "The item's new display name, which cannot be empty",
1826
- "valueName": "value"
1827
- },
1828
- {
1829
- "name": "sku",
1830
- "description": "The item's new stock keeping unit, which cannot be empty and must be unique within your organization",
1831
- "valueName": "value"
1832
- },
1833
- {
1834
- "name": "type",
1835
- "description": "The type to convert the item to, when the item's assets and inventory history allow the conversion",
1836
- "valueName": "value",
1837
- "values": [
1838
- "BULK",
1839
- "DEVICE",
1840
- "SERVICE"
1841
- ]
1842
- },
1843
- {
1844
- "name": "unset",
1845
- "description": "A field to clear, named as its flag is, repeatable",
1846
- "valueName": "field",
1847
- "repeatable": true
1848
- },
1849
- {
1850
- "name": "input",
1851
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
1852
- "valueName": "path"
1853
- },
1854
- {
1855
- "name": "json",
1856
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1857
- }
1858
- ],
1859
- "arguments": [
1860
- {}
1861
- ],
1862
- "subcommands": []
1863
- },
1864
- {
1865
- "name": "accounting",
1866
- "summary": "Accounting commands",
1867
- "runs": false,
1868
- "flags": [],
1869
- "arguments": [],
1870
- "subcommands": [
1871
- {
1872
- "name": "update",
1873
- "summary": "Update item accounting",
1874
- "runs": true,
1875
- "flags": [
1876
- {
1877
- "name": "allocated-indirect",
1878
- "description": "One unit's share of overhead, a cost component",
1879
- "valueName": "value"
1880
- },
1881
- {
1882
- "name": "bill-of-materials",
1883
- "description": "The parts cost of one unit, a cost component",
1884
- "valueName": "value"
1885
- },
1886
- {
1887
- "name": "depreciation-model",
1888
- "description": "The method one unit is depreciated by, or null to clear it",
1889
- "valueName": "value",
1890
- "values": [
1891
- "DOUBLE_DECLINING",
1892
- "STRAIGHT_LINE",
1893
- "SUM_YEAR",
1894
- "UNIT_OF_PRODUCTION"
1895
- ]
1896
- },
1897
- {
1898
- "name": "direct-labor",
1899
- "description": "The labor cost to build one unit, a cost component",
1900
- "valueName": "value"
1901
- },
1902
- {
1903
- "name": "freight-inbound",
1904
- "description": "The shipping cost to receive one unit, a cost component",
1905
- "valueName": "value"
1906
- },
1907
- {
1908
- "name": "freight-outbound",
1909
- "description": "The shipping cost to deploy one unit, a deployment cost component",
1910
- "valueName": "value"
1911
- },
1912
- {
1913
- "name": "installation",
1914
- "description": "The cost to install one unit, a deployment cost component",
1915
- "valueName": "value"
1916
- },
1917
- {
1918
- "name": "interest",
1919
- "description": "The financing cost of one unit, a cost component",
1920
- "valueName": "value"
1921
- },
1922
- {
1923
- "name": "salvage-value",
1924
- "description": "The value one unit keeps at the end of its useful life, or null to clear it",
1925
- "valueName": "value"
1926
- },
1927
- {
1928
- "name": "simple-cost-basis",
1929
- "description": "A single cost for one unit, which cannot be sent together with the cost components",
1930
- "valueName": "value"
1931
- },
1932
- {
1933
- "name": "tariffs",
1934
- "description": "The import duty paid on one unit, a cost component",
1935
- "valueName": "value"
1936
- },
1937
- {
1938
- "name": "tax",
1939
- "description": "The tax paid on one unit, a cost component",
1940
- "valueName": "value"
1941
- },
1942
- {
1943
- "name": "useful-life",
1944
- "description": "The number of months one unit is depreciated over, or null to clear it",
1945
- "valueName": "number"
1946
- },
1947
- {
1948
- "name": "unset",
1949
- "description": "A field to clear, named as its flag is, repeatable",
1950
- "valueName": "field",
1951
- "repeatable": true
1952
- },
1953
- {
1954
- "name": "input",
1955
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
1956
- "valueName": "path"
1957
- },
1958
- {
1959
- "name": "json",
1960
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
1961
- }
1962
- ],
1963
- "arguments": [
1964
- {}
1965
- ],
1966
- "subcommands": []
1967
- }
1968
- ]
1969
- },
1970
- {
1971
- "name": "field",
1972
- "summary": "Field commands",
1973
- "runs": false,
1974
- "flags": [],
1975
- "arguments": [],
1976
- "subcommands": [
1977
- {
1978
- "name": "create",
1979
- "summary": "Create item field",
1980
- "runs": true,
1981
- "flags": [
1982
- {
1983
- "name": "field-type",
1984
- "description": "The kind of value the field holds",
1985
- "valueName": "value",
1986
- "values": [
1987
- "BOOLEAN",
1988
- "DATE",
1989
- "DATE_TIME",
1990
- "INTEGER",
1991
- "MULTILINE_TEXT",
1992
- "NUMBER",
1993
- "TEXT",
1994
- "TIME"
1995
- ]
1996
- },
1997
- {
1998
- "name": "label",
1999
- "description": "The field's display name",
2000
- "valueName": "value"
2001
- },
2002
- {
2003
- "name": "order",
2004
- "description": "The field's position within its section, starting at 0",
2005
- "valueName": "number"
2006
- },
2007
- {
2008
- "name": "section",
2009
- "description": "The group the field is shown in, starting at 0",
2010
- "valueName": "number"
2011
- },
2012
- {
2013
- "name": "unset",
2014
- "description": "A field to clear, named as its flag is, repeatable",
2015
- "valueName": "field",
2016
- "repeatable": true
2017
- },
2018
- {
2019
- "name": "input",
2020
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
2021
- "valueName": "path"
2022
- },
2023
- {
2024
- "name": "json",
2025
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2026
- }
2027
- ],
2028
- "arguments": [
2029
- {}
2030
- ],
2031
- "subcommands": []
2032
- },
2033
- {
2034
- "name": "update",
2035
- "summary": "Update item field",
2036
- "runs": true,
2037
- "flags": [
2038
- {
2039
- "name": "label",
2040
- "description": "The field's new display name, which cannot be empty",
2041
- "valueName": "value"
2042
- },
2043
- {
2044
- "name": "unset",
2045
- "description": "A field to clear, named as its flag is, repeatable",
2046
- "valueName": "field",
2047
- "repeatable": true
2048
- },
2049
- {
2050
- "name": "input",
2051
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
2052
- "valueName": "path"
2053
- },
2054
- {
2055
- "name": "json",
2056
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2057
- }
2058
- ],
2059
- "arguments": [
2060
- {},
2061
- {}
2062
- ],
2063
- "subcommands": []
2064
- },
2065
- {
2066
- "name": "delete",
2067
- "summary": "Delete item field",
2068
- "runs": true,
2069
- "flags": [
2070
- {
2071
- "name": "json",
2072
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2073
- }
2074
- ],
2075
- "arguments": [
2076
- {},
2077
- {}
2078
- ],
2079
- "subcommands": []
2080
- }
2081
- ]
2082
- }
2083
- ]
2084
- },
2085
- {
2086
- "name": "location",
2087
- "summary": "Location commands",
2088
- "runs": false,
2089
- "flags": [],
2090
- "arguments": [],
2091
- "subcommands": [
2092
- {
2093
- "name": "list",
2094
- "summary": "Get location listing",
2095
- "runs": true,
2096
- "flags": [
2097
- {
2098
- "name": "page",
2099
- "description": "The page to return, starting at 1",
2100
- "valueName": "number"
2101
- },
2102
- {
2103
- "name": "limit",
2104
- "description": "The number of records per page, from 1 to 100",
2105
- "valueName": "number"
2106
- },
2107
- {
2108
- "name": "sort-by",
2109
- "description": "The field to sort by",
2110
- "valueName": "value",
2111
- "values": [
2112
- "name",
2113
- "company",
2114
- "assetCount"
2115
- ]
2116
- },
2117
- {
2118
- "name": "sort-order",
2119
- "description": "The sort direction",
2120
- "valueName": "value",
2121
- "values": [
2122
- "ASC",
2123
- "DESC"
2124
- ]
2125
- },
2126
- {
2127
- "name": "archived",
2128
- "description": "Whether to return unarchived records, archived records, or all of them",
2129
- "valueName": "value",
2130
- "values": [
2131
- "all",
2132
- "false",
2133
- "true"
2134
- ]
2135
- },
2136
- {
2137
- "name": "is-transient",
2138
- "description": "Whether to return permanent locations (false), transient locations (true), or both (all)",
2139
- "valueName": "value",
2140
- "values": [
2141
- "all",
2142
- "false",
2143
- "true"
2144
- ]
2145
- },
2146
- {
2147
- "name": "search",
2148
- "description": "Text to match against location and customer names",
2149
- "valueName": "value"
2150
- },
2151
- {
2152
- "name": "for-customer-ids",
2153
- "description": "The IDs of the customers whose locations to return",
2154
- "valueName": "value",
2155
- "repeatable": true
2156
- },
2157
- {
2158
- "name": "include-organization",
2159
- "description": "Whether the customer filter also matches your organization's own locations, which on its own returns only those"
2160
- },
2161
- {
2162
- "name": "sync-statuses",
2163
- "description": "The CRM sync statuses to return: in-sync, out-of-sync, or not-linked",
2164
- "valueName": "value",
2165
- "repeatable": true
2166
- },
2167
- {
2168
- "name": "json",
2169
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2170
- }
2171
- ],
2172
- "arguments": [],
2173
- "subcommands": []
2174
- },
2175
- {
2176
- "name": "create",
2177
- "summary": "Create location",
2178
- "runs": true,
2179
- "flags": [
2180
- {
2181
- "name": "address-line1",
2182
- "description": "The first line of the street address",
2183
- "valueName": "value"
2184
- },
2185
- {
2186
- "name": "address-line2",
2187
- "description": "The second line of the street address, such as a suite",
2188
- "valueName": "value"
2189
- },
2190
- {
2191
- "name": "address-city",
2192
- "description": "The city",
2193
- "valueName": "value"
2194
- },
2195
- {
2196
- "name": "address-country",
2197
- "description": "The country",
2198
- "valueName": "value"
2199
- },
2200
- {
2201
- "name": "address-formatted-address",
2202
- "description": "The whole address on one line",
2203
- "valueName": "value"
2204
- },
2205
- {
2206
- "name": "address-postal-code",
2207
- "description": "The postal or ZIP code",
2208
- "valueName": "value"
2209
- },
2210
- {
2211
- "name": "address-state",
2212
- "description": "The state or region",
2213
- "valueName": "value"
2214
- },
2215
- {
2216
- "name": "consignee",
2217
- "description": "The ID of the customer a zone is designated for, such as for reservations, provisioning or a 3PL",
2218
- "valueName": "uuid"
2219
- },
2220
- {
2221
- "name": "customer-id",
2222
- "description": "The ID of the customer to assign a site to, or null for your organization's own site",
2223
- "valueName": "uuid"
2224
- },
2225
- {
2226
- "name": "description",
2227
- "description": "A free-form description of a zone",
2228
- "valueName": "value"
2229
- },
2230
- {
2231
- "name": "is-inventory",
2232
- "description": "Whether assets at the location count as inventory for reporting",
2233
- "negatable": true
2234
- },
2235
- {
2236
- "name": "is-inventory-override",
2237
- "description": "Whether a zone sets its own isInventory rather than inheriting its parent site's, which a site refuses",
2238
- "negatable": true
2239
- },
2240
- {
2241
- "name": "is-transient",
2242
- "description": "Whether assets make only occasional or temporary stops at the location, which hides it from location lists by default",
2243
- "negatable": true
2244
- },
2245
- {
2246
- "name": "name",
2247
- "description": "The location's display name",
2248
- "valueName": "value"
2249
- },
2250
- {
2251
- "name": "parent-location-id",
2252
- "description": "The ID of the site a zone belongs to, required for a zone and refused for a site",
2253
- "valueName": "uuid"
2254
- },
2255
- {
2256
- "name": "type",
2257
- "description": "SITE for a site, or ZONE for a zone within a site",
2258
- "valueName": "value",
2259
- "values": [
2260
- "SITE",
2261
- "UNKNOWN",
2262
- "ZONE"
2263
- ]
2264
- },
2265
- {
2266
- "name": "unset",
2267
- "description": "A field to clear, named as its flag is, repeatable",
2268
- "valueName": "field",
2269
- "repeatable": true
2270
- },
2271
- {
2272
- "name": "input",
2273
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
2274
- "valueName": "path"
2275
- },
2276
- {
2277
- "name": "json",
2278
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2279
- }
2280
- ],
2281
- "arguments": [],
2282
- "subcommands": []
2283
- },
2284
- {
2285
- "name": "get",
2286
- "summary": "Get location",
2287
- "runs": true,
2288
- "flags": [
2289
- {
2290
- "name": "json",
2291
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2292
- }
2293
- ],
2294
- "arguments": [
2295
- {}
2296
- ],
2297
- "subcommands": []
2298
- },
2299
- {
2300
- "name": "update",
2301
- "summary": "Patch location",
2302
- "runs": true,
2303
- "flags": [
2304
- {
2305
- "name": "address-line1",
2306
- "description": "The first line of the street address",
2307
- "valueName": "value"
2308
- },
2309
- {
2310
- "name": "address-line2",
2311
- "description": "The second line of the street address, such as a suite",
2312
- "valueName": "value"
2313
- },
2314
- {
2315
- "name": "address-city",
2316
- "description": "The city",
2317
- "valueName": "value"
2318
- },
2319
- {
2320
- "name": "address-country",
2321
- "description": "The country",
2322
- "valueName": "value"
2323
- },
2324
- {
2325
- "name": "address-formatted-address",
2326
- "description": "The whole address on one line",
2327
- "valueName": "value"
2328
- },
2329
- {
2330
- "name": "address-postal-code",
2331
- "description": "The postal or ZIP code",
2332
- "valueName": "value"
2333
- },
2334
- {
2335
- "name": "address-state",
2336
- "description": "The state or region",
2337
- "valueName": "value"
2338
- },
2339
- {
2340
- "name": "consignee",
2341
- "description": "The ID of the customer a zone is designated for, such as for reservations, provisioning or a 3PL",
2342
- "valueName": "uuid"
2343
- },
2344
- {
2345
- "name": "customer-id",
2346
- "description": "The ID of the customer to assign a site to, or null for your organization's own site",
2347
- "valueName": "uuid"
2348
- },
2349
- {
2350
- "name": "description",
2351
- "description": "A free-form description of a zone",
2352
- "valueName": "value"
2353
- },
2354
- {
2355
- "name": "is-archived",
2356
- "description": "Whether the location is archived, and archiving a site archives its zones",
2357
- "negatable": true
2358
- },
2359
- {
2360
- "name": "is-inventory",
2361
- "description": "Whether assets at the location count as inventory for reporting",
2362
- "negatable": true
2363
- },
2364
- {
2365
- "name": "is-inventory-override",
2366
- "description": "Whether a zone sets its own isInventory rather than inheriting its parent site's, which a site refuses",
2367
- "negatable": true
2368
- },
2369
- {
2370
- "name": "is-transient",
2371
- "description": "Whether assets make only occasional or temporary stops at the location, which hides it from location lists by default",
2372
- "negatable": true
2373
- },
2374
- {
2375
- "name": "name",
2376
- "description": "The location's display name",
2377
- "valueName": "value"
2378
- },
2379
- {
2380
- "name": "type",
2381
- "description": "SITE for a site, or ZONE for a zone within a site",
2382
- "valueName": "value",
2383
- "values": [
2384
- "SITE",
2385
- "UNKNOWN",
2386
- "ZONE"
2387
- ]
2388
- },
2389
- {
2390
- "name": "unset",
2391
- "description": "A field to clear, named as its flag is, repeatable",
2392
- "valueName": "field",
2393
- "repeatable": true
2394
- },
2395
- {
2396
- "name": "input",
2397
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
2398
- "valueName": "path"
2399
- },
2400
- {
2401
- "name": "json",
2402
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2403
- }
2404
- ],
2405
- "arguments": [
2406
- {}
2407
- ],
2408
- "subcommands": []
2409
- },
2410
- {
2411
- "name": "zones",
2412
- "summary": "Zones commands",
2413
- "runs": false,
2414
- "flags": [],
2415
- "arguments": [],
2416
- "subcommands": [
2417
- {
2418
- "name": "list",
2419
- "summary": "Get zones",
2420
- "runs": true,
2421
- "flags": [
2422
- {
2423
- "name": "archived",
2424
- "description": "Whether to return unarchived zones, archived zones, or all of them",
2425
- "valueName": "value",
2426
- "values": [
2427
- "all",
2428
- "false",
2429
- "true"
2430
- ]
2431
- },
2432
- {
2433
- "name": "json",
2434
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2435
- }
2436
- ],
2437
- "arguments": [
2438
- {}
2439
- ],
2440
- "subcommands": []
2441
- }
2442
- ]
2443
- }
2444
- ]
2445
- },
2446
- {
2447
- "name": "token",
2448
- "summary": "Token commands",
2449
- "runs": false,
2450
- "flags": [],
2451
- "arguments": [],
2452
- "subcommands": [
2453
- {
2454
- "name": "get",
2455
- "summary": "Report the credential this CLI is calling with",
2456
- "runs": true,
2457
- "flags": [
2458
- {
2459
- "name": "json",
2460
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2461
- }
2462
- ],
2463
- "arguments": [],
2464
- "subcommands": []
2465
- }
2466
- ]
2467
- },
2468
- {
2469
- "name": "url-link",
2470
- "summary": "URL link commands",
2471
- "runs": false,
2472
- "flags": [],
2473
- "arguments": [],
2474
- "subcommands": [
2475
- {
2476
- "name": "get",
2477
- "summary": "Get URL link by key",
2478
- "runs": true,
2479
- "flags": [
2480
- {
2481
- "name": "json",
2482
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2483
- }
2484
- ],
2485
- "arguments": [
2486
- {}
2487
- ],
2488
- "subcommands": []
2489
- },
2490
- {
2491
- "name": "update",
2492
- "summary": "Update URL link",
2493
- "runs": true,
2494
- "flags": [
2495
- {
2496
- "name": "name",
2497
- "description": "The link's display name, or null to show the address instead",
2498
- "valueName": "value"
2499
- },
2500
- {
2501
- "name": "url",
2502
- "description": "The address the link points to, which cannot be empty or null",
2503
- "valueName": "value"
2504
- },
2505
- {
2506
- "name": "unset",
2507
- "description": "A field to clear, named as its flag is, repeatable",
2508
- "valueName": "field",
2509
- "repeatable": true
2510
- },
2511
- {
2512
- "name": "input",
2513
- "description": "A file holding the JSON request body, or - for standard input. A flag given as well replaces its field",
2514
- "valueName": "path"
2515
- },
2516
- {
2517
- "name": "json",
2518
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2519
- }
2520
- ],
2521
- "arguments": [
2522
- {}
2523
- ],
2524
- "subcommands": []
2525
- },
2526
- {
2527
- "name": "delete",
2528
- "summary": "Delete URL link",
2529
- "runs": true,
2530
- "flags": [
2531
- {
2532
- "name": "json",
2533
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2534
- }
2535
- ],
2536
- "arguments": [
2537
- {}
2538
- ],
2539
- "subcommands": []
2540
- }
2541
- ]
2542
- },
2543
- {
2544
- "name": "api",
2545
- "summary": "Call a Hardfin API endpoint and print what it answers",
2546
- "runs": true,
2547
- "flags": [
2548
- {
2549
- "name": "method",
2550
- "short": "X",
2551
- "description": "The HTTP method to use",
2552
- "valueName": "method",
2553
- "values": [
2554
- "GET",
2555
- "POST",
2556
- "PATCH",
2557
- "PUT",
2558
- "DELETE"
2559
- ]
2560
- },
2561
- {
2562
- "name": "field",
2563
- "short": "f",
2564
- "description": "A query parameter as key=value, repeatable",
2565
- "valueName": "key=value",
2566
- "repeatable": true
2567
- },
2568
- {
2569
- "name": "input",
2570
- "description": "A file holding the JSON request body, or - for stdin",
2571
- "valueName": "file"
2572
- },
2573
- {
2574
- "name": "file",
2575
- "description": "A file to upload as multipart, in place of a JSON body",
2576
- "valueName": "path"
2577
- },
2578
- {
2579
- "name": "file-part",
2580
- "description": "The name of the part the file is sent as, which is data when not given",
2581
- "valueName": "name"
2582
- },
2583
- {
2584
- "name": "form",
2585
- "short": "F",
2586
- "description": "A field sent beside the file as key=value, repeatable",
2587
- "valueName": "key=value",
2588
- "repeatable": true
2589
- },
2590
- {
2591
- "name": "header",
2592
- "short": "H",
2593
- "description": "A request header as Name: value, repeatable",
2594
- "valueName": "name: value",
2595
- "repeatable": true
2596
- },
2597
- {
2598
- "name": "output",
2599
- "description": "Where to write a file the endpoint answers with, or - for standard output",
2600
- "valueName": "path"
2601
- },
2602
- {
2603
- "name": "json",
2604
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2605
- }
2606
- ],
2607
- "arguments": [
2608
- {}
2609
- ],
2610
- "subcommands": []
2611
- },
2612
- {
2613
- "name": "types",
2614
- "summary": "Print TypeScript types for the Hardfin API",
2615
- "runs": true,
2616
- "flags": [
2617
- {
2618
- "name": "output",
2619
- "description": "Where to write the declarations, instead of standard output",
2620
- "valueName": "path"
2621
- },
2622
- {
2623
- "name": "json",
2624
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2625
- }
2626
- ],
2627
- "arguments": [],
2628
- "subcommands": []
2629
- },
2630
- {
2631
- "name": "config",
2632
- "summary": "Print what this invocation talks to, and where each value came from",
2633
- "runs": true,
2634
- "flags": [
2635
- {
2636
- "name": "json",
2637
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2638
- }
2639
- ],
2640
- "arguments": [],
2641
- "subcommands": []
2642
- },
2643
- {
2644
- "name": "agent-guide",
2645
- "summary": "Print instructions an agent can follow to use this CLI",
2646
- "runs": true,
2647
- "flags": [
2648
- {
2649
- "name": "json",
2650
- "description": "Print every command as JSON, with what each flag takes, instead of Markdown"
2651
- }
2652
- ],
2653
- "arguments": [
2654
- {
2655
- "variadic": true
2656
- }
2657
- ],
2658
- "subcommands": []
2659
- },
2660
- {
2661
- "name": "completion",
2662
- "summary": "Complete hardfin commands in your shell",
2663
- "runs": true,
2664
- "flags": [],
2665
- "arguments": [
2666
- {
2667
- "values": [
2668
- "bash",
2669
- "zsh",
2670
- "fish",
2671
- "powershell"
2672
- ]
2673
- }
2674
- ],
2675
- "subcommands": [
2676
- {
2677
- "name": "install",
2678
- "summary": "Set up completion in your shell",
2679
- "runs": true,
2680
- "flags": [
2681
- {
2682
- "name": "yes",
2683
- "short": "y",
2684
- "description": "Make the change without asking"
2685
- },
2686
- {
2687
- "name": "json",
2688
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2689
- }
2690
- ],
2691
- "arguments": [
2692
- {
2693
- "values": [
2694
- "bash",
2695
- "zsh",
2696
- "fish",
2697
- "powershell"
2698
- ]
2699
- }
2700
- ],
2701
- "subcommands": []
2702
- },
2703
- {
2704
- "name": "uninstall",
2705
- "summary": "Remove completion from your shell",
2706
- "runs": true,
2707
- "flags": [
2708
- {
2709
- "name": "yes",
2710
- "short": "y",
2711
- "description": "Make the change without asking"
2712
- },
2713
- {
2714
- "name": "json",
2715
- "description": "Print machine-readable output, which is the default when stdout is not a terminal"
2716
- }
2717
- ],
2718
- "arguments": [
2719
- {
2720
- "values": [
2721
- "bash",
2722
- "zsh",
2723
- "fish",
2724
- "powershell"
2725
- ]
2726
- }
2727
- ],
2728
- "subcommands": []
2729
- }
2730
- ]
2731
- },
2732
- {
2733
- "name": "mcp",
2734
- "summary": "Serve this CLI to an agent over the Model Context Protocol",
2735
- "runs": true,
2736
- "flags": [
2737
- {
2738
- "name": "read-only",
2739
- "description": "Offer the reading tool alone, so nothing can be changed through this server whatever the sign in allows"
2740
- },
2741
- {
2742
- "name": "json",
2743
- "description": "Accepted for consistency, and ignored, because the protocol decides the output"
2744
- }
2745
- ],
2746
- "arguments": [],
2747
- "subcommands": []
2748
- },
2749
- {
2750
- "name": "__complete",
2751
- "summary": "Answer what may follow the words typed so far",
2752
- "hidden": true,
2753
- "runs": true,
2754
- "flags": [
2755
- {
2756
- "name": "json",
2757
- "description": "Accepted for consistency, and ignored"
2758
- },
2759
- {
2760
- "name": "tree",
2761
- "description": "Print the tree completion answers from, which the build writes beside the CLI"
2762
- }
2763
- ],
2764
- "arguments": [
2765
- {
2766
- "variadic": true
2767
- }
2768
- ],
2769
- "subcommands": []
2770
- },
2771
- {
2772
- "name": "__crash",
2773
- "summary": "Fail on purpose, to check that defects are reported",
2774
- "hidden": true,
2775
- "runs": true,
2776
- "flags": [],
2777
- "arguments": [],
2778
- "subcommands": []
2779
- }
2780
- ]
2781
- }
1
+ {"globalFlags":[{"name":"api-url","description":"The API to call, whose host also holds the authorization server","valueName":"url"},{"name":"api-key","description":"An API key to call with. Prefer HARDFIN_API_KEY, because a command line is visible to other programs","valueName":"key"},{"name":"issuer-url","description":"The authorization server, when it does not sit at the API's host","valueName":"url"}],"commands":[{"name":"login","summary":"Sign in to Hardfin through a browser","runs":true,"flags":[{"name":"read-only","description":"Ask for read access alone, so nothing run with this sign in can change a record"},{"name":"scope","description":"The scopes to ask for, separated by spaces, which are hardfin:read hardfin:write offline_access when not given","valueName":"scopes"},{"name":"no-browser","description":"Print the URL instead of opening it"},{"name":"device","description":"Approve on another machine, by typing a code, with no listener on this one"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"logout","summary":"Sign out, and tell Hardfin to forget this machine","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"status","summary":"Report what this CLI is configured with, signed in as, and able to reach","runs":true,"flags":[{"name":"offline","description":"Skip every network call, and report only what is on this machine"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"init","summary":"Set up a project so coding agents can use Hardfin","runs":true,"flags":[{"name":"local","description":"Set up the MCP server this CLI runs on this machine, in place of the one Hardfin hosts"},{"name":"dry-run","description":"Say what would be written, and write nothing"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"asset","summary":"Asset commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get asset listing","runs":true,"flags":[{"name":"page","description":"The page to return, starting at 1","valueName":"number"},{"name":"limit","description":"The number of records per page, from 1 to 100","valueName":"number"},{"name":"sort-by","description":"The field to sort by","valueName":"value","values":["serial","project","item","location","owner","activity"]},{"name":"sort-order","description":"The sort direction","valueName":"value","values":["ASC","DESC"]},{"name":"archived","description":"Whether to return unarchived records, archived records, or all of them","valueName":"value","values":["all","false","true"]},{"name":"search-query","description":"Text to match against the serial, description, item, project, owner, and location, ignored when shorter than three characters","valueName":"value"},{"name":"for-asset-id","description":"The IDs of the assets to list","valueName":"uuid","repeatable":true},{"name":"for-asset-key","description":"The keys of the assets to list","valueName":"value","repeatable":true},{"name":"for-customer","description":"The IDs of the customers whose assets to list","valueName":"uuid","repeatable":true},{"name":"for-item","description":"The IDs of the items whose assets to list","valueName":"uuid","repeatable":true},{"name":"at-site","description":"The IDs of the locations whose assets to list","valueName":"uuid","repeatable":true},{"name":"at-customer-sites","description":"The IDs of the customers whose sites to list assets at","valueName":"uuid","repeatable":true},{"name":"with-functional-statuses","description":"The functional statuses to list, where SCRAPPED lists scrapped assets","valueName":"value","repeatable":true},{"name":"with-transit-statuses","description":"The transit statuses to list","valueName":"value","repeatable":true},{"name":"with-inventory-statuses","description":"In_inventory, not_in_inventory, or both, which filters only when one is sent","valueName":"value","repeatable":true},{"name":"with-location-company-type","description":"Customer, manufacturer, or both, for assets at customer sites or your own, which filters only when one is sent","valueName":"value","repeatable":true},{"name":"with-project-status","description":"The project assignments to list: upcoming, active, past, or none","valueName":"value","repeatable":true},{"name":"with-owner","description":"Manufacturer for assets your organization owns, customer for assets customers own, or both","valueName":"value","repeatable":true},{"name":"for-project","description":"The IDs of the projects whose assets to list","valueName":"uuid","repeatable":true},{"name":"scrapped","description":"Whether to list unscrapped assets, scrapped assets, or all of them","valueName":"value","values":["all","false","true"]},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"create","summary":"Create asset","runs":true,"flags":[{"name":"allocated-indirect","description":"One unit's share of overhead, a cost component","valueName":"value"},{"name":"bill-of-materials","description":"The parts cost of one unit, a cost component","valueName":"value"},{"name":"depreciation-model","description":"The method one unit is depreciated by, or null to clear it","valueName":"value","values":["DOUBLE_DECLINING","STRAIGHT_LINE","SUM_YEAR","UNIT_OF_PRODUCTION"]},{"name":"description","description":"A free-form description of the asset","valueName":"value"},{"name":"direct-labor","description":"The labor cost to build one unit, a cost component","valueName":"value"},{"name":"freight-inbound","description":"The shipping cost to receive one unit, a cost component","valueName":"value"},{"name":"freight-outbound","description":"The shipping cost to deploy one unit, a deployment cost component","valueName":"value"},{"name":"functional-status","description":"The asset's starting functional status, FUNCTIONAL when absent, which cannot be SCRAPPED","valueName":"value","values":["FUNCTIONAL","NEEDS_REVIEW","NON-FUNCTIONAL","SCRAPPED"]},{"name":"in-inventory-date","description":"The day the asset entered inventory, which cannot be in the future","valueName":"value"},{"name":"in-service-date","description":"The day the asset was put into service, which Hardfin sets itself when absent","valueName":"value"},{"name":"installation","description":"The cost to install one unit, a deployment cost component","valueName":"value"},{"name":"interest","description":"The financing cost of one unit, a cost component","valueName":"value"},{"name":"item-id","description":"The ID of the catalog item the asset is a unit of","valueName":"uuid"},{"name":"location-id","description":"The ID of the location the asset enters inventory at","valueName":"uuid"},{"name":"salvage-value","description":"The value one unit keeps at the end of its useful life, or null to clear it","valueName":"value"},{"name":"serial","description":"The asset's serial number, unique within its item","valueName":"value"},{"name":"simple-cost-basis","description":"A single cost for one unit, which cannot be sent together with the cost components","valueName":"value"},{"name":"tariffs","description":"The import duty paid on one unit, a cost component","valueName":"value"},{"name":"tax","description":"The tax paid on one unit, a cost component","valueName":"value"},{"name":"useful-life","description":"The number of months one unit is depreciated over, or null to clear it","valueName":"number"},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"move","summary":"Move commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"execute","summary":"Execute commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"create","summary":"Execute asset move","runs":true,"flags":[{"name":"move","description":"The moves to carry out","valueName":"assetId=,deliverAt=,deliverAtTimezone=,destinationId=,originId=,shipAt=,shipAtTimezone=","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]}]},{"name":"plan","summary":"Plan commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"create","summary":"Plan asset move","runs":true,"flags":[{"name":"move","description":"The moves to plan","valueName":"assetId=,deliverAt=,id=,shipAt=","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]}]}]},{"name":"get","summary":"Get asset","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"update","summary":"Patch asset","runs":true,"flags":[{"name":"description","description":"The asset's new description, or null to clear it","valueName":"value"},{"name":"functional-status","description":"The asset's new functional status, which cannot be SCRAPPED because scrapping has its own endpoint","valueName":"value","values":["FUNCTIONAL","NEEDS_REVIEW","NON-FUNCTIONAL","SCRAPPED"]},{"name":"in-inventory-date","description":"The day the asset entered inventory, which cannot be in the future","valueName":"value"},{"name":"initial-location-id","description":"The ID of the location the asset entered inventory at","valueName":"uuid"},{"name":"metadata","description":"New values for the asset's custom fields, each naming its field","valueName":"fieldId=,value=","repeatable":true},{"name":"serial","description":"The asset's new serial number, which cannot be empty","valueName":"value"},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"accounting","summary":"Accounting commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"update","summary":"Update asset accounting","runs":true,"flags":[{"name":"allocated-indirect","description":"One unit's share of overhead, a cost component","valueName":"value"},{"name":"bill-of-materials","description":"The parts cost of one unit, a cost component","valueName":"value"},{"name":"depreciation-model","description":"The method one unit is depreciated by, or null to clear it","valueName":"value","values":["DOUBLE_DECLINING","STRAIGHT_LINE","SUM_YEAR","UNIT_OF_PRODUCTION"]},{"name":"direct-labor","description":"The labor cost to build one unit, a cost component","valueName":"value"},{"name":"freight-inbound","description":"The shipping cost to receive one unit, a cost component","valueName":"value"},{"name":"freight-outbound","description":"The shipping cost to deploy one unit, a deployment cost component","valueName":"value"},{"name":"in-service-date","description":"The day the asset was put into service and began depreciating, or null to clear it","valueName":"value"},{"name":"installation","description":"The cost to install one unit, a deployment cost component","valueName":"value"},{"name":"interest","description":"The financing cost of one unit, a cost component","valueName":"value"},{"name":"is-in-service-date-managed-automatically","description":"Whether Hardfin sets the in-service date itself, which sending an in-service date turns off","negatable":true},{"name":"salvage-value","description":"The value one unit keeps at the end of its useful life, or null to clear it","valueName":"value"},{"name":"simple-cost-basis","description":"A single cost for one unit, which cannot be sent together with the cost components","valueName":"value"},{"name":"tariffs","description":"The import duty paid on one unit, a cost component","valueName":"value"},{"name":"tax","description":"The tax paid on one unit, a cost component","valueName":"value"},{"name":"useful-life","description":"The number of months one unit is depreciated over, or null to clear it","valueName":"number"},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"in-service-management","summary":"In service management commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"update","summary":"Toggle in service date management","runs":true,"flags":[{"name":"automatic","description":"Whether Hardfin sets the asset's in-service date itself","negatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]}]}]},{"name":"cost-adjustment","summary":"Cost adjustment commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"create","summary":"Create asset cost adjustment","runs":true,"flags":[{"name":"adjustment-type","description":"Whether the adjustment adds to the asset's cost basis or writes it down","valueName":"value","values":["CAPITALIZATION","IMPAIRMENT"]},{"name":"amount","description":"How much the adjustment changes the cost basis by, which must be greater than zero","valueName":"value"},{"name":"effective-date","description":"The day the adjustment takes effect, which cannot be in the future","valueName":"value"},{"name":"notes","description":"Free-form detail about the adjustment, which a reason of OTHER requires","valueName":"value"},{"name":"reason","description":"Why the adjustment was made, which must be one its adjustment type allows","valueName":"value","values":["ADDITION","BETTERMENT","DAMAGE","INSTALLATION","LIFE_EXTENSION","MARKET_DECLINE","OBSOLESCENCE","OTHER","REGULATORY"]},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]}]},{"name":"event","summary":"Event commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get asset event list","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]}]},{"name":"event-group","summary":"Event group commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get asset event group listing","runs":true,"flags":[{"name":"start","description":"The earliest an event group may have happened, or null to read from the first","valueName":"value"},{"name":"end","description":"The latest an event group may have happened, or null to read through the last","valueName":"value"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"get","summary":"Get asset event group","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{},{}],"subcommands":[]}]},{"name":"file","summary":"File commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get asset files","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"delete","summary":"Delete asset file","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{},{}],"subcommands":[]}]},{"name":"functional-status","summary":"Functional status commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get asset functional status history","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]}]},{"name":"ownership","summary":"Ownership commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get asset ownership history","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"create","summary":"Create asset ownership","runs":true,"flags":[{"name":"customer-id","description":"The ID of the customer that takes ownership of the asset","valueName":"uuid"},{"name":"date","description":"The day the customer takes ownership, which cannot be in the future","valueName":"value"},{"name":"sale-price","description":"What the customer paid for the asset, which cannot be negative","valueName":"value"},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"clear","summary":"Clear the ownership an asset holds today","runs":true,"flags":[{"name":"date","description":"The day your organization takes the asset back, which cannot be in the future","valueName":"value"},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"get","summary":"Get asset ownership segment","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{},{}],"subcommands":[]},{"name":"update","summary":"Patch asset ownership segment","runs":true,"flags":[{"name":"customer-id","description":"The ID of the customer that owned the asset during the segment","valueName":"uuid"},{"name":"date","description":"The day the segment's owner took ownership, which cannot be in the future","valueName":"value"},{"name":"sale-price","description":"What the owner paid for the asset, which cannot be negative","valueName":"value"},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{},{}],"subcommands":[]},{"name":"delete","summary":"Delete asset ownership segment","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{},{}],"subcommands":[]}]},{"name":"scrap","summary":"Scrap commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"create","summary":"Scrap asset","runs":true,"flags":[{"name":"disposal-date","description":"The day the asset was scrapped","valueName":"value"},{"name":"disposal-price","description":"What the scrapped asset was sold for, or null when it was not sold","valueName":"value"},{"name":"disposal-reason","description":"Why the asset was scrapped","valueName":"value"},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]}]},{"name":"unscrap","summary":"Unscrap commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"create","summary":"Unscrap asset","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]}]},{"name":"url-link","summary":"URL link commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get asset URL links","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"create","summary":"Create asset URL link","runs":true,"flags":[{"name":"name","description":"The link's display name, or null to show the address instead","valueName":"value"},{"name":"url","description":"The address the link points to","valueName":"value"},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]}]},{"name":"useful-life-revision","summary":"Useful life revision commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"create","summary":"Create asset useful life revision","runs":true,"flags":[{"name":"effective-date","description":"The day the revised useful life takes effect, which cannot be in the future","valueName":"value"},{"name":"notes","description":"Free-form detail about the revision, which a reason of OTHER requires","valueName":"value"},{"name":"reason","description":"Why the useful life was revised","valueName":"value","values":["CHANGE_IN_USE","DAMAGE","OBSOLESCENCE","OTHER","REASSESSMENT","REFURBISHMENT","REGULATORY"]},{"name":"useful-life-months","description":"The asset's revised useful life in months","valueName":"number"},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]}]}]},{"name":"customer","summary":"Customer commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get customers","runs":true,"flags":[{"name":"page","description":"The page to return, starting at 1","valueName":"number"},{"name":"limit","description":"The number of records per page, from 1 to 100","valueName":"number"},{"name":"sort-by","description":"The field to sort by","valueName":"value"},{"name":"sort-order","description":"The sort direction","valueName":"value","values":["ASC","DESC"]},{"name":"archived","description":"Whether to return unarchived records, archived records, or all of them","valueName":"value","values":["all","false","true"]},{"name":"is-customer","description":"True to return only customers, or false to return only non-customers"},{"name":"is-supplier","description":"True to return only suppliers, or false to return only non-suppliers"},{"name":"sync-statuses","description":"The CRM sync statuses to return: in-sync, out-of-sync, or not-linked","valueName":"value","repeatable":true},{"name":"search","description":"Text to match against customer names","valueName":"value"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"create","summary":"Create customer","runs":true,"flags":[{"name":"billing-address","description":"The address invoices are sent to","valueName":"value"},{"name":"billing-contact-email","description":"The billing contact's email address","valueName":"value"},{"name":"billing-contact-name","description":"The billing contact's name","valueName":"value"},{"name":"billing-contact-phone","description":"The billing contact's phone number","valueName":"value"},{"name":"comment","description":"A free-form note about the customer","valueName":"value"},{"name":"domain","description":"The customer's web domain, used to look up its logo","valueName":"value"},{"name":"external-id","description":"The customer's identifier in another system","valueName":"value"},{"name":"is-customer","description":"Whether the company is a customer","negatable":true},{"name":"is-supplier","description":"Whether the company is a supplier","negatable":true},{"name":"name","description":"The customer's display name","valueName":"value"},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"get","summary":"Get customer","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"update","summary":"Patch customer","runs":true,"flags":[{"name":"billing-address","description":"The address invoices are sent to","valueName":"value"},{"name":"billing-contact-email","description":"The billing contact's email address","valueName":"value"},{"name":"billing-contact-name","description":"The billing contact's name","valueName":"value"},{"name":"billing-contact-phone","description":"The billing contact's phone number","valueName":"value"},{"name":"comment","description":"A free-form note about the customer","valueName":"value"},{"name":"domain","description":"The customer's web domain, used to look up its logo","valueName":"value"},{"name":"external-id","description":"The customer's identifier in another system","valueName":"value"},{"name":"is-archived","description":"Whether the customer is archived","negatable":true},{"name":"is-customer","description":"Whether the company is a customer","negatable":true},{"name":"is-supplier","description":"Whether the company is a supplier","negatable":true},{"name":"name","description":"The customer's display name","valueName":"value"},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]}]},{"name":"file","summary":"File commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"create","summary":"Upload file","runs":true,"flags":[{"name":"file-type","description":"The kind of file uploaded, which is ASSET_FILE, the only kind the API uploads","valueName":"value"},{"name":"for-entity","description":"The ID of the asset the file is attached to","valueName":"uuid"},{"name":"is-public","description":"Whether any organization's API key may download the file, which is false unless sent as true"},{"name":"file","description":"The file to upload","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"get","summary":"Get file","runs":true,"flags":[{"name":"attachment","description":"True when the file downloads as an attachment rather than opening inline"},{"name":"output","description":"Where to write the file, or - for standard output","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]}]},{"name":"item","summary":"Item commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get items","runs":true,"flags":[{"name":"type","description":"The item type to list, SERVICE, DEVICE, or BULK, or absent for every type","valueName":"value","values":["BULK","DEVICE","SERVICE"]},{"name":"search","description":"Text to match against item names, SKUs, and descriptions, in any case","valueName":"value"},{"name":"page","description":"The page to return, starting at 1","valueName":"number"},{"name":"limit","description":"The number of records per page, from 1 to 100","valueName":"number"},{"name":"sort-by","description":"The field to sort by","valueName":"value","values":["name","sku","type","lastUpdatedAt"]},{"name":"sort-order","description":"The sort direction","valueName":"value","values":["ASC","DESC"]},{"name":"archived","description":"Whether to return unarchived records, archived records, or all of them","valueName":"value","values":["all","false","true"]},{"name":"exclude-linked-integration","description":"An integration whose already-linked items to leave out","valueName":"value"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"create","summary":"Create item","runs":true,"flags":[{"name":"accepts-bulk-serials","description":"Whether a BULK item records serial numbers on its units, which SERVICE and DEVICE items ignore","negatable":true},{"name":"description","description":"A free-form description of the item","valueName":"value"},{"name":"name","description":"The item's display name","valueName":"value"},{"name":"sku","description":"The item's stock keeping unit, unique within your organization","valueName":"value"},{"name":"type","description":"SERVICE for a non-physical item, DEVICE for a physical item tracked by serial number, or BULK for a part tracked by quantity","valueName":"value","values":["BULK","DEVICE","SERVICE"]},{"name":"unit-of-measure","description":"The unit a BULK item's quantities are counted in, which SERVICE and DEVICE items ignore","valueName":"value","values":["BG","BO","BX","C62","CMK","CMT","CR","CS","CT","DMQ","DR","DZN","EA","EN","FOT","FTK","FTQ","GLL","GRM","GRO","H87","INH","INK","INQ","KG","KGM","KMT","KT","LBR","LO","LTR","MGM","MLT","MMK","MMT","MTK","MTQ","MTR","ONZ","OZA","PK","PR","PTI","PX","QTI","RL","RO","SET","SMI","ST","STN","SV","TNE","TU","YDK","YDQ","YRD"]},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"get","summary":"Get item","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"update","summary":"Update item","runs":true,"flags":[{"name":"accepts-bulk-serials","description":"Whether a BULK item records serial numbers on its units, read only beside type","negatable":true},{"name":"description","description":"The item's new description, or null to clear it","valueName":"value"},{"name":"field","description":"New positions for a DEVICE item's fields","valueName":"fieldId=,order=,section=","repeatable":true},{"name":"is-archived","description":"Whether the item is archived, which cannot be null","negatable":true},{"name":"name","description":"The item's new display name, which cannot be empty","valueName":"value"},{"name":"sku","description":"The item's new stock keeping unit, which cannot be empty and must be unique within your organization","valueName":"value"},{"name":"type","description":"The type to convert the item to, when the item's assets and inventory history allow the conversion","valueName":"value","values":["BULK","DEVICE","SERVICE"]},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"accounting","summary":"Accounting commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"update","summary":"Update item accounting","runs":true,"flags":[{"name":"allocated-indirect","description":"One unit's share of overhead, a cost component","valueName":"value"},{"name":"bill-of-materials","description":"The parts cost of one unit, a cost component","valueName":"value"},{"name":"depreciation-model","description":"The method one unit is depreciated by, or null to clear it","valueName":"value","values":["DOUBLE_DECLINING","STRAIGHT_LINE","SUM_YEAR","UNIT_OF_PRODUCTION"]},{"name":"direct-labor","description":"The labor cost to build one unit, a cost component","valueName":"value"},{"name":"freight-inbound","description":"The shipping cost to receive one unit, a cost component","valueName":"value"},{"name":"freight-outbound","description":"The shipping cost to deploy one unit, a deployment cost component","valueName":"value"},{"name":"installation","description":"The cost to install one unit, a deployment cost component","valueName":"value"},{"name":"interest","description":"The financing cost of one unit, a cost component","valueName":"value"},{"name":"salvage-value","description":"The value one unit keeps at the end of its useful life, or null to clear it","valueName":"value"},{"name":"simple-cost-basis","description":"A single cost for one unit, which cannot be sent together with the cost components","valueName":"value"},{"name":"tariffs","description":"The import duty paid on one unit, a cost component","valueName":"value"},{"name":"tax","description":"The tax paid on one unit, a cost component","valueName":"value"},{"name":"useful-life","description":"The number of months one unit is depreciated over, or null to clear it","valueName":"number"},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]}]},{"name":"field","summary":"Field commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"create","summary":"Create item field","runs":true,"flags":[{"name":"field-type","description":"The kind of value the field holds","valueName":"value","values":["BOOLEAN","DATE","DATE_TIME","INTEGER","MULTILINE_TEXT","NUMBER","TEXT","TIME"]},{"name":"label","description":"The field's display name","valueName":"value"},{"name":"order","description":"The field's position within its section, starting at 0","valueName":"number"},{"name":"section","description":"The group the field is shown in, starting at 0","valueName":"number"},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"update","summary":"Update item field","runs":true,"flags":[{"name":"label","description":"The field's new display name, which cannot be empty","valueName":"value"},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{},{}],"subcommands":[]},{"name":"delete","summary":"Delete item field","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{},{}],"subcommands":[]}]}]},{"name":"location","summary":"Location commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get location listing","runs":true,"flags":[{"name":"page","description":"The page to return, starting at 1","valueName":"number"},{"name":"limit","description":"The number of records per page, from 1 to 100","valueName":"number"},{"name":"sort-by","description":"The field to sort by","valueName":"value","values":["name","company","assetCount"]},{"name":"sort-order","description":"The sort direction","valueName":"value","values":["ASC","DESC"]},{"name":"archived","description":"Whether to return unarchived records, archived records, or all of them","valueName":"value","values":["all","false","true"]},{"name":"is-transient","description":"Whether to return permanent locations (false), transient locations (true), or both (all)","valueName":"value","values":["all","false","true"]},{"name":"search","description":"Text to match against location and customer names","valueName":"value"},{"name":"for-customer-ids","description":"The IDs of the customers whose locations to return","valueName":"value","repeatable":true},{"name":"include-organization","description":"Whether the customer filter also matches your organization's own locations, which on its own returns only those"},{"name":"sync-statuses","description":"The CRM sync statuses to return: in-sync, out-of-sync, or not-linked","valueName":"value","repeatable":true},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"create","summary":"Create location","runs":true,"flags":[{"name":"address-line1","description":"The first line of the street address","valueName":"value"},{"name":"address-line2","description":"The second line of the street address, such as a suite","valueName":"value"},{"name":"address-city","description":"The city","valueName":"value"},{"name":"address-country","description":"The country","valueName":"value"},{"name":"address-formatted-address","description":"The whole address on one line","valueName":"value"},{"name":"address-postal-code","description":"The postal or ZIP code","valueName":"value"},{"name":"address-state","description":"The state or region","valueName":"value"},{"name":"consignee","description":"The ID of the customer a zone is designated for, such as for reservations, provisioning or a 3PL","valueName":"uuid"},{"name":"customer-id","description":"The ID of the customer to assign a site to, or null for your organization's own site","valueName":"uuid"},{"name":"description","description":"A free-form description of a zone","valueName":"value"},{"name":"is-inventory","description":"Whether assets at the location count as inventory for reporting","negatable":true},{"name":"is-inventory-override","description":"Whether a zone sets its own isInventory rather than inheriting its parent site's, which a site refuses","negatable":true},{"name":"is-transient","description":"Whether assets make only occasional or temporary stops at the location, which hides it from location lists by default","negatable":true},{"name":"name","description":"The location's display name","valueName":"value"},{"name":"parent-location-id","description":"The ID of the site a zone belongs to, required for a zone and refused for a site","valueName":"uuid"},{"name":"type","description":"SITE for a site, or ZONE for a zone within a site","valueName":"value","values":["SITE","UNKNOWN","ZONE"]},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"get","summary":"Get location","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"update","summary":"Patch location","runs":true,"flags":[{"name":"address-line1","description":"The first line of the street address","valueName":"value"},{"name":"address-line2","description":"The second line of the street address, such as a suite","valueName":"value"},{"name":"address-city","description":"The city","valueName":"value"},{"name":"address-country","description":"The country","valueName":"value"},{"name":"address-formatted-address","description":"The whole address on one line","valueName":"value"},{"name":"address-postal-code","description":"The postal or ZIP code","valueName":"value"},{"name":"address-state","description":"The state or region","valueName":"value"},{"name":"consignee","description":"The ID of the customer a zone is designated for, such as for reservations, provisioning or a 3PL","valueName":"uuid"},{"name":"customer-id","description":"The ID of the customer to assign a site to, or null for your organization's own site","valueName":"uuid"},{"name":"description","description":"A free-form description of a zone","valueName":"value"},{"name":"is-archived","description":"Whether the location is archived, and archiving a site archives its zones","negatable":true},{"name":"is-inventory","description":"Whether assets at the location count as inventory for reporting","negatable":true},{"name":"is-inventory-override","description":"Whether a zone sets its own isInventory rather than inheriting its parent site's, which a site refuses","negatable":true},{"name":"is-transient","description":"Whether assets make only occasional or temporary stops at the location, which hides it from location lists by default","negatable":true},{"name":"name","description":"The location's display name","valueName":"value"},{"name":"type","description":"SITE for a site, or ZONE for a zone within a site","valueName":"value","values":["SITE","UNKNOWN","ZONE"]},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"zones","summary":"Zones commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get zones","runs":true,"flags":[{"name":"archived","description":"Whether to return unarchived zones, archived zones, or all of them","valueName":"value","values":["all","false","true"]},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]}]}]},{"name":"token","summary":"Token commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"get","summary":"Report the credential this CLI is calling with","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]}]},{"name":"url-link","summary":"URL link commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"get","summary":"Get URL link by key","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"update","summary":"Update URL link","runs":true,"flags":[{"name":"name","description":"The link's display name, or null to show the address instead","valueName":"value"},{"name":"url","description":"The address the link points to, which cannot be empty or null","valueName":"value"},{"name":"unset","description":"A field to clear, named as its flag is, repeatable","valueName":"field","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for standard input. A flag given as well replaces its field","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"delete","summary":"Delete URL link","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]}]},{"name":"api","summary":"Call a Hardfin API endpoint and print what it answers","runs":true,"flags":[{"name":"method","short":"X","description":"The HTTP method to use","valueName":"method","values":["GET","POST","PATCH","PUT","DELETE"]},{"name":"field","short":"f","description":"A query parameter as key=value, repeatable","valueName":"key=value","repeatable":true},{"name":"input","description":"A file holding the JSON request body, or - for stdin","valueName":"file"},{"name":"file","description":"A file to upload as multipart, in place of a JSON body","valueName":"path"},{"name":"file-part","description":"The name of the part the file is sent as, which is data when not given","valueName":"name"},{"name":"form","short":"F","description":"A field sent beside the file as key=value, repeatable","valueName":"key=value","repeatable":true},{"name":"header","short":"H","description":"A request header as Name: value, repeatable","valueName":"name: value","repeatable":true},{"name":"output","description":"Where to write a file the endpoint answers with, or - for standard output","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"types","summary":"Print TypeScript types for the Hardfin API","runs":true,"flags":[{"name":"output","description":"Where to write the declarations, instead of standard output","valueName":"path"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"config","summary":"Print what this invocation talks to, and where each value came from","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"agent-guide","summary":"Print instructions an agent can follow to use this CLI","runs":true,"flags":[{"name":"json","description":"Print every command as JSON, with what each flag takes, instead of Markdown"}],"arguments":[{"variadic":true}],"subcommands":[]},{"name":"completion","summary":"Complete hardfin commands in your shell","runs":true,"flags":[],"arguments":[{"values":["bash","zsh","fish","powershell"]}],"subcommands":[{"name":"install","summary":"Set up completion in your shell","runs":true,"flags":[{"name":"yes","short":"y","description":"Make the change without asking"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{"values":["bash","zsh","fish","powershell"]}],"subcommands":[]},{"name":"uninstall","summary":"Remove completion from your shell","runs":true,"flags":[{"name":"yes","short":"y","description":"Make the change without asking"},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{"values":["bash","zsh","fish","powershell"]}],"subcommands":[]}]},{"name":"mcp","summary":"Serve this CLI to an agent over the Model Context Protocol","runs":true,"flags":[{"name":"read-only","description":"Offer the reading tool alone, so nothing can be changed through this server whatever the sign in allows"},{"name":"json","description":"Accepted for consistency, and ignored, because the protocol decides the output"}],"arguments":[],"subcommands":[]},{"name":"__complete","summary":"Answer what may follow the words typed so far","hidden":true,"runs":true,"flags":[{"name":"json","description":"Accepted for consistency, and ignored"},{"name":"tree","description":"Print the tree completion answers from, which the build writes beside the CLI"}],"arguments":[{"variadic":true}],"subcommands":[]},{"name":"__crash","summary":"Fail on purpose, to check that defects are reported","hidden":true,"runs":true,"flags":[],"arguments":[],"subcommands":[]}]}