@hardfin/cli 0.1.1-dev.71 → 0.1.1-dev.73

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 +1 @@
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":"update","summary":"Install the newest version of this CLI, or name the command that does","runs":true,"flags":[{"name":"check","description":"Only say whether a newer version is published, and change nothing"},{"name":"yes","short":"y","description":"Update without asking"},{"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":"skills-only","description":"Write only the hardfin-cli skill, and leave AGENTS.md and the MCP configs as they are"},{"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 only when scrapped is true or all, since scrapped defaults to false","valueName":"value","repeatable":true},{"name":"currency","description":"The ISO 4217 code of the cost currency whose assets to list","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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. Takes only null, which clears it","valueName":"null"},{"name":"allocated-indirect-value","description":"One unit's share of overhead, a cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --allocated-indirect-iso-code","valueName":"value"},{"name":"allocated-indirect-iso-code","description":"One unit's share of overhead, a cost component: the value's ISO 4217 currency code, given with --allocated-indirect-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"bill-of-materials","description":"The parts cost of one unit, a cost component. Takes only null, which clears it","valueName":"null"},{"name":"bill-of-materials-value","description":"The parts cost of one unit, a cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --bill-of-materials-iso-code","valueName":"value"},{"name":"bill-of-materials-iso-code","description":"The parts cost of one unit, a cost component: the value's ISO 4217 currency code, given with --bill-of-materials-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"cost-currency-code","description":"The ISO 4217 code the asset's costs are denominated in, which defaults to the item's accounting currency and then the organization's, and which every cost amount must match","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"depreciation-model","description":"The method one unit is depreciated by, taken from the item when omitted, or null to leave it empty","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. Takes only null, which clears it","valueName":"null"},{"name":"direct-labor-value","description":"The labor cost to build one unit, a cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --direct-labor-iso-code","valueName":"value"},{"name":"direct-labor-iso-code","description":"The labor cost to build one unit, a cost component: the value's ISO 4217 currency code, given with --direct-labor-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"freight-inbound","description":"The shipping cost to receive one unit, a cost component. Takes only null, which clears it","valueName":"null"},{"name":"freight-inbound-value","description":"The shipping cost to receive one unit, a cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --freight-inbound-iso-code","valueName":"value"},{"name":"freight-inbound-iso-code","description":"The shipping cost to receive one unit, a cost component: the value's ISO 4217 currency code, given with --freight-inbound-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"freight-outbound","description":"The shipping cost to deploy one unit, a deployment cost component. Takes only null, which clears it","valueName":"null"},{"name":"freight-outbound-value","description":"The shipping cost to deploy one unit, a deployment cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --freight-outbound-iso-code","valueName":"value"},{"name":"freight-outbound-iso-code","description":"The shipping cost to deploy one unit, a deployment cost component: the value's ISO 4217 currency code, given with --freight-outbound-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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, from 1970-01-01 through 2099-12-31, which Hardfin sets itself when absent","valueName":"value"},{"name":"installation","description":"The cost to install one unit, a deployment cost component. Takes only null, which clears it","valueName":"null"},{"name":"installation-value","description":"The cost to install one unit, a deployment cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --installation-iso-code","valueName":"value"},{"name":"installation-iso-code","description":"The cost to install one unit, a deployment cost component: the value's ISO 4217 currency code, given with --installation-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"interest","description":"The financing cost of one unit, a cost component. Takes only null, which clears it","valueName":"null"},{"name":"interest-value","description":"The financing cost of one unit, a cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --interest-iso-code","valueName":"value"},{"name":"interest-iso-code","description":"The financing cost of one unit, a cost component: the value's ISO 4217 currency code, given with --interest-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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, taken from the item when omitted and the item's accounting currency is the asset's. Takes only null, which clears it","valueName":"null"},{"name":"salvage-value-value","description":"The value one unit keeps at the end of its useful life, taken from the item when omitted and the item's accounting currency is the asset's: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --salvage-value-iso-code","valueName":"value"},{"name":"salvage-value-iso-code","description":"The value one unit keeps at the end of its useful life, taken from the item when omitted and the item's accounting currency is the asset's: the value's ISO 4217 currency code, given with --salvage-value-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"serial","description":"The asset's serial number, unique within your organization","valueName":"value"},{"name":"simple-cost-basis","description":"A single cost for one unit, which cannot be sent together with the cost components, and whose cluster is taken from the item when every cost field is omitted and the item's accounting currency is the asset's. Takes only null, which clears it","valueName":"null"},{"name":"simple-cost-basis-value","description":"A single cost for one unit, which cannot be sent together with the cost components, and whose cluster is taken from the item when every cost field is omitted and the item's accounting currency is the asset's: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --simple-cost-basis-iso-code","valueName":"value"},{"name":"simple-cost-basis-iso-code","description":"A single cost for one unit, which cannot be sent together with the cost components, and whose cluster is taken from the item when every cost field is omitted and the item's accounting currency is the asset's: the value's ISO 4217 currency code, given with --simple-cost-basis-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"tariffs","description":"The import duty paid on one unit, a cost component. Takes only null, which clears it","valueName":"null"},{"name":"tariffs-value","description":"The import duty paid on one unit, a cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --tariffs-iso-code","valueName":"value"},{"name":"tariffs-iso-code","description":"The import duty paid on one unit, a cost component: the value's ISO 4217 currency code, given with --tariffs-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"tax","description":"The tax paid on one unit, a cost component. Takes only null, which clears it","valueName":"null"},{"name":"tax-value","description":"The tax paid on one unit, a cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --tax-iso-code","valueName":"value"},{"name":"tax-iso-code","description":"The tax paid on one unit, a cost component: the value's ISO 4217 currency code, given with --tax-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"useful-life","description":"The number of months one unit is depreciated over, from 1 to 480, taken from the item when omitted, or null to leave it empty","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, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"allocated-indirect-value","description":"One unit's share of overhead, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --allocated-indirect-iso-code","valueName":"value"},{"name":"allocated-indirect-iso-code","description":"One unit's share of overhead, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --allocated-indirect-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"bill-of-materials","description":"The parts cost of one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"bill-of-materials-value","description":"The parts cost of one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --bill-of-materials-iso-code","valueName":"value"},{"name":"bill-of-materials-iso-code","description":"The parts cost of one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --bill-of-materials-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"cost-currency-code","description":"The ISO 4217 code every cost amount is denominated in, which must match the amounts sent and cannot be null. It is the only way to change the currency. A change keeps the held amounts and relabels them without conversion, and on an asset whose currency is locked it is refused","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"direct-labor-value","description":"The labor cost to build one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --direct-labor-iso-code","valueName":"value"},{"name":"direct-labor-iso-code","description":"The labor cost to build one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --direct-labor-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"freight-inbound","description":"The shipping cost to receive one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"freight-inbound-value","description":"The shipping cost to receive one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --freight-inbound-iso-code","valueName":"value"},{"name":"freight-inbound-iso-code","description":"The shipping cost to receive one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --freight-inbound-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"freight-outbound","description":"The shipping cost to deploy one unit, a deployment cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"freight-outbound-value","description":"The shipping cost to deploy one unit, a deployment cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --freight-outbound-iso-code","valueName":"value"},{"name":"freight-outbound-iso-code","description":"The shipping cost to deploy one unit, a deployment cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --freight-outbound-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"in-service-date","description":"The day the asset was put into service and began depreciating, from 1970-01-01 through 2099-12-31, or null to clear it","valueName":"value"},{"name":"installation","description":"The cost to install one unit, a deployment cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"installation-value","description":"The cost to install one unit, a deployment cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --installation-iso-code","valueName":"value"},{"name":"installation-iso-code","description":"The cost to install one unit, a deployment cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --installation-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"interest","description":"The financing cost of one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"interest-value","description":"The financing cost of one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --interest-iso-code","valueName":"value"},{"name":"interest-iso-code","description":"The financing cost of one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --interest-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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. Takes only null, which clears it","valueName":"null"},{"name":"salvage-value-value","description":"The value one unit keeps at the end of its useful life: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --salvage-value-iso-code","valueName":"value"},{"name":"salvage-value-iso-code","description":"The value one unit keeps at the end of its useful life: the value's ISO 4217 currency code, given with --salvage-value-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"simple-cost-basis","description":"A single cost for one unit, which clears the cost components and cannot be sent together with them. Takes only null, which clears it","valueName":"null"},{"name":"simple-cost-basis-value","description":"A single cost for one unit, which clears the cost components and cannot be sent together with them: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --simple-cost-basis-iso-code","valueName":"value"},{"name":"simple-cost-basis-iso-code","description":"A single cost for one unit, which clears the cost components and cannot be sent together with them: the value's ISO 4217 currency code, given with --simple-cost-basis-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"tariffs","description":"The import duty paid on one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"tariffs-value","description":"The import duty paid on one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --tariffs-iso-code","valueName":"value"},{"name":"tariffs-iso-code","description":"The import duty paid on one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --tariffs-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"tax","description":"The tax paid on one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"tax-value","description":"The tax paid on one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --tax-iso-code","valueName":"value"},{"name":"tax-iso-code","description":"The tax paid on one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --tax-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"useful-life","description":"The number of months one unit is depreciated over, from 1 to 480, 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-value","description":"How much the adjustment changes the cost basis by, in the asset's cost currency, which must be greater than zero: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --amount-iso-code","valueName":"value"},{"name":"amount-iso-code","description":"How much the adjustment changes the cost basis by, in the asset's cost currency, which must be greater than zero: the value's ISO 4217 currency code, given with --amount-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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. Takes only null, which clears it","valueName":"null"},{"name":"sale-price-value","description":"What the customer paid for the asset: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --sale-price-iso-code","valueName":"value"},{"name":"sale-price-iso-code","description":"What the customer paid for the asset: the value's ISO 4217 currency code, given with --sale-price-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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. Takes only null, which clears it","valueName":"null"},{"name":"sale-price-value","description":"What the owner paid for the asset: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --sale-price-iso-code","valueName":"value"},{"name":"sale-price-iso-code","description":"What the owner paid for the asset: the value's ISO 4217 currency code, given with --sale-price-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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, left out when it was not sold, and refused even as null for an asset a customer owns. Takes only null, which clears it","valueName":"null"},{"name":"disposal-price-value","description":"What the scrapped asset was sold for, left out when it was not sold, and refused even as null for an asset a customer owns: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --disposal-price-iso-code","valueName":"value"},{"name":"disposal-price-iso-code","description":"What the scrapped asset was sold for, left out when it was not sold, and refused even as null for an asset a customer owns: the value's ISO 4217 currency code, given with --disposal-price-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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":"charge","summary":"Charge commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get charges","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":["project","customer","label","totalPrice","servicePeriodStart","expectedBillableDate","status","item"]},{"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","description":"Text to find in the charge's label, its project's name, its customer's name, or its item's SKU or name, and a number also finds a charge with exactly that total price","valueName":"value"},{"name":"status","description":"The one status to list: PLANNED, BILLABLE, INVOICED or CANCELLED","valueName":"value","values":["BILLABLE","CANCELLED","INVOICED","PLANNED"]},{"name":"customers","description":"The customers whose charges to list, each named by its ID or its key","valueName":"value","repeatable":true},{"name":"for-projects-without-customer","description":"True to list the charges of projects that have no customer. With customers it adds them to those customers' charges, and without customers it lists only them"},{"name":"projects","description":"The projects whose charges to list, each named by its ID or its key","valueName":"value","repeatable":true},{"name":"bill-date-start","description":"A day, and only charges whose expectedBillableDate is on or after it are listed","valueName":"value"},{"name":"bill-date-end","description":"A day, and only charges whose expectedBillableDate is on or before it are listed","valueName":"value"},{"name":"amount-min","description":"An amount, and only charges whose total price is at least it are listed","valueName":"value"},{"name":"amount-max","description":"An amount, and only charges whose total price is at most it are listed","valueName":"value"},{"name":"trigger-types","description":"The trigger types to list: TIME, MANUAL or EVENT","valueName":"value","repeatable":true},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"cancel","summary":"Cancel charge","runs":true,"flags":[{"name":"cancellation-reason","description":"Why the charge is cancelled, kept exactly as sent and 4,096 characters or less, or null for no reason. Cancelling a cancelled charge again replaces its reason with a different one sent, and null keeps the reason it has","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":"mark-billable","summary":"Mark charge billable","runs":true,"flags":[{"name":"billing-eligible-date","description":"The day the charge became billable, which is required and does not change its expectedBillableDate","valueName":"value"},{"name":"quantity","description":"The number of units to bill now, from 1 to the charge's quantity, and a smaller number splits the charge in two","valueName":"number"},{"name":"service-period-end","description":"The last day of the period a milestone charge covers, on or after servicePeriodStart. It replaces and is ignored the same way as servicePeriodStart","valueName":"value"},{"name":"service-period-start","description":"The first day of the period a milestone charge covers. On a milestone charge it replaces the charge's start, and omitting it leaves the charge with no start. A periodic charge ignores it","valueName":"value"},{"name":"total-price-override","description":"The amount to bill now, which is required when a FIXED charge is split, must be in the charge's currency, is from 0 to the charge's total price, and is refused when the charge is not split or is priced PER_UNIT. Takes only null, which clears it","valueName":"null"},{"name":"total-price-override-value","description":"The amount to bill now, which is required when a FIXED charge is split, must be in the charge's currency, is from 0 to the charge's total price, and is refused when the charge is not split or is priced PER_UNIT: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --total-price-override-iso-code","valueName":"value"},{"name":"total-price-override-iso-code","description":"The amount to bill now, which is required when a FIXED charge is split, must be in the charge's currency, is from 0 to the charge's total price, and is refused when the charge is not split or is priced PER_UNIT: the value's ISO 4217 currency code, given with --total-price-override-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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":"mark-not-billable","summary":"Mark charge not billable","runs":true,"flags":[{"name":"expected-billable-date","description":"The new day a periodic charge is planned to become billable, or omitted to keep the day it has. A milestone charge, and a charge that is already planned, keep their day","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":"revert-cancellation","summary":"Revert charge cancellation","runs":true,"flags":[{"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","values":["name","locationCount","assetCount","assetsAtLocation"]},{"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 integration 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, ignored when shorter than three characters","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","description":"The person who receives the customer's invoices. Takes only null, which clears it","valueName":"null"},{"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","description":"The person who receives the customer's invoices. Takes only null, which clears it","valueName":"null"},{"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, ASSET_FILE for an asset, PURCHASE_ORDER_FILE for a purchase order or RETURN_ORDER_FILE for a return order, the only kinds the API uploads","valueName":"value","values":["ASSET_FILE","PURCHASE_ORDER_FILE","RETURN_ORDER_FILE"]},{"name":"for-entity","description":"The ID of the asset, purchase order or return order the file is attached to, which fileType names the kind of","valueName":"uuid"},{"name":"is-public","description":"Whether any organization's API key may download the file, sent as true or false in any case, and false when left out"},{"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":"fulfillment","summary":"Fulfillment commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"List fulfillment orders","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":["fulfillmentOrderNumber","status","promiseShipDate","promiseDeliveryDate","cycleTime"]},{"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","description":"Text to find in the order's number, its status, its locations' names, or its items' names and SKUs","valueName":"value"},{"name":"fulfillment-order-keys","description":"The keys of the fulfillment orders to list, and an order named here or in fulfillmentOrderIds is listed","valueName":"value","repeatable":true},{"name":"fulfillment-order-ids","description":"The IDs of the fulfillment orders to list, and an order named here or in fulfillmentOrderKeys is listed","valueName":"uuid","repeatable":true},{"name":"project-ids","description":"The IDs of projects, and orders for one of them are listed","valueName":"uuid","repeatable":true},{"name":"statuses","description":"The statuses to list","valueName":"value","repeatable":true},{"name":"from-location-ids","description":"The IDs of locations, and orders shipping from one of them are listed, as are orders any other from filter matches","valueName":"uuid","repeatable":true},{"name":"to-location-ids","description":"The IDs of locations, and orders shipping to one of them are listed, as are orders any other to filter matches","valueName":"uuid","repeatable":true},{"name":"from-customer-ids","description":"The IDs of customers, and orders shipping from a location assigned to one of them are listed, as are orders any other from filter matches","valueName":"uuid","repeatable":true},{"name":"to-customer-ids","description":"The IDs of customers, and orders shipping to a location assigned to one of them are listed, as are orders any other to filter matches","valueName":"uuid","repeatable":true},{"name":"from-location-company-types","description":"The kind of site listed orders ship from, a CUSTOMER site or one of the organization's own MANUFACTURER sites, naming both filters nothing, and an order any other from filter matches is listed too","valueName":"value","repeatable":true},{"name":"to-location-company-types","description":"The kind of site listed orders ship to, a CUSTOMER site or one of the organization's own MANUFACTURER sites, naming both filters nothing, and an order any other to filter matches is listed too","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 fulfillment order","runs":true,"flags":[{"name":"contact-id","description":"The ID of the contact the order is for, or null","valueName":"uuid"},{"name":"file-ids","description":"The IDs of uploaded files to attach to the order, or null","valueName":"uuid","repeatable":true},{"name":"from-location-id","description":"The ID of the location the order ships from","valueName":"uuid"},{"name":"item","description":"The order's line items, from 1 to 50","valueName":"itemId=,requestedQuantity=","repeatable":true},{"name":"order-notes","description":"A note about the order, or null","valueName":"value"},{"name":"project-id","description":"The ID of the project the order fills, or null when it fills none","valueName":"uuid"},{"name":"promise-delivery-date","description":"The day the order is promised to arrive, or null","valueName":"value"},{"name":"promise-ship-date","description":"The day the order is promised to ship, or null","valueName":"value"},{"name":"to-location-id","description":"The ID of the location the order ships to","valueName":"uuid"},{"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 fulfillment order","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 fulfillment order","runs":true,"flags":[{"name":"contact-id","description":"The ID of the contact the order is for, or null to clear it","valueName":"uuid"},{"name":"from-location-id","description":"The ID of the location the order ships from, which cannot be cleared","valueName":"uuid"},{"name":"item","description":"The order's full set of line items, from 1 to 50, replacing the lines it had","valueName":"itemId=,requestedQuantity=","repeatable":true},{"name":"order-notes","description":"A note about the order, or null to clear it, and the one field an order that left draft accepts when sent alone, unless it ships from a 3PL location","valueName":"value"},{"name":"project-id","description":"The ID of the project the order fills, or null to fill none","valueName":"uuid"},{"name":"promise-delivery-date","description":"The day the order is promised to arrive, or null to clear it","valueName":"value"},{"name":"promise-ship-date","description":"The day the order is promised to ship, or null to clear it","valueName":"value"},{"name":"to-location-id","description":"The ID of the location the order ships to, which cannot be cleared","valueName":"uuid"},{"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":"cancel","summary":"Cancel fulfillment order","runs":true,"flags":[{"name":"cancellation-reason","description":"Why the order is cancelled","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":"close","summary":"Close fulfillment order","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 fulfillment order 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":"Unlink fulfillment order file","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{},{}],"subcommands":[]}]},{"name":"resync","summary":"Resync fulfillment order","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"send-to-3pl","summary":"Send fulfillment order to 3PL","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 fulfillment order 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 fulfillment order 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":"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":"QBO or NETSUITE, to leave out the items already linked to that integration","valueName":"value","values":["HUBSPOT","NETSUITE","NONE","QBO","SFDC"]},{"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, unique within your organization in any case","valueName":"value"},{"name":"sku","description":"The item's stock keeping unit, unique within your organization in any case","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, required for a BULK item and ignored for SERVICE and DEVICE items","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","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, and false when type is sent without it","negatable":true},{"name":"description","description":"The item's new description, or null to clear it","valueName":"value"},{"name":"field-position","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 and must be unique within your organization in any case","valueName":"value"},{"name":"sku","description":"The item's new stock keeping unit, which cannot be empty and must be unique within your organization in any case","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, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"allocated-indirect-value","description":"One unit's share of overhead, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --allocated-indirect-iso-code","valueName":"value"},{"name":"allocated-indirect-iso-code","description":"One unit's share of overhead, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --allocated-indirect-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"bill-of-materials","description":"The parts cost of one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"bill-of-materials-value","description":"The parts cost of one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --bill-of-materials-iso-code","valueName":"value"},{"name":"bill-of-materials-iso-code","description":"The parts cost of one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --bill-of-materials-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"cost-currency-code","description":"The ISO 4217 code every cost amount is denominated in, which must match the amounts sent and cannot be null. It is the only way to change the currency. A change keeps the held amounts and relabels them without conversion, and on an asset whose currency is locked it is refused","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"direct-labor-value","description":"The labor cost to build one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --direct-labor-iso-code","valueName":"value"},{"name":"direct-labor-iso-code","description":"The labor cost to build one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --direct-labor-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"freight-inbound","description":"The shipping cost to receive one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"freight-inbound-value","description":"The shipping cost to receive one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --freight-inbound-iso-code","valueName":"value"},{"name":"freight-inbound-iso-code","description":"The shipping cost to receive one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --freight-inbound-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"freight-outbound","description":"The shipping cost to deploy one unit, a deployment cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"freight-outbound-value","description":"The shipping cost to deploy one unit, a deployment cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --freight-outbound-iso-code","valueName":"value"},{"name":"freight-outbound-iso-code","description":"The shipping cost to deploy one unit, a deployment cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --freight-outbound-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"installation","description":"The cost to install one unit, a deployment cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"installation-value","description":"The cost to install one unit, a deployment cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --installation-iso-code","valueName":"value"},{"name":"installation-iso-code","description":"The cost to install one unit, a deployment cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --installation-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"interest","description":"The financing cost of one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"interest-value","description":"The financing cost of one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --interest-iso-code","valueName":"value"},{"name":"interest-iso-code","description":"The financing cost of one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --interest-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"salvage-value","description":"The value one unit keeps at the end of its useful life. Takes only null, which clears it","valueName":"null"},{"name":"salvage-value-value","description":"The value one unit keeps at the end of its useful life: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --salvage-value-iso-code","valueName":"value"},{"name":"salvage-value-iso-code","description":"The value one unit keeps at the end of its useful life: the value's ISO 4217 currency code, given with --salvage-value-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"simple-cost-basis","description":"A single cost for one unit, which clears the cost components and cannot be sent together with them. Takes only null, which clears it","valueName":"null"},{"name":"simple-cost-basis-value","description":"A single cost for one unit, which clears the cost components and cannot be sent together with them: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --simple-cost-basis-iso-code","valueName":"value"},{"name":"simple-cost-basis-iso-code","description":"A single cost for one unit, which clears the cost components and cannot be sent together with them: the value's ISO 4217 currency code, given with --simple-cost-basis-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"tariffs","description":"The import duty paid on one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"tariffs-value","description":"The import duty paid on one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --tariffs-iso-code","valueName":"value"},{"name":"tariffs-iso-code","description":"The import duty paid on one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --tariffs-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"tax","description":"The tax paid on one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"tax-value","description":"The tax paid on one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --tax-iso-code","valueName":"value"},{"name":"tax-iso-code","description":"The tax paid on one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --tax-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"useful-life","description":"The number of months one unit is depreciated over, from 1 to 480, 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, unique within its item","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 and must be unique within its item","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":"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 site, zone and customer names and site addresses, in any case","valueName":"value"},{"name":"for-customer-ids","description":"The IDs of the customers whose locations to return, where ORGANIZATION stands for your organization's own locations","valueName":"value","repeatable":true},{"name":"for-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 integration 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","description":"The site's structured address. Takes only null, which clears it","valueName":"null"},{"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, which a site passes to each of its zones without isInventoryOverride","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, unique in any case among your organization's sites for the same customer or among a site's zones, and never shared by a site and its zones","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","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","description":"The site's structured address, which a zone refuses. Takes only null, which clears it","valueName":"null"},{"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, which a site refuses","valueName":"uuid"},{"name":"customer-id","description":"The ID of the customer to assign a site to, or null for your organization's own site, which a zone refuses","valueName":"uuid"},{"name":"description","description":"A free-form description of a zone, which a site refuses","valueName":"value"},{"name":"is-archived","description":"Whether the location is archived, and archiving or unarchiving a site does the same to all of its zones","negatable":true},{"name":"is-inventory","description":"Whether assets at the location count as inventory for reporting, which a site passes to each of its zones without isInventoryOverride","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, and which becomes true when a zone is sent isInventory without it","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, and which a zone refuses","negatable":true},{"name":"name","description":"The location's display name, unique in any case among your organization's sites for the same customer or among a site's zones, never shared by a site and its zones, and taken from the address instead for a transient site with an address","valueName":"value"},{"name":"type","description":"SITE for a site, or ZONE for a zone within a site, and must be the location's current type, since a type cannot be changed","valueName":"value","values":["SITE","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":"meta","summary":"Meta commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"payment-terms","summary":"Payment terms commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get payment terms","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]}]}]},{"name":"project","summary":"Project commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get projects","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","startOn","endOn","workflow"]},{"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","description":"Text of three or more characters, with shorter text ignored, to find in the project's name or description, its customer's name, its line items' locations, the names of the asset-carrying items its line items ask for, or the items of the assets it holds","valueName":"value"},{"name":"customer-ids","description":"The IDs of the customers whose projects to list","valueName":"uuid","repeatable":true},{"name":"item-ids","description":"The IDs of the items whose projects to list, which are the projects with a line item for the item when it carries assets, or holding one of its assets","valueName":"uuid","repeatable":true},{"name":"project-ids","description":"The IDs of the projects to list","valueName":"uuid","repeatable":true},{"name":"location-ids","description":"The IDs of the locations whose projects to list, which are the projects with a line item at the location or with it as their default location","valueName":"uuid","repeatable":true},{"name":"statuses","description":"The statuses to list: UPCOMING, ACTIVE, PAST, or DATE_RANGE_INCOMPLETE for a project missing a start or an end","valueName":"value","repeatable":true},{"name":"start-by","description":"A day, and only projects that start on or before it are listed","valueName":"value"},{"name":"end-by","description":"A day, and only projects that end on or before it are listed","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 project","runs":true,"flags":[{"name":"contract-signed-on","description":"The day the contract was signed","valueName":"value"},{"name":"customer-id","description":"The ID of the customer the project is for","valueName":"uuid"},{"name":"default-location-id","description":"The ID of the project's default location","valueName":"uuid"},{"name":"description","description":"The project's description","valueName":"value"},{"name":"end-on","description":"The day the project ends","valueName":"value"},{"name":"file-ids","description":"The IDs of uploaded files to attach to the project","valueName":"uuid","repeatable":true},{"name":"inherit-previous-line-items","description":"Whether to copy the line items of the project this one renews, which applies only when previousProjectId is sent","negatable":true},{"name":"initial-workflow-stage-id","description":"The ID of the workflow stage the project starts on, which defaults to the workflow's first stage","valueName":"uuid"},{"name":"install-date","description":"The day of the installation","valueName":"value"},{"name":"line-item","description":"The project's line items, each an item the project sells or provides as a service. Takes activationDate=, aggregationKey=, billingFrequency=, chargeFrequency=, chargeSchedule=, details=, endOn=, fixedPrice=, fixedPrice.amount=, fixedPrice.isoCode=, id=, invoiceFrequency=, invoiceMode=, itemId=, locationId=, milestonePhases=, pricingMode=, quantity=, startOn=, totalOverride=, totalOverride.amount=, totalOverride.isoCode=, transactionType=, unitPrice=, unitPrice.amount=, unitPrice.isoCode=","valueName":"field=value,...","repeatable":true},{"name":"name","description":"The project's name, which no other project in the organization may share, ignoring case","valueName":"value"},{"name":"previous-project-id","description":"The ID of the project this one renews","valueName":"uuid"},{"name":"start-on","description":"The day the project starts","valueName":"value"},{"name":"total-contract-value","description":"The contract's total value. Takes only null, which clears it","valueName":"null"},{"name":"total-contract-value-value","description":"The contract's total value: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --total-contract-value-iso-code","valueName":"value"},{"name":"total-contract-value-iso-code","description":"The contract's total value: the value's ISO 4217 currency code, given with --total-contract-value-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"workflow-id","description":"The ID of the workflow to put the project on. A project created without one has no workflow","valueName":"uuid"},{"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 project","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 project","runs":true,"flags":[{"name":"acceptance-date","description":"The day the customer accepted the project","valueName":"value"},{"name":"billing-address","description":"The billing address the project's invoices use in place of the customer's","valueName":"value"},{"name":"billing-contact-email","description":"The billing contact email the project's invoices use in place of the customer's","valueName":"value"},{"name":"billing-contact-name","description":"The billing contact name the project's invoices use in place of the customer's","valueName":"value"},{"name":"billing-contact-phone","description":"The billing contact phone number the project's invoices use in place of the customer's","valueName":"value"},{"name":"contract-signed-on","description":"The day the contract was signed","valueName":"value"},{"name":"customer-id","description":"The ID of the customer the project is for","valueName":"uuid"},{"name":"default-location-id","description":"The ID of the project's default location","valueName":"uuid"},{"name":"description","description":"The project's description","valueName":"value"},{"name":"discount","description":"The discount applied to the project. Takes only null, which clears it","valueName":"null"},{"name":"discount-value","description":"The discount applied to the project: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --discount-iso-code","valueName":"value"},{"name":"discount-iso-code","description":"The discount applied to the project: the value's ISO 4217 currency code, given with --discount-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"end-on","description":"The day the project ends","valueName":"value"},{"name":"go-live-date","description":"The day the project goes live","valueName":"value"},{"name":"install-date","description":"The day of the installation","valueName":"value"},{"name":"is-archived","description":"Whether the project is archived","negatable":true},{"name":"line-item","description":"The project's line items. The list sent replaces the project's line items. Takes activationDate=, aggregationKey=, billingFrequency=, chargeFrequency=, chargeSchedule=, details=, endOn=, fixedPrice=, fixedPrice.amount=, fixedPrice.isoCode=, id=, invoiceFrequency=, invoiceMode=, itemId=, locationId=, milestonePhases=, pricingMode=, quantity=, startOn=, totalOverride=, totalOverride.amount=, totalOverride.isoCode=, transactionType=, unitPrice=, unitPrice.amount=, unitPrice.isoCode=","valueName":"field=value,...","repeatable":true},{"name":"memo","description":"The memo new invoices for the project carry","valueName":"value"},{"name":"name","description":"The project's new name, which no other project in the organization may share, ignoring case","valueName":"value"},{"name":"payment-term","description":"The project's payment term, named by the ID or the label the payment term list returns","valueName":"value"},{"name":"previous-project-id","description":"The ID of the project this one renews","valueName":"uuid"},{"name":"purchase-order-number","description":"The customer's purchase order number, which new invoices for the project carry","valueName":"value"},{"name":"site-visit-date","description":"The day of the site visit","valueName":"value"},{"name":"start-on","description":"The day the project starts","valueName":"value"},{"name":"total-contract-value","description":"The contract's total value. Takes only null, which clears it","valueName":"null"},{"name":"total-contract-value-value","description":"The contract's total value: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --total-contract-value-iso-code","valueName":"value"},{"name":"total-contract-value-iso-code","description":"The contract's total value: the value's ISO 4217 currency code, given with --total-contract-value-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"training-date","description":"The day of the training","valueName":"value"},{"name":"workflow-id","description":"The ID of the workflow to put the project on","valueName":"uuid"},{"name":"workflow-stage-id","description":"The ID of the workflow stage to move the project to, which has to belong to the project's workflow","valueName":"uuid"},{"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":"line-item","summary":"Line item commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"update","summary":"Patch project line item","runs":true,"flags":[{"name":"activation-date","description":"The day a periodic line item's charge schedule is anchored on, from 1970-01-01 through 2099-12-31","valueName":"value"},{"name":"billing-frequency","description":"The line item's single billing cadence","valueName":"value","values":["ANNUALLY","BIENNIALLY","BIWEEKLY","DAILY","MONTHLY","ONCE","QUADRENNIALLY","QUARTERLY","QUINQUENNIALLY","SEMIANNUALLY","TRIENNIALLY","WEEKLY"]},{"name":"charge-frequency","description":"How often a periodic line item creates a charge, and is refused unless chargeSchedule is PERIODIC","valueName":"value","values":["ANNUALLY","BIENNIALLY","BIWEEKLY","DAILY","MONTHLY","ONCE","QUADRENNIALLY","QUARTERLY","QUINQUENNIALLY","SEMIANNUALLY","TRIENNIALLY","WEEKLY"]},{"name":"charge-mode","description":"CONFIRMED when activationDate is sent, or PENDING when it is null, and a MILESTONE line item is CONFIRMED with no activationDate","valueName":"value","values":["CONFIRMED","PENDING"]},{"name":"charge-schedule","description":"PERIODIC when charges recur at a regular frequency, or MILESTONE when each charge follows a project milestone","valueName":"value","values":["MILESTONE","PERIODIC"]},{"name":"charge","description":"The line item's whole charge list, which replaces the charges it has, or omitted to leave them as they are. An INVOICED charge must stay in the list, because leaving it out is refused, and keeps its stored values whatever the list sends. Takes expectedBillableDate=, id=, isCustomModified=, label=, pricingMode=, quantity=, sequence=, servicePeriodEnd=, servicePeriodStart=, status=, totalPrice.amount=, totalPrice.isoCode=, triggerType=, unitPrice=, unitPrice.amount=, unitPrice.isoCode=","valueName":"field=value,...","repeatable":true},{"name":"details","description":"A free-form note about the line item, 65,536 characters or less","valueName":"value"},{"name":"fixed-price","description":"The flat price when pricingMode is FIXED, and is not sent together with unitPrice. Takes only null, which clears it","valueName":"null"},{"name":"fixed-price-value","description":"The flat price when pricingMode is FIXED, and is not sent together with unitPrice: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --fixed-price-iso-code","valueName":"value"},{"name":"fixed-price-iso-code","description":"The flat price when pricingMode is FIXED, and is not sent together with unitPrice: the value's ISO 4217 currency code, given with --fixed-price-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"regenerate-charges","description":"True to replace the line item's charges with the schedule its billing plan produces, and is not sent together with charges. A periodic plan needs its dates and its cadence, and generation is refused once a charge is INVOICED","negatable":true},{"name":"invoice-frequency","description":"How often a periodic line item's charges are invoiced, which is never more often than chargeFrequency","valueName":"value","values":["ANNUALLY","BIENNIALLY","BIWEEKLY","DAILY","MONTHLY","ONCE","QUADRENNIALLY","QUARTERLY","QUINQUENNIALLY","SEMIANNUALLY","TRIENNIALLY","WEEKLY"]},{"name":"invoice-mode","description":"ADVANCE to invoice a period before it starts, or ARREARS to invoice it after it ends, and is refused unless chargeSchedule is PERIODIC","valueName":"value","values":["ADVANCE","ARREARS"]},{"name":"item-id","description":"The catalog item the line item is for","valueName":"uuid"},{"name":"location-id","description":"The location the line item is for","valueName":"uuid"},{"name":"milestone-phases","description":"The named phases of a milestone line item and each one's share of its total. Takes only null, which clears it","valueName":"null"},{"name":"milestone-phase","description":"The phases, in order","valueName":"name=,percentage=","repeatable":true},{"name":"milestone-phases-mode","description":"PERCENTAGE, the only way a phase's share is expressed","valueName":"value"},{"name":"pricing-mode","description":"PER_UNIT to charge the unit price for each unit, or FIXED to charge the fixed price whatever the quantity","valueName":"value","values":["FIXED","PER_UNIT"]},{"name":"quantity","description":"The number of units the line item covers, which is zero or more","valueName":"number"},{"name":"total-override","description":"A negotiated total for a periodic line item that replaces the computed one, in the project's currency. Takes only null, which clears it","valueName":"null"},{"name":"total-override-value","description":"A negotiated total for a periodic line item that replaces the computed one, in the project's currency: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --total-override-iso-code","valueName":"value"},{"name":"total-override-iso-code","description":"A negotiated total for a periodic line item that replaces the computed one, in the project's currency: the value's ISO 4217 currency code, given with --total-override-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"transaction-type","description":"SALE to sell the item, which only a physical item allows, or SERVICE to provide it as a service","valueName":"value","values":["SALE","SERVICE"]},{"name":"unit-price","description":"The price of one unit for each charge, and is not sent together with fixedPrice. Takes only null, which clears it","valueName":"null"},{"name":"unit-price-value","description":"The price of one unit for each charge, and is not sent together with fixedPrice: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --unit-price-iso-code","valueName":"value"},{"name":"unit-price-iso-code","description":"The price of one unit for each charge, and is not sent together with fixedPrice: the value's ISO 4217 currency code, given with --unit-price-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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":"charges","summary":"Charges commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get project line item charges","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{},{}],"subcommands":[]}]}]}]},{"name":"purchase-order","summary":"Purchase order commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"List purchase orders","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":["purchaseOrderNumber","status","promiseShipDate","promiseDeliveryDate"]},{"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","description":"Text to find in the order's number, its status, its supplier's name, its locations' names, or its items' names and SKUs","valueName":"value"},{"name":"purchase-order-keys","description":"The keys of the purchase orders to list, and an order named here or in purchaseOrderIds is listed","valueName":"value","repeatable":true},{"name":"purchase-order-ids","description":"The IDs of the purchase orders to list, and an order named here or in purchaseOrderKeys is listed","valueName":"uuid","repeatable":true},{"name":"supplier-ids","description":"The IDs of suppliers, and orders placed with one of them are listed","valueName":"uuid","repeatable":true},{"name":"statuses","description":"The statuses to list, as the order's status field spells them","valueName":"value","repeatable":true},{"name":"from-location-ids","description":"The IDs of locations, and orders shipping from one of them are listed, as are orders any other from filter matches","valueName":"uuid","repeatable":true},{"name":"to-location-ids","description":"The IDs of locations, and orders delivered to one of them are listed, as are orders any other to filter matches","valueName":"uuid","repeatable":true},{"name":"from-customer-ids","description":"The IDs of customers, and orders shipping from a location assigned to one of them are listed, as are orders any other from filter matches","valueName":"uuid","repeatable":true},{"name":"to-customer-ids","description":"The IDs of customers, and orders delivered to a location assigned to one of them are listed, as are orders any other to filter matches","valueName":"uuid","repeatable":true},{"name":"from-location-company-types","description":"The kind of site listed orders ship from, a CUSTOMER site or one of the organization's own MANUFACTURER sites, naming both filters nothing, and an order any other from filter matches is listed too","valueName":"value","repeatable":true},{"name":"to-location-company-types","description":"The kind of site listed orders are delivered to, a CUSTOMER site or one of the organization's own MANUFACTURER sites, naming both filters nothing, and an order any other to filter matches is listed too","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 purchase order","runs":true,"flags":[{"name":"carrier","description":"The carrier the supplier ships the order with. Takes only null, which clears it","valueName":"null"},{"name":"carrier-name","description":"The carrier's name, which is accepted only when type is other","valueName":"value"},{"name":"carrier-tracking-number","description":"The number the carrier tracks the shipment by, or null when it has none","valueName":"value"},{"name":"carrier-type","description":"The carrier, or null when none is named","valueName":"value","values":["airterra","apc_postal","apg","aramex","asendia_us","australia_post","axlehire","better_trucks","borderguru","boxberry","bring","canada_post","cdl","chronopost","colissimo","collect_plus","correios_br","correos_espana","couriersplease","deutsche_post","dhl_benelux","dhl_ecommerce","dhl_express","dhl_germany","dhl_germany_c2c","dpd_de","dpd_uk","estafeta","fastway_australia","fedex","globegistics","gls_us","gophr","gso","hermes_germany_b2c","hermes_uk","hongkong_post","la_poste","lasership","lso","mondial_relay","new_zealand_post","nippon_express","ontrac","orangeds","other","parcel","parcelforce","passport","pcf","pitney_bowes","poste_italiane","posti","purolator","royal_mail","royal_mail_sf","rr_donnelley","russian_post","sendle","shippo","skypostal","stuart","swyft","uds","ups","usps","veho","x_delivery","yodel"]},{"name":"external-purchase-order-number","description":"The supplier's own number for the order, or null when it has none","valueName":"value"},{"name":"from-location-id","description":"The ID of the location the supplier ships from, or null when the supplier has no location on record","valueName":"uuid"},{"name":"item","description":"The order's lines, from 1 to 50 of them, each naming a different item","valueName":"itemId=,requestedQuantity=","repeatable":true},{"name":"order-notes","description":"A note about the order, where blank text is stored as null","valueName":"value"},{"name":"promise-delivery-date","description":"The day the supplier promised the order would arrive","valueName":"value"},{"name":"promise-ship-date","description":"The day the supplier promised to ship the order","valueName":"value"},{"name":"supplier-id","description":"The ID of the company the items are ordered from, which must be a supplier","valueName":"uuid"},{"name":"to-location-id","description":"The ID of the location the order is delivered to","valueName":"uuid"},{"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 purchase order","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 purchase order","runs":true,"flags":[{"name":"carrier","description":"The carrier the supplier ships the order with, where a field left out keeps its stored value and null clears the whole carrier. Takes only null, which clears it","valueName":"null"},{"name":"carrier-name","description":"The carrier's name, which is accepted only when type is other","valueName":"value"},{"name":"carrier-tracking-number","description":"The number the carrier tracks the shipment by, or null when it has none","valueName":"value"},{"name":"carrier-type","description":"The carrier, or null when none is named","valueName":"value","values":["airterra","apc_postal","apg","aramex","asendia_us","australia_post","axlehire","better_trucks","borderguru","boxberry","bring","canada_post","cdl","chronopost","colissimo","collect_plus","correios_br","correos_espana","couriersplease","deutsche_post","dhl_benelux","dhl_ecommerce","dhl_express","dhl_germany","dhl_germany_c2c","dpd_de","dpd_uk","estafeta","fastway_australia","fedex","globegistics","gls_us","gophr","gso","hermes_germany_b2c","hermes_uk","hongkong_post","la_poste","lasership","lso","mondial_relay","new_zealand_post","nippon_express","ontrac","orangeds","other","parcel","parcelforce","passport","pcf","pitney_bowes","poste_italiane","posti","purolator","royal_mail","royal_mail_sf","rr_donnelley","russian_post","sendle","shippo","skypostal","stuart","swyft","uds","ups","usps","veho","x_delivery","yodel"]},{"name":"external-purchase-order-number","description":"The supplier's own number for the order, or null when it has none","valueName":"value"},{"name":"from-location-id","description":"The ID of the location the supplier ships from, or null when the supplier has no location on record","valueName":"uuid"},{"name":"item","description":"The 1 to 50 lines that replace the order's, each naming a different item","valueName":"itemId=,requestedQuantity=","repeatable":true},{"name":"order-notes","description":"A note about the order, which a request sending only the note can change after the order leaves draft, until any of it is received, it is cancelled, or it is sent to a 3PL","valueName":"value"},{"name":"promise-delivery-date","description":"The day the supplier promised the order would arrive","valueName":"value"},{"name":"promise-ship-date","description":"The day the supplier promised to ship the order","valueName":"value"},{"name":"supplier-id","description":"The ID of the company the items are ordered from, which must be a supplier","valueName":"uuid"},{"name":"to-location-id","description":"The ID of the location the order is delivered to, which cannot be cleared","valueName":"uuid"},{"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":"resync-3pl-files","summary":"Resync 3PL files","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"cancel","summary":"Cancel purchase order","runs":true,"flags":[{"name":"cancellation-reason","description":"Why the order is cancelled, which is required","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":"file","summary":"File commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get purchase order 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":"Unlink purchase order file","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{},{}],"subcommands":[]}]},{"name":"resync","summary":"Resync purchase order","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"send-to-3pl","summary":"Send purchase order to 3PL","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 purchase order 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 purchase order 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":"return-order","summary":"Return order commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"List return orders","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":["returnOrderNumber","status","returnType","promiseShipDate","promiseDeliveryDate"]},{"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","description":"Text to find in the order's number, its status, its return type, its locations' names, or its items' names and SKUs","valueName":"value"},{"name":"return-order-keys","description":"The keys of the return orders to list, and an order named here or in returnOrderIds is listed","valueName":"value","repeatable":true},{"name":"return-order-ids","description":"The IDs of the return orders to list, and an order named here or in returnOrderKeys is listed","valueName":"uuid","repeatable":true},{"name":"types","description":"The return types to list, as the order's returnType field spells them","valueName":"value","repeatable":true},{"name":"statuses","description":"The statuses to list, as the order's status field spells them","valueName":"value","repeatable":true},{"name":"from-location-ids","description":"The IDs of locations, and orders returned from one of them are listed, as are orders any other from filter matches","valueName":"uuid","repeatable":true},{"name":"to-location-ids","description":"The IDs of locations, and orders returned to one of them are listed, as are orders any other to filter matches","valueName":"uuid","repeatable":true},{"name":"from-customer-ids","description":"The IDs of customers, and orders returned from a location assigned to one of them are listed, as are orders any other from filter matches","valueName":"uuid","repeatable":true},{"name":"to-customer-ids","description":"The IDs of customers, and orders returned to a location assigned to one of them are listed, as are orders any other to filter matches","valueName":"uuid","repeatable":true},{"name":"from-location-company-types","description":"The kind of site listed orders are returned from, a CUSTOMER site or one of the organization's own MANUFACTURER sites, naming both filters nothing, and an order any other from filter matches is listed too","valueName":"value","repeatable":true},{"name":"to-location-company-types","description":"The kind of site listed orders are returned to, a CUSTOMER site or one of the organization's own MANUFACTURER sites, naming both filters nothing, and an order any other to filter matches is listed too","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 return order","runs":true,"flags":[{"name":"carrier","description":"The carrier the items are returned with. Takes only null, which clears it","valueName":"null"},{"name":"carrier-name","description":"The carrier's name, which is accepted only when type is other","valueName":"value"},{"name":"carrier-tracking-number","description":"The number the carrier tracks the shipment by, or null when it has none","valueName":"value"},{"name":"carrier-type","description":"The carrier, or null when none is named","valueName":"value","values":["airterra","apc_postal","apg","aramex","asendia_us","australia_post","axlehire","better_trucks","borderguru","boxberry","bring","canada_post","cdl","chronopost","colissimo","collect_plus","correios_br","correos_espana","couriersplease","deutsche_post","dhl_benelux","dhl_ecommerce","dhl_express","dhl_germany","dhl_germany_c2c","dpd_de","dpd_uk","estafeta","fastway_australia","fedex","globegistics","gls_us","gophr","gso","hermes_germany_b2c","hermes_uk","hongkong_post","la_poste","lasership","lso","mondial_relay","new_zealand_post","nippon_express","ontrac","orangeds","other","parcel","parcelforce","passport","pcf","pitney_bowes","poste_italiane","posti","purolator","royal_mail","royal_mail_sf","rr_donnelley","russian_post","sendle","shippo","skypostal","stuart","swyft","uds","ups","usps","veho","x_delivery","yodel"]},{"name":"from-location-id","description":"The ID of the location the items are returned from","valueName":"uuid"},{"name":"item","description":"The order's lines, from 1 to 50 of them, each naming a different item","valueName":"itemId=,requestedQuantity=","repeatable":true},{"name":"order-notes","description":"A note about the order, where blank text is stored as null","valueName":"value"},{"name":"promise-delivery-date","description":"The day the items are promised to arrive","valueName":"value"},{"name":"promise-ship-date","description":"The day the items are promised to ship","valueName":"value"},{"name":"return-reason","description":"A description of why the items are coming back, which is required when returnType is OTHER","valueName":"value"},{"name":"return-type","description":"Why the items are coming back","valueName":"value","values":["CUSTOMER_CANCELLATION","DAMAGED","DEFECTIVE","END_OF_SERVICE","INCORRECT_SPEC","NOT_NEEDED","OTHER","PROVISIONING","UPGRADE","WRONG_ITEM"]},{"name":"to-location-id","description":"The ID of the location the items are returned to","valueName":"uuid"},{"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 return order","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 return order","runs":true,"flags":[{"name":"carrier","description":"The carrier the items are returned with, where a field left out keeps its stored value and null clears the whole carrier. Takes only null, which clears it","valueName":"null"},{"name":"carrier-name","description":"The carrier's name, which is accepted only when type is other","valueName":"value"},{"name":"carrier-tracking-number","description":"The number the carrier tracks the shipment by, or null when it has none","valueName":"value"},{"name":"carrier-type","description":"The carrier, or null when none is named","valueName":"value","values":["airterra","apc_postal","apg","aramex","asendia_us","australia_post","axlehire","better_trucks","borderguru","boxberry","bring","canada_post","cdl","chronopost","colissimo","collect_plus","correios_br","correos_espana","couriersplease","deutsche_post","dhl_benelux","dhl_ecommerce","dhl_express","dhl_germany","dhl_germany_c2c","dpd_de","dpd_uk","estafeta","fastway_australia","fedex","globegistics","gls_us","gophr","gso","hermes_germany_b2c","hermes_uk","hongkong_post","la_poste","lasership","lso","mondial_relay","new_zealand_post","nippon_express","ontrac","orangeds","other","parcel","parcelforce","passport","pcf","pitney_bowes","poste_italiane","posti","purolator","royal_mail","royal_mail_sf","rr_donnelley","russian_post","sendle","shippo","skypostal","stuart","swyft","uds","ups","usps","veho","x_delivery","yodel"]},{"name":"from-location-id","description":"The ID of the location the items are returned from, which cannot be cleared","valueName":"uuid"},{"name":"item","description":"The 1 to 50 lines that replace the order's, each naming a different item","valueName":"itemId=,requestedQuantity=","repeatable":true},{"name":"order-notes","description":"A note about the order, which a request sending only the note can change after the order leaves draft until it is received or cancelled, unless a 3PL runs its destination","valueName":"value"},{"name":"promise-delivery-date","description":"The day the items are promised to arrive","valueName":"value"},{"name":"promise-ship-date","description":"The day the items are promised to ship","valueName":"value"},{"name":"return-reason","description":"A description of why the items are coming back, which the order must have while its type is OTHER","valueName":"value"},{"name":"return-type","description":"Why the items are coming back, which cannot be cleared","valueName":"value","values":["CUSTOMER_CANCELLATION","DAMAGED","DEFECTIVE","END_OF_SERVICE","INCORRECT_SPEC","NOT_NEEDED","OTHER","PROVISIONING","UPGRADE","WRONG_ITEM"]},{"name":"to-location-id","description":"The ID of the location the items are returned to, which cannot be cleared","valueName":"uuid"},{"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":"resync-3pl-files","summary":"Resync 3PL files","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"cancel","summary":"Cancel return order","runs":true,"flags":[{"name":"cancellation-reason","description":"Why the order is cancelled, which is required","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":"file","summary":"File commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get return order 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":"Unlink return order file","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{},{}],"subcommands":[]}]},{"name":"resync","summary":"Resync return order","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"send-to-3pl","summary":"Send return order to 3PL","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 return order 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 return order 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":"shipment","summary":"Shipment commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"List shipments","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":["shipmentNumber","shippingCostAmount","totalValue","status"]},{"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":"status","description":"The one status to list: OPEN, SHIPPED, DELIVERED, RECEIVED or CANCELLED","valueName":"value","values":["CANCELLED","DELIVERED","OPEN","RECEIVED","SHIPPED"]},{"name":"shipment-type","description":"The one direction to list: INBOUND or OUTBOUND","valueName":"value","values":["INBOUND","OUTBOUND"]},{"name":"search","description":"Text to find in the shipment's number, its order numbers, its tracking number, its locations' names, or its items' names and SKUs","valueName":"value"},{"name":"fo-numbers","description":"The fulfillment order numbers whose shipments to list","valueName":"value","repeatable":true},{"name":"po-numbers","description":"The purchase order numbers whose shipments to list","valueName":"value","repeatable":true},{"name":"ro-numbers","description":"The return order numbers whose shipments to list","valueName":"value","repeatable":true},{"name":"location-ids","description":"The IDs of locations, and only shipments leaving from or going to one of them are listed","valueName":"uuid","repeatable":true},{"name":"from-location-ids","description":"The IDs of locations, and shipments leaving from one of them are listed, as are shipments any other from filter matches","valueName":"uuid","repeatable":true},{"name":"to-location-ids","description":"The IDs of locations, and shipments going to one of them are listed, as are shipments any other to filter matches","valueName":"uuid","repeatable":true},{"name":"from-customer-ids","description":"The IDs of customers, and shipments leaving from a location assigned to one of them are listed, as are shipments any other from filter matches","valueName":"uuid","repeatable":true},{"name":"to-customer-ids","description":"The IDs of customers, and shipments going to a location assigned to one of them are listed, as are shipments any other to filter matches","valueName":"uuid","repeatable":true},{"name":"from-location-company-types","description":"The kind of site listed shipments leave from, a CUSTOMER site or one of the organization's own MANUFACTURER sites, naming both filters nothing, and a shipment any other from filter matches is listed too","valueName":"value","repeatable":true},{"name":"to-location-company-types","description":"The kind of site listed shipments go to, a CUSTOMER site or one of the organization's own MANUFACTURER sites, naming both filters nothing, and a shipment any other to filter matches is listed too","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 shipment","runs":true,"flags":[{"name":"carrier","description":"Who carries the shipment. Takes only null, which clears it","valueName":"null"},{"name":"carrier-name","description":"The carrier's name, which is accepted only when type is other","valueName":"value"},{"name":"carrier-tracking-number","description":"The number the carrier tracks the shipment by, or null when it has none","valueName":"value"},{"name":"carrier-type","description":"The carrier, or null when none is named","valueName":"value","values":["airterra","apc_postal","apg","aramex","asendia_us","australia_post","axlehire","better_trucks","borderguru","boxberry","bring","canada_post","cdl","chronopost","colissimo","collect_plus","correios_br","correos_espana","couriersplease","deutsche_post","dhl_benelux","dhl_ecommerce","dhl_express","dhl_germany","dhl_germany_c2c","dpd_de","dpd_uk","estafeta","fastway_australia","fedex","globegistics","gls_us","gophr","gso","hermes_germany_b2c","hermes_uk","hongkong_post","la_poste","lasership","lso","mondial_relay","new_zealand_post","nippon_express","ontrac","orangeds","other","parcel","parcelforce","passport","pcf","pitney_bowes","poste_italiane","posti","purolator","royal_mail","royal_mail_sf","rr_donnelley","russian_post","sendle","shippo","skypostal","stuart","swyft","uds","ups","usps","veho","x_delivery","yodel"]},{"name":"delivered-at","description":"When the shipment arrived, which cannot be before shippedAt, or null while it has not","valueName":"value"},{"name":"delivered-at-timezone","description":"The IANA time zone deliveredAt is recorded in","valueName":"value"},{"name":"expected-delivered-on","description":"The day the shipment is expected to arrive, which on an inbound shipment cannot be before expectedShippedOn","valueName":"value"},{"name":"expected-shipped-on","description":"The day the shipment is expected to leave","valueName":"value"},{"name":"from-location-id","description":"The ID of the location the shipment leaves from, which an outbound shipment requires","valueName":"uuid"},{"name":"fulfillment-order-number","description":"The number of the fulfillment order an outbound shipment fills, or null for none","valueName":"value"},{"name":"item","description":"The shipment's line items, from 1 to 100 of them","valueName":"externalReference=,itemId=,quantity=,serials=","repeatable":true},{"name":"purchase-order-number","description":"The number of the purchase order an inbound shipment fills, or null for none","valueName":"value"},{"name":"return-order-number","description":"The number of the return order an inbound shipment fills, or null for none","valueName":"value"},{"name":"shipment-note","description":"A note about the shipment","valueName":"value"},{"name":"shipment-type","description":"Whether the shipment is INBOUND to the organization or OUTBOUND from it","valueName":"value","values":["INBOUND","OUTBOUND"]},{"name":"shipped-at","description":"When the shipment left, or null while it has not","valueName":"value"},{"name":"shipped-at-timezone","description":"The IANA time zone shippedAt is recorded in","valueName":"value"},{"name":"shipping-cost","description":"What the shipment cost to send, which cannot be negative. Takes only null, which clears it","valueName":"null"},{"name":"shipping-cost-value","description":"What the shipment cost to send: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --shipping-cost-iso-code","valueName":"value"},{"name":"shipping-cost-iso-code","description":"What the shipment cost to send: the value's ISO 4217 currency code, given with --shipping-cost-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"to-location-id","description":"The ID of the location the shipment is going to","valueName":"uuid"},{"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 shipment","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 shipment","runs":true,"flags":[{"name":"carrier","description":"Who carries the shipment, where a field left out keeps its stored value and null clears the whole carrier. Takes only null, which clears it","valueName":"null"},{"name":"carrier-name","description":"The carrier's name, which is accepted only when type is other","valueName":"value"},{"name":"carrier-tracking-number","description":"The number the carrier tracks the shipment by, or null when it has none","valueName":"value"},{"name":"carrier-type","description":"The carrier, or null when none is named","valueName":"value","values":["airterra","apc_postal","apg","aramex","asendia_us","australia_post","axlehire","better_trucks","borderguru","boxberry","bring","canada_post","cdl","chronopost","colissimo","collect_plus","correios_br","correos_espana","couriersplease","deutsche_post","dhl_benelux","dhl_ecommerce","dhl_express","dhl_germany","dhl_germany_c2c","dpd_de","dpd_uk","estafeta","fastway_australia","fedex","globegistics","gls_us","gophr","gso","hermes_germany_b2c","hermes_uk","hongkong_post","la_poste","lasership","lso","mondial_relay","new_zealand_post","nippon_express","ontrac","orangeds","other","parcel","parcelforce","passport","pcf","pitney_bowes","poste_italiane","posti","purolator","royal_mail","royal_mail_sf","rr_donnelley","russian_post","sendle","shippo","skypostal","stuart","swyft","uds","ups","usps","veho","x_delivery","yodel"]},{"name":"delivered-at","description":"When the shipment arrived, which cannot be before shippedAt","valueName":"value"},{"name":"delivered-at-timezone","description":"The IANA time zone deliveredAt is recorded in","valueName":"value"},{"name":"delivery-note","description":"The note written when the shipment was delivered","valueName":"value"},{"name":"expected-delivered-on","description":"The day the shipment is expected to arrive, which on an inbound shipment cannot be before expectedShippedOn","valueName":"value"},{"name":"expected-shipped-on","description":"The day the shipment is expected to leave","valueName":"value"},{"name":"from-location-id","description":"The ID of the location the shipment leaves from, which an outbound shipment cannot clear","valueName":"uuid"},{"name":"fulfillment-order-number","description":"The number of the fulfillment order an outbound shipment fills, or null for none","valueName":"value"},{"name":"item","description":"The 1 to 100 line items that replace the shipment's, where a line already on the shipment keeps its quantity when sent without one","valueName":"externalReference=,itemId=,quantity=,serials=","repeatable":true},{"name":"purchase-order-number","description":"The number of the purchase order an inbound shipment fills, or null for none","valueName":"value"},{"name":"receipt-note","description":"The note written when the shipment was received","valueName":"value"},{"name":"return-order-number","description":"The number of the return order an inbound shipment fills, or null for none","valueName":"value"},{"name":"shipment-note","description":"A note about the shipment","valueName":"value"},{"name":"shipped-at","description":"When the shipment left, which cannot be cleared and, on an outbound shipment, can only be corrected after it has shipped","valueName":"value"},{"name":"shipped-at-timezone","description":"The IANA time zone shippedAt is recorded in","valueName":"value"},{"name":"shipping-cost","description":"What the shipment cost to send, which cannot be negative. Takes only null, which clears it","valueName":"null"},{"name":"shipping-cost-value","description":"What the shipment cost to send: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --shipping-cost-iso-code","valueName":"value"},{"name":"shipping-cost-iso-code","description":"What the shipment cost to send: the value's ISO 4217 currency code, given with --shipping-cost-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"to-location-id","description":"The ID of the location the shipment is going to, which cannot be cleared","valueName":"uuid"},{"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":"cancel","summary":"Cancel shipment","runs":true,"flags":[{"name":"cancellation-reason","description":"Why the shipment is cancelled, which is required","valueName":"value"},{"name":"remove-linked-shipping-cost","description":"True to also remove the shipping cost recorded for the shipment","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":"deliver","summary":"Mark shipment as delivered","runs":true,"flags":[{"name":"delivered-at","description":"When the shipment arrived","valueName":"value"},{"name":"delivered-at-timezone","description":"The IANA time zone deliveredAt is recorded in","valueName":"value"},{"name":"delivery-location-id","description":"The ID of the location the shipment was delivered to","valueName":"uuid"},{"name":"delivery-note","description":"A note about the delivery","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":"receive","summary":"Mark inbound shipment as received","runs":true,"flags":[{"name":"item","description":"What arrived on each line","valueName":"externalReference=,itemId=,quantity=,serials=","repeatable":true},{"name":"receipt-note","description":"A note about the receipt","valueName":"value"},{"name":"receive-location-id","description":"The ID of the location the items were received at","valueName":"uuid"},{"name":"received-at","description":"When the items were received","valueName":"value"},{"name":"received-at-timezone","description":"The IANA time zone receivedAt is recorded in","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":"ship","summary":"Mark outbound shipment as shipped","runs":true,"flags":[{"name":"item","description":"What left on each line, with the serial numbers of the units tracked by serial","valueName":"externalReference=,itemId=,quantity=,serials=","repeatable":true},{"name":"ship-location-id","description":"The ID of the location the shipment left from","valueName":"uuid"},{"name":"shipment-note","description":"A note about the shipment","valueName":"value"},{"name":"shipped-at","description":"When the shipment left","valueName":"value"},{"name":"shipped-at-timezone","description":"The IANA time zone shippedAt is recorded in","valueName":"value"},{"name":"shipping-cost","description":"What the shipment cost to send, which cannot be negative. Takes only null, which clears it","valueName":"null"},{"name":"shipping-cost-value","description":"What the shipment cost to send: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --shipping-cost-iso-code","valueName":"value"},{"name":"shipping-cost-iso-code","description":"What the shipment cost to send: the value's ISO 4217 currency code, given with --shipping-cost-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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":"tracking","summary":"Tracking commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get shipment tracking events","runs":true,"flags":[{"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, and an update sends it, url, or both","valueName":"value"},{"name":"url","description":"The address the link points to, which cannot be empty, and an update sends it, name, or both","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":"workflow","summary":"Workflow commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get workflows","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"get","summary":"Get workflow","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":[]}]}
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":"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 the organization and person this CLI is signed in as, its configuration, and what it can 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":"update","summary":"Install the newest version of this CLI, or name the command that does","runs":true,"flags":[{"name":"check","description":"Only say whether a newer version is published, and change nothing"},{"name":"yes","short":"y","description":"Update without asking"},{"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":"skills-only","description":"Write only the hardfin-cli skill, and leave AGENTS.md and the MCP configs as they are"},{"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, and 100 when left out","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, and ASC when left out","valueName":"value","values":["ASC","DESC"]},{"name":"archived","description":"Whether to return unarchived records, archived records, or all of them, and false when left out","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 only when scrapped is true or all, since scrapped defaults to false","valueName":"value","repeatable":true},{"name":"currency","description":"The ISO 4217 code of the cost currency whose assets to list","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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, and false when left out","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. Takes only null, which clears it","valueName":"null"},{"name":"allocated-indirect-value","description":"One unit's share of overhead, a cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --allocated-indirect-iso-code","valueName":"value"},{"name":"allocated-indirect-iso-code","description":"One unit's share of overhead, a cost component: the value's ISO 4217 currency code, given with --allocated-indirect-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"bill-of-materials","description":"The parts cost of one unit, a cost component. Takes only null, which clears it","valueName":"null"},{"name":"bill-of-materials-value","description":"The parts cost of one unit, a cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --bill-of-materials-iso-code","valueName":"value"},{"name":"bill-of-materials-iso-code","description":"The parts cost of one unit, a cost component: the value's ISO 4217 currency code, given with --bill-of-materials-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"cost-currency-code","description":"The ISO 4217 code the asset's costs are denominated in, which defaults to the item's accounting currency and then the organization's, and which every cost amount must match","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"depreciation-model","description":"The method one unit is depreciated by, taken from the item when omitted, or null to leave it empty","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. Takes only null, which clears it","valueName":"null"},{"name":"direct-labor-value","description":"The labor cost to build one unit, a cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --direct-labor-iso-code","valueName":"value"},{"name":"direct-labor-iso-code","description":"The labor cost to build one unit, a cost component: the value's ISO 4217 currency code, given with --direct-labor-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"freight-inbound","description":"The shipping cost to receive one unit, a cost component. Takes only null, which clears it","valueName":"null"},{"name":"freight-inbound-value","description":"The shipping cost to receive one unit, a cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --freight-inbound-iso-code","valueName":"value"},{"name":"freight-inbound-iso-code","description":"The shipping cost to receive one unit, a cost component: the value's ISO 4217 currency code, given with --freight-inbound-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"freight-outbound","description":"The shipping cost to deploy one unit, a deployment cost component. Takes only null, which clears it","valueName":"null"},{"name":"freight-outbound-value","description":"The shipping cost to deploy one unit, a deployment cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --freight-outbound-iso-code","valueName":"value"},{"name":"freight-outbound-iso-code","description":"The shipping cost to deploy one unit, a deployment cost component: the value's ISO 4217 currency code, given with --freight-outbound-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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, from 1970-01-01 through 2099-12-31, which Hardfin sets itself when absent","valueName":"value"},{"name":"installation","description":"The cost to install one unit, a deployment cost component. Takes only null, which clears it","valueName":"null"},{"name":"installation-value","description":"The cost to install one unit, a deployment cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --installation-iso-code","valueName":"value"},{"name":"installation-iso-code","description":"The cost to install one unit, a deployment cost component: the value's ISO 4217 currency code, given with --installation-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"interest","description":"The financing cost of one unit, a cost component. Takes only null, which clears it","valueName":"null"},{"name":"interest-value","description":"The financing cost of one unit, a cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --interest-iso-code","valueName":"value"},{"name":"interest-iso-code","description":"The financing cost of one unit, a cost component: the value's ISO 4217 currency code, given with --interest-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"item-id","description":"The ID of the catalog item the asset is a unit of, which cannot be changed after the asset is created","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, in the asset's cost currency, taken from the item when omitted and the item's accounting currency is the asset's. Takes only null, which clears it","valueName":"null"},{"name":"salvage-value-value","description":"The value one unit keeps at the end of its useful life, in the asset's cost currency, taken from the item when omitted and the item's accounting currency is the asset's: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --salvage-value-iso-code","valueName":"value"},{"name":"salvage-value-iso-code","description":"The value one unit keeps at the end of its useful life, in the asset's cost currency, taken from the item when omitted and the item's accounting currency is the asset's: the value's ISO 4217 currency code, given with --salvage-value-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"serial","description":"The asset's serial number, unique within your organization","valueName":"value"},{"name":"simple-cost-basis","description":"A single cost for one unit, which cannot be sent together with the cost components, and whose cluster is taken from the item when every cost field is omitted and the item's accounting currency is the asset's. Takes only null, which clears it","valueName":"null"},{"name":"simple-cost-basis-value","description":"A single cost for one unit, which cannot be sent together with the cost components, and whose cluster is taken from the item when every cost field is omitted and the item's accounting currency is the asset's: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --simple-cost-basis-iso-code","valueName":"value"},{"name":"simple-cost-basis-iso-code","description":"A single cost for one unit, which cannot be sent together with the cost components, and whose cluster is taken from the item when every cost field is omitted and the item's accounting currency is the asset's: the value's ISO 4217 currency code, given with --simple-cost-basis-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"tariffs","description":"The import duty paid on one unit, a cost component. Takes only null, which clears it","valueName":"null"},{"name":"tariffs-value","description":"The import duty paid on one unit, a cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --tariffs-iso-code","valueName":"value"},{"name":"tariffs-iso-code","description":"The import duty paid on one unit, a cost component: the value's ISO 4217 currency code, given with --tariffs-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"tax","description":"The tax paid on one unit, a cost component. Takes only null, which clears it","valueName":"null"},{"name":"tax-value","description":"The tax paid on one unit, a cost component: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --tax-iso-code","valueName":"value"},{"name":"tax-iso-code","description":"The tax paid on one unit, a cost component: the value's ISO 4217 currency code, given with --tax-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"useful-life","description":"The number of months one unit is depreciated over, from 1 to 480, taken from the item when omitted, or null to leave it empty","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, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"allocated-indirect-value","description":"One unit's share of overhead, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --allocated-indirect-iso-code","valueName":"value"},{"name":"allocated-indirect-iso-code","description":"One unit's share of overhead, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --allocated-indirect-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"bill-of-materials","description":"The parts cost of one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"bill-of-materials-value","description":"The parts cost of one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --bill-of-materials-iso-code","valueName":"value"},{"name":"bill-of-materials-iso-code","description":"The parts cost of one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --bill-of-materials-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"cost-currency-code","description":"The ISO 4217 code every cost amount is denominated in, which must match the amounts sent and cannot be null. It is the only way to change the currency. A change keeps the held amounts and relabels them without conversion, and on an asset whose currency is locked it is refused","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"direct-labor-value","description":"The labor cost to build one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --direct-labor-iso-code","valueName":"value"},{"name":"direct-labor-iso-code","description":"The labor cost to build one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --direct-labor-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"freight-inbound","description":"The shipping cost to receive one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"freight-inbound-value","description":"The shipping cost to receive one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --freight-inbound-iso-code","valueName":"value"},{"name":"freight-inbound-iso-code","description":"The shipping cost to receive one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --freight-inbound-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"freight-outbound","description":"The shipping cost to deploy one unit, a deployment cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"freight-outbound-value","description":"The shipping cost to deploy one unit, a deployment cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --freight-outbound-iso-code","valueName":"value"},{"name":"freight-outbound-iso-code","description":"The shipping cost to deploy one unit, a deployment cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --freight-outbound-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"in-service-date","description":"The day the asset was put into service and began depreciating, from 1970-01-01 through 2099-12-31, or null to clear it","valueName":"value"},{"name":"installation","description":"The cost to install one unit, a deployment cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"installation-value","description":"The cost to install one unit, a deployment cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --installation-iso-code","valueName":"value"},{"name":"installation-iso-code","description":"The cost to install one unit, a deployment cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --installation-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"interest","description":"The financing cost of one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"interest-value","description":"The financing cost of one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --interest-iso-code","valueName":"value"},{"name":"interest-iso-code","description":"The financing cost of one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --interest-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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. Takes only null, which clears it","valueName":"null"},{"name":"salvage-value-value","description":"The value one unit keeps at the end of its useful life: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --salvage-value-iso-code","valueName":"value"},{"name":"salvage-value-iso-code","description":"The value one unit keeps at the end of its useful life: the value's ISO 4217 currency code, given with --salvage-value-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"simple-cost-basis","description":"A single cost for one unit, which clears the cost components and cannot be sent together with them. Takes only null, which clears it","valueName":"null"},{"name":"simple-cost-basis-value","description":"A single cost for one unit, which clears the cost components and cannot be sent together with them: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --simple-cost-basis-iso-code","valueName":"value"},{"name":"simple-cost-basis-iso-code","description":"A single cost for one unit, which clears the cost components and cannot be sent together with them: the value's ISO 4217 currency code, given with --simple-cost-basis-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"tariffs","description":"The import duty paid on one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"tariffs-value","description":"The import duty paid on one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --tariffs-iso-code","valueName":"value"},{"name":"tariffs-iso-code","description":"The import duty paid on one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --tariffs-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"tax","description":"The tax paid on one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"tax-value","description":"The tax paid on one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --tax-iso-code","valueName":"value"},{"name":"tax-iso-code","description":"The tax paid on one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --tax-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"useful-life","description":"The number of months one unit is depreciated over, from 1 to 480, 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-value","description":"How much the adjustment changes the cost basis by, in the asset's cost currency, which must be greater than zero: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --amount-iso-code","valueName":"value"},{"name":"amount-iso-code","description":"How much the adjustment changes the cost basis by, in the asset's cost currency, which must be greater than zero: the value's ISO 4217 currency code, given with --amount-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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. Takes only null, which clears it","valueName":"null"},{"name":"sale-price-value","description":"What the customer paid for the asset: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --sale-price-iso-code","valueName":"value"},{"name":"sale-price-iso-code","description":"What the customer paid for the asset: the value's ISO 4217 currency code, given with --sale-price-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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, and cannot be null","valueName":"uuid"},{"name":"date","description":"The day the segment's owner took ownership, which cannot be null or in the future","valueName":"value"},{"name":"sale-price","description":"What the owner paid for the asset, which cannot be negative. Takes only null, which clears it","valueName":"null"},{"name":"sale-price-value","description":"What the owner paid for the asset: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --sale-price-iso-code","valueName":"value"},{"name":"sale-price-iso-code","description":"What the owner paid for the asset: the value's ISO 4217 currency code, given with --sale-price-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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, left out when it was not sold, and refused even as null for an asset a customer owns. Takes only null, which clears it","valueName":"null"},{"name":"disposal-price-value","description":"What the scrapped asset was sold for, left out when it was not sold, and refused even as null for an asset a customer owns: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --disposal-price-iso-code","valueName":"value"},{"name":"disposal-price-iso-code","description":"What the scrapped asset was sold for, left out when it was not sold, and refused even as null for an asset a customer owns: the value's ISO 4217 currency code, given with --disposal-price-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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":"charge","summary":"Charge commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get charges","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, and 100 when left out","valueName":"number"},{"name":"sort-by","description":"The field to sort by","valueName":"value","values":["project","customer","label","totalPrice","servicePeriodStart","expectedBillableDate","status","item"]},{"name":"sort-order","description":"The sort direction, and ASC when left out","valueName":"value","values":["ASC","DESC"]},{"name":"search","description":"Text to find in the charge's label, its project's name, its customer's name, or its item's SKU or name, and a number also finds a charge with exactly that total price","valueName":"value"},{"name":"status","description":"The one status to list: PLANNED, BILLABLE, INVOICED or CANCELLED","valueName":"value","values":["BILLABLE","CANCELLED","INVOICED","PLANNED"]},{"name":"customers","description":"The customers whose charges to list, each named by its ID or its key","valueName":"value","repeatable":true},{"name":"for-projects-without-customer","description":"True to list the charges of projects that have no customer. With customers it adds them to those customers' charges, and without customers it lists only them"},{"name":"projects","description":"The projects whose charges to list, each named by its ID or its key","valueName":"value","repeatable":true},{"name":"bill-date-start","description":"A day, and only charges whose expectedBillableDate is on or after it are listed","valueName":"value"},{"name":"bill-date-end","description":"A day, and only charges whose expectedBillableDate is on or before it are listed","valueName":"value"},{"name":"amount-min","description":"An amount, and only charges whose total price is at least it are listed","valueName":"value"},{"name":"amount-max","description":"An amount, and only charges whose total price is at most it are listed","valueName":"value"},{"name":"trigger-types","description":"The trigger types to list: TIME, MANUAL or EVENT","valueName":"value","repeatable":true},{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"cancel","summary":"Cancel charge","runs":true,"flags":[{"name":"cancellation-reason","description":"Why the charge is cancelled, kept exactly as sent and 4,096 characters or less, or null for no reason. Cancelling a cancelled charge again replaces its reason with a different one sent, and null keeps the reason it has","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":"mark-billable","summary":"Mark charge billable","runs":true,"flags":[{"name":"billing-eligible-date","description":"The day the charge became billable, which is required and does not change its expectedBillableDate","valueName":"value"},{"name":"quantity","description":"The number of units to bill now, from 1 to the charge's quantity, and a smaller number splits the charge in two","valueName":"number"},{"name":"service-period-end","description":"The last day of the period a milestone charge covers, on or after servicePeriodStart. It replaces and is ignored the same way as servicePeriodStart","valueName":"value"},{"name":"service-period-start","description":"The first day of the period a milestone charge covers. On a milestone charge it replaces the charge's start, and omitting it leaves the charge with no start. A periodic charge ignores it","valueName":"value"},{"name":"total-price-override","description":"The amount to bill now, which is required when a FIXED charge is split, must be in the charge's currency, is from 0 to the charge's total price, and is refused when the charge is not split or is priced PER_UNIT. Takes only null, which clears it","valueName":"null"},{"name":"total-price-override-value","description":"The amount to bill now, which is required when a FIXED charge is split, must be in the charge's currency, is from 0 to the charge's total price, and is refused when the charge is not split or is priced PER_UNIT: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --total-price-override-iso-code","valueName":"value"},{"name":"total-price-override-iso-code","description":"The amount to bill now, which is required when a FIXED charge is split, must be in the charge's currency, is from 0 to the charge's total price, and is refused when the charge is not split or is priced PER_UNIT: the value's ISO 4217 currency code, given with --total-price-override-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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":"mark-not-billable","summary":"Mark charge not billable","runs":true,"flags":[{"name":"expected-billable-date","description":"The new day a periodic charge is planned to become billable, or omitted to keep the day it has. A milestone charge, and a charge that is already planned, keep their day","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":"revert-cancellation","summary":"Revert charge cancellation","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]}]},{"name":"contact","summary":"Contact commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get contacts","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, and 100 when left out","valueName":"number"},{"name":"sort-by","description":"The field to sort by","valueName":"value","values":["name","email","phone","title","customer","lastUpdatedAt"]},{"name":"sort-order","description":"The sort direction, and ASC when left out","valueName":"value","values":["ASC","DESC"]},{"name":"archived","description":"Whether to return unarchived records, archived records, or all of them, and false when left out","valueName":"value","values":["all","false","true"]},{"name":"customer-ids","description":"The IDs of the customers whose contacts to return","valueName":"uuid","repeatable":true},{"name":"search","description":"Text to match against a contact's first name, last name, email, phone, title, comments, or customer name, in any case","valueName":"value"},{"name":"email","description":"The email address of the contacts to return, matched exactly in any case","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 contact","runs":true,"flags":[{"name":"comments","description":"A note about the contact","valueName":"value"},{"name":"customer-id","description":"The ID of the customer the contact works for","valueName":"uuid"},{"name":"email","description":"The contact's email address","valueName":"value"},{"name":"first-name","description":"The contact's first name","valueName":"value"},{"name":"last-name","description":"The contact's last name","valueName":"value"},{"name":"phone","description":"The contact's phone number","valueName":"value"},{"name":"title","description":"The contact's job title","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 contact","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 contact","runs":true,"flags":[{"name":"comments","description":"A note about the contact, or null to clear it","valueName":"value"},{"name":"customer-id","description":"The ID of the customer the contact works for, which cannot be cleared","valueName":"uuid"},{"name":"email","description":"The contact's email address, or null to clear it","valueName":"value"},{"name":"first-name","description":"The contact's first name, which cannot be cleared","valueName":"value"},{"name":"is-archived","description":"Whether the contact is archived, and cannot be null","negatable":true},{"name":"last-name","description":"The contact's last name, which cannot be cleared","valueName":"value"},{"name":"phone","description":"The contact's phone number, or null to clear it","valueName":"value"},{"name":"title","description":"The contact's job title, or null to clear it","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":"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, and 100 when left out","valueName":"number"},{"name":"sort-by","description":"The field to sort by","valueName":"value","values":["name","locationCount","assetCount","assetsAtLocation"]},{"name":"sort-order","description":"The sort direction, and ASC when left out","valueName":"value","values":["ASC","DESC"]},{"name":"archived","description":"Whether to return unarchived records, archived records, or all of them, and false when left out","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 integration 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, ignored when shorter than three characters","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","description":"The person who receives the customer's invoices. Takes only null, which clears it","valueName":"null"},{"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","description":"The person who receives the customer's invoices. Takes only null, which clears it","valueName":"null"},{"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":"exchange-group","summary":"Exchange group commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"List exchange groups","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, and 100 when left out","valueName":"number"},{"name":"sort-by","description":"The field to sort by","valueName":"value","values":["exchangeNumber","status"]},{"name":"sort-order","description":"The sort direction, and ASC when left out","valueName":"value","values":["ASC","DESC"]},{"name":"search","description":"Text to find in the exchange's number, its status, or the names and SKUs of its orders' items","valueName":"value"},{"name":"exchange-group-keys","description":"The keys of the exchanges to list, and an exchange named here or in exchangeGroupIds is listed","valueName":"value","repeatable":true},{"name":"exchange-group-ids","description":"The IDs of the exchanges to list, and an exchange named here or in exchangeGroupKeys is listed","valueName":"uuid","repeatable":true},{"name":"statuses","description":"The statuses to list, as the exchange's status field spells them","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 exchange group","runs":true,"flags":[{"name":"fulfillment-order-contact-id","description":"The ID of the contact the order is for, or null","valueName":"uuid"},{"name":"fulfillment-order-file-ids","description":"The IDs of uploaded files to attach to the order, or null","valueName":"uuid","repeatable":true},{"name":"fulfillment-order-from-location-id","description":"The ID of the location the order ships from","valueName":"uuid"},{"name":"fulfillment-order-item","description":"The order's line items, from 1 to 50","valueName":"itemId=,requestedQuantity=","repeatable":true},{"name":"fulfillment-order-order-notes","description":"A note about the order, or null","valueName":"value"},{"name":"fulfillment-order-project-id","description":"The ID of the project the order fills, or null when it fills none","valueName":"uuid"},{"name":"fulfillment-order-promise-delivery-date","description":"The day the order is promised to arrive, or null","valueName":"value"},{"name":"fulfillment-order-promise-ship-date","description":"The day the order is promised to ship, or null","valueName":"value"},{"name":"fulfillment-order-to-location-id","description":"The ID of the location the order ships to","valueName":"uuid"},{"name":"return-order-from-location-id","description":"The ID of the location the items are returned from","valueName":"uuid"},{"name":"return-order-item","description":"The order's lines, from 1 to 50 of them, each naming a different item","valueName":"itemId=,requestedQuantity=","repeatable":true},{"name":"return-order-order-notes","description":"A note about the order, where blank text is stored as null","valueName":"value"},{"name":"return-order-promise-delivery-date","description":"The day the items are promised to arrive","valueName":"value"},{"name":"return-order-promise-ship-date","description":"The day the items are promised to ship","valueName":"value"},{"name":"return-order-return-reason","description":"A description of why the items are coming back, which is required when returnType is OTHER","valueName":"value"},{"name":"return-order-return-type","description":"Why the items are coming back","valueName":"value","values":["CUSTOMER_CANCELLATION","DAMAGED","DEFECTIVE","END_OF_SERVICE","INCORRECT_SPEC","NOT_NEEDED","OTHER","PROVISIONING","UPGRADE","WRONG_ITEM"]},{"name":"return-order-to-location-id","description":"The ID of the location the items are returned to","valueName":"uuid"},{"name":"return-order-transport-reference-details","description":"The carrier the items are returned with and its transport reference. Takes only null, which clears it","valueName":"null"},{"name":"return-order-transport-reference-details-carrier","description":"The carrier, or null when none is named","valueName":"value","values":["airterra","apc_postal","apg","aramex","asendia_us","australia_post","axlehire","better_trucks","borderguru","boxberry","bring","canada_post","cdl","chronopost","colissimo","collect_plus","correios_br","correos_espana","couriersplease","deutsche_post","dhl_benelux","dhl_ecommerce","dhl_express","dhl_germany","dhl_germany_c2c","dpd_de","dpd_uk","estafeta","fastway_australia","fedex","globegistics","gls_us","gophr","gso","hermes_germany_b2c","hermes_uk","hongkong_post","la_poste","lasership","lso","mondial_relay","new_zealand_post","nippon_express","ontrac","orangeds","other","parcel","parcelforce","passport","pcf","pitney_bowes","poste_italiane","posti","purolator","royal_mail","royal_mail_sf","rr_donnelley","russian_post","sendle","shippo","skypostal","stuart","swyft","uds","ups","usps","veho","x_delivery","yodel"]},{"name":"return-order-transport-reference-details-name","description":"The carrier's name, which is accepted only when carrier is other","valueName":"value"},{"name":"return-order-transport-reference-details-transport-reference","description":"The transportation reference sent to the 3PL, such as a bill of lading or carrier reference rather than a carrier tracking number, or null when it has none","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 exchange group","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"fulfillment","summary":"Fulfillment commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"create","summary":"Attach exchange group fulfillment order","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":"Detach exchange group fulfillment order","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{},{}],"subcommands":[]}]},{"name":"return-order","summary":"Return order commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"create","summary":"Attach exchange group return order","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":"Detach exchange group return order","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":"create","summary":"Upload file","runs":true,"flags":[{"name":"file-type","description":"The kind of file uploaded, ASSET_FILE for an asset, PURCHASE_ORDER_FILE for a purchase order or RETURN_ORDER_FILE for a return order, the only kinds the API uploads","valueName":"value","values":["ASSET_FILE","PURCHASE_ORDER_FILE","RETURN_ORDER_FILE"]},{"name":"for-entity","description":"The ID of the asset, purchase order or return order the file is attached to, which fileType names the kind of","valueName":"uuid"},{"name":"is-public","description":"Whether any organization's API key may download the file, sent as true or false in any case, and false when left out"},{"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":"fulfillment","summary":"Fulfillment commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"List fulfillment orders","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, and 100 when left out","valueName":"number"},{"name":"sort-by","description":"The field to sort by","valueName":"value","values":["fulfillmentOrderNumber","status","promiseShipDate","promiseDeliveryDate","cycleTime"]},{"name":"sort-order","description":"The sort direction, and ASC when left out","valueName":"value","values":["ASC","DESC"]},{"name":"search","description":"Text to find in the order's number, its status, its locations' names, or its items' names and SKUs","valueName":"value"},{"name":"fulfillment-order-keys","description":"The keys of the fulfillment orders to list, and an order named here or in fulfillmentOrderIds is listed","valueName":"value","repeatable":true},{"name":"fulfillment-order-ids","description":"The IDs of the fulfillment orders to list, and an order named here or in fulfillmentOrderKeys is listed","valueName":"uuid","repeatable":true},{"name":"project-ids","description":"The IDs of projects, and orders for one of them are listed","valueName":"uuid","repeatable":true},{"name":"statuses","description":"The statuses to list","valueName":"value","repeatable":true},{"name":"from-location-ids","description":"The IDs of locations, and orders shipping from one of them are listed, as are orders any other from filter matches","valueName":"uuid","repeatable":true},{"name":"to-location-ids","description":"The IDs of locations, and orders shipping to one of them are listed, as are orders any other to filter matches","valueName":"uuid","repeatable":true},{"name":"from-customer-ids","description":"The IDs of customers, and orders shipping from a location assigned to one of them are listed, as are orders any other from filter matches","valueName":"uuid","repeatable":true},{"name":"to-customer-ids","description":"The IDs of customers, and orders shipping to a location assigned to one of them are listed, as are orders any other to filter matches","valueName":"uuid","repeatable":true},{"name":"from-location-company-types","description":"The kind of site listed orders ship from, a CUSTOMER site or one of the organization's own MANUFACTURER sites, naming both filters nothing, and an order any other from filter matches is listed too","valueName":"value","repeatable":true},{"name":"to-location-company-types","description":"The kind of site listed orders ship to, a CUSTOMER site or one of the organization's own MANUFACTURER sites, naming both filters nothing, and an order any other to filter matches is listed too","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 fulfillment order","runs":true,"flags":[{"name":"contact-id","description":"The ID of the contact the order is for, or null","valueName":"uuid"},{"name":"file-ids","description":"The IDs of uploaded files to attach to the order, or null","valueName":"uuid","repeatable":true},{"name":"from-location-id","description":"The ID of the location the order ships from","valueName":"uuid"},{"name":"item","description":"The order's line items, from 1 to 50","valueName":"itemId=,requestedQuantity=","repeatable":true},{"name":"order-notes","description":"A note about the order, or null","valueName":"value"},{"name":"project-id","description":"The ID of the project the order fills, or null when it fills none","valueName":"uuid"},{"name":"promise-delivery-date","description":"The day the order is promised to arrive, or null","valueName":"value"},{"name":"promise-ship-date","description":"The day the order is promised to ship, or null","valueName":"value"},{"name":"to-location-id","description":"The ID of the location the order ships to","valueName":"uuid"},{"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 fulfillment order","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 fulfillment order","runs":true,"flags":[{"name":"contact-id","description":"The ID of the contact the order is for, or null to clear it","valueName":"uuid"},{"name":"from-location-id","description":"The ID of the location the order ships from, which cannot be cleared","valueName":"uuid"},{"name":"item","description":"The order's full set of line items, from 1 to 50, replacing the lines it had","valueName":"itemId=,requestedQuantity=","repeatable":true},{"name":"order-notes","description":"A note about the order, or null to clear it, and the one field an order that left draft accepts when sent alone, unless it ships from a 3PL location","valueName":"value"},{"name":"project-id","description":"The ID of the project the order fills, or null to fill none","valueName":"uuid"},{"name":"promise-delivery-date","description":"The day the order is promised to arrive, or null to clear it","valueName":"value"},{"name":"promise-ship-date","description":"The day the order is promised to ship, or null to clear it","valueName":"value"},{"name":"to-location-id","description":"The ID of the location the order ships to, which cannot be cleared","valueName":"uuid"},{"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":"cancel","summary":"Cancel fulfillment order","runs":true,"flags":[{"name":"cancellation-reason","description":"Why the order is cancelled","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":"close","summary":"Close fulfillment order","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 fulfillment order 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":"Unlink fulfillment order file","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{},{}],"subcommands":[]}]},{"name":"resync","summary":"Resync fulfillment order","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"send-to-3pl","summary":"Send fulfillment order to 3PL","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 fulfillment order 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 fulfillment order 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":"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, and 100 when left out","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, and ASC when left out","valueName":"value","values":["ASC","DESC"]},{"name":"archived","description":"Whether to return unarchived records, archived records, or all of them, and false when left out","valueName":"value","values":["all","false","true"]},{"name":"exclude-linked-integration","description":"QBO or NETSUITE, to leave out the items already linked to that integration","valueName":"value","values":["HUBSPOT","NETSUITE","NONE","QBO","SFDC"]},{"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, unique within your organization in any case","valueName":"value"},{"name":"sku","description":"The item's stock keeping unit, unique within your organization in any case","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, required for a BULK item and ignored for SERVICE and DEVICE items","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, and false when type is sent without it","negatable":true},{"name":"description","description":"The item's new description, or null to clear it","valueName":"value"},{"name":"field-position","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 and must be unique within your organization in any case","valueName":"value"},{"name":"sku","description":"The item's new stock keeping unit, which cannot be empty and must be unique within your organization in any case","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, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"allocated-indirect-value","description":"One unit's share of overhead, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --allocated-indirect-iso-code","valueName":"value"},{"name":"allocated-indirect-iso-code","description":"One unit's share of overhead, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --allocated-indirect-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"bill-of-materials","description":"The parts cost of one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"bill-of-materials-value","description":"The parts cost of one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --bill-of-materials-iso-code","valueName":"value"},{"name":"bill-of-materials-iso-code","description":"The parts cost of one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --bill-of-materials-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"cost-currency-code","description":"The ISO 4217 code every cost amount is denominated in, which must match the amounts sent and cannot be null. It is the only way to change the currency. A change keeps the held amounts and relabels them without conversion, and on an asset whose currency is locked it is refused","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"direct-labor-value","description":"The labor cost to build one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --direct-labor-iso-code","valueName":"value"},{"name":"direct-labor-iso-code","description":"The labor cost to build one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --direct-labor-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"freight-inbound","description":"The shipping cost to receive one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"freight-inbound-value","description":"The shipping cost to receive one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --freight-inbound-iso-code","valueName":"value"},{"name":"freight-inbound-iso-code","description":"The shipping cost to receive one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --freight-inbound-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"freight-outbound","description":"The shipping cost to deploy one unit, a deployment cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"freight-outbound-value","description":"The shipping cost to deploy one unit, a deployment cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --freight-outbound-iso-code","valueName":"value"},{"name":"freight-outbound-iso-code","description":"The shipping cost to deploy one unit, a deployment cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --freight-outbound-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"installation","description":"The cost to install one unit, a deployment cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"installation-value","description":"The cost to install one unit, a deployment cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --installation-iso-code","valueName":"value"},{"name":"installation-iso-code","description":"The cost to install one unit, a deployment cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --installation-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"interest","description":"The financing cost of one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"interest-value","description":"The financing cost of one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --interest-iso-code","valueName":"value"},{"name":"interest-iso-code","description":"The financing cost of one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --interest-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"salvage-value","description":"The value one unit keeps at the end of its useful life. Takes only null, which clears it","valueName":"null"},{"name":"salvage-value-value","description":"The value one unit keeps at the end of its useful life: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --salvage-value-iso-code","valueName":"value"},{"name":"salvage-value-iso-code","description":"The value one unit keeps at the end of its useful life: the value's ISO 4217 currency code, given with --salvage-value-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"simple-cost-basis","description":"A single cost for one unit, which clears the cost components and cannot be sent together with them. Takes only null, which clears it","valueName":"null"},{"name":"simple-cost-basis-value","description":"A single cost for one unit, which clears the cost components and cannot be sent together with them: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --simple-cost-basis-iso-code","valueName":"value"},{"name":"simple-cost-basis-iso-code","description":"A single cost for one unit, which clears the cost components and cannot be sent together with them: the value's ISO 4217 currency code, given with --simple-cost-basis-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"tariffs","description":"The import duty paid on one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"tariffs-value","description":"The import duty paid on one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --tariffs-iso-code","valueName":"value"},{"name":"tariffs-iso-code","description":"The import duty paid on one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --tariffs-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"tax","description":"The tax paid on one unit, a cost component, and sending it clears simpleCostBasis. Takes only null, which clears it","valueName":"null"},{"name":"tax-value","description":"The tax paid on one unit, a cost component, and sending it clears simpleCostBasis: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --tax-iso-code","valueName":"value"},{"name":"tax-iso-code","description":"The tax paid on one unit, a cost component, and sending it clears simpleCostBasis: the value's ISO 4217 currency code, given with --tax-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"useful-life","description":"The number of months one unit is depreciated over, from 1 to 480, 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, unique within its item","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 and must be unique within its item","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":"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, and 100 when left out","valueName":"number"},{"name":"sort-by","description":"The field to sort by","valueName":"value","values":["name","company","assetCount"]},{"name":"sort-order","description":"The sort direction, and ASC when left out","valueName":"value","values":["ASC","DESC"]},{"name":"archived","description":"Whether to return unarchived records, archived records, or all of them, and false when left out","valueName":"value","values":["all","false","true"]},{"name":"is-transient","description":"Whether to return permanent locations (false), transient locations (true), or both (all), and false when left out","valueName":"value","values":["all","false","true"]},{"name":"search","description":"Text to match against site, zone and customer names and site addresses, in any case","valueName":"value"},{"name":"for-customer-ids","description":"The IDs of the customers whose locations to return, where ORGANIZATION stands for your organization's own locations","valueName":"value","repeatable":true},{"name":"for-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 integration 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","description":"The site's structured address. Takes only null, which clears it","valueName":"null"},{"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, which a site passes to each of its zones without isInventoryOverride","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, unique in any case among your organization's sites for the same customer or among a site's zones, and never shared by a site and its zones","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","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","description":"The site's structured address, which a zone refuses. Takes only null, which clears it","valueName":"null"},{"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, which a site refuses","valueName":"uuid"},{"name":"customer-id","description":"The ID of the customer to assign a site to, or null for your organization's own site, which a zone refuses","valueName":"uuid"},{"name":"description","description":"A free-form description of a zone, which a site refuses","valueName":"value"},{"name":"is-archived","description":"Whether the location is archived, and archiving or unarchiving a site does the same to all of its zones","negatable":true},{"name":"is-inventory","description":"Whether assets at the location count as inventory for reporting, which a site passes to each of its zones without isInventoryOverride","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, and which becomes true when a zone is sent isInventory without it","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, and which a zone refuses","negatable":true},{"name":"name","description":"The location's display name, unique in any case among your organization's sites for the same customer or among a site's zones, never shared by a site and its zones, and taken from the address instead for a transient site with an address","valueName":"value"},{"name":"type","description":"SITE for a site, or ZONE for a zone within a site, and must be the location's current type, since a type cannot be changed","valueName":"value","values":["SITE","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, and false when left out","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":"meta","summary":"Meta commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"payment-terms","summary":"Payment terms commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get payment terms","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]}]}]},{"name":"note","summary":"Note commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"get","summary":"Get note","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 note","runs":true,"flags":[{"name":"content","description":"The note's new text, 1 to 2,000 characters","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":"delete","summary":"Delete note","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]}]},{"name":"project","summary":"Project commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get projects","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, and 100 when left out","valueName":"number"},{"name":"sort-by","description":"The field to sort by","valueName":"value","values":["name","startOn","endOn","workflow"]},{"name":"sort-order","description":"The sort direction, and ASC when left out","valueName":"value","values":["ASC","DESC"]},{"name":"archived","description":"Whether to return unarchived records, archived records, or all of them, and false when left out","valueName":"value","values":["all","false","true"]},{"name":"search","description":"Text of three or more characters, with shorter text ignored, to find in the project's name or description, its customer's name, its line items' locations, the names of the asset-carrying items its line items ask for, or the items of the assets it holds","valueName":"value"},{"name":"customer-ids","description":"The IDs of the customers whose projects to list","valueName":"uuid","repeatable":true},{"name":"item-ids","description":"The IDs of the items whose projects to list, which are the projects with a line item for the item when it carries assets, or holding one of its assets","valueName":"uuid","repeatable":true},{"name":"project-ids","description":"The IDs of the projects to list","valueName":"uuid","repeatable":true},{"name":"location-ids","description":"The IDs of the locations whose projects to list, which are the projects with a line item at the location or with it as their default location","valueName":"uuid","repeatable":true},{"name":"statuses","description":"The statuses to list: UPCOMING, ACTIVE, PAST, or DATE_RANGE_INCOMPLETE for a project missing a start or an end","valueName":"value","repeatable":true},{"name":"start-by","description":"A day, and only projects that start on or before it are listed","valueName":"value"},{"name":"end-by","description":"A day, and only projects that end on or before it are listed","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 project","runs":true,"flags":[{"name":"contract-signed-on","description":"The day the contract was signed","valueName":"value"},{"name":"customer-id","description":"The ID of the customer the project is for","valueName":"uuid"},{"name":"default-location-id","description":"The ID of the project's default location","valueName":"uuid"},{"name":"description","description":"The project's description","valueName":"value"},{"name":"end-on","description":"The day the project ends","valueName":"value"},{"name":"file-ids","description":"The IDs of uploaded files to attach to the project","valueName":"uuid","repeatable":true},{"name":"inherit-previous-line-items","description":"Whether to copy the line items of the project this one renews, which applies only when previousProjectId is sent","negatable":true},{"name":"initial-workflow-stage-id","description":"The ID of the workflow stage the project starts on, which defaults to the workflow's first stage","valueName":"uuid"},{"name":"install-date","description":"The day of the installation","valueName":"value"},{"name":"line-item","description":"The project's line items, each an item the project sells or provides as a service. Takes activationDate=, aggregationKey=, billingFrequency=, chargeFrequency=, chargeSchedule=, details=, endOn=, fixedPrice=, fixedPrice.amount=, fixedPrice.isoCode=, id=, invoiceFrequency=, invoiceMode=, itemId=, locationId=, milestonePhases=, pricingMode=, quantity=, startOn=, totalOverride=, totalOverride.amount=, totalOverride.isoCode=, transactionType=, unitPrice=, unitPrice.amount=, unitPrice.isoCode=","valueName":"field=value,...","repeatable":true},{"name":"name","description":"The project's name, which no other project in the organization may share, ignoring case","valueName":"value"},{"name":"previous-project-id","description":"The ID of the project this one renews","valueName":"uuid"},{"name":"start-on","description":"The day the project starts","valueName":"value"},{"name":"total-contract-value","description":"The contract's total value. Takes only null, which clears it","valueName":"null"},{"name":"total-contract-value-value","description":"The contract's total value: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --total-contract-value-iso-code","valueName":"value"},{"name":"total-contract-value-iso-code","description":"The contract's total value: the value's ISO 4217 currency code, given with --total-contract-value-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"workflow-id","description":"The ID of the workflow to put the project on. A project created without one has no workflow","valueName":"uuid"},{"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 project","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 project","runs":true,"flags":[{"name":"acceptance-date","description":"The day the customer accepted the project","valueName":"value"},{"name":"billing-address","description":"The billing address the project's invoices use in place of the customer's","valueName":"value"},{"name":"billing-contact-email","description":"The billing contact email the project's invoices use in place of the customer's","valueName":"value"},{"name":"billing-contact-name","description":"The billing contact name the project's invoices use in place of the customer's","valueName":"value"},{"name":"billing-contact-phone","description":"The billing contact phone number the project's invoices use in place of the customer's","valueName":"value"},{"name":"contract-signed-on","description":"The day the contract was signed","valueName":"value"},{"name":"customer-id","description":"The ID of the customer the project is for","valueName":"uuid"},{"name":"default-location-id","description":"The ID of the project's default location","valueName":"uuid"},{"name":"description","description":"The project's description","valueName":"value"},{"name":"discount","description":"The discount applied to the project. Takes only null, which clears it","valueName":"null"},{"name":"discount-value","description":"The discount applied to the project: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --discount-iso-code","valueName":"value"},{"name":"discount-iso-code","description":"The discount applied to the project: the value's ISO 4217 currency code, given with --discount-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"end-on","description":"The day the project ends","valueName":"value"},{"name":"go-live-date","description":"The day the project goes live","valueName":"value"},{"name":"install-date","description":"The day of the installation","valueName":"value"},{"name":"is-archived","description":"Whether the project is archived","negatable":true},{"name":"line-item","description":"The project's line items. The list sent replaces the project's line items. Takes activationDate=, aggregationKey=, billingFrequency=, chargeFrequency=, chargeSchedule=, details=, endOn=, fixedPrice=, fixedPrice.amount=, fixedPrice.isoCode=, id=, invoiceFrequency=, invoiceMode=, itemId=, locationId=, milestonePhases=, pricingMode=, quantity=, startOn=, totalOverride=, totalOverride.amount=, totalOverride.isoCode=, transactionType=, unitPrice=, unitPrice.amount=, unitPrice.isoCode=","valueName":"field=value,...","repeatable":true},{"name":"memo","description":"The memo new invoices for the project carry","valueName":"value"},{"name":"name","description":"The project's new name, which no other project in the organization may share, ignoring case","valueName":"value"},{"name":"payment-term","description":"The project's payment term, named by the ID or the label the payment term list returns","valueName":"value"},{"name":"previous-project-id","description":"The ID of the project this one renews","valueName":"uuid"},{"name":"purchase-order-number","description":"The customer's purchase order number, which new invoices for the project carry","valueName":"value"},{"name":"site-visit-date","description":"The day of the site visit","valueName":"value"},{"name":"start-on","description":"The day the project starts","valueName":"value"},{"name":"total-contract-value","description":"The contract's total value. Takes only null, which clears it","valueName":"null"},{"name":"total-contract-value-value","description":"The contract's total value: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --total-contract-value-iso-code","valueName":"value"},{"name":"total-contract-value-iso-code","description":"The contract's total value: the value's ISO 4217 currency code, given with --total-contract-value-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"training-date","description":"The day of the training","valueName":"value"},{"name":"workflow-id","description":"The ID of the workflow to put the project on","valueName":"uuid"},{"name":"workflow-stage-id","description":"The ID of the workflow stage to move the project to, which has to belong to the project's workflow","valueName":"uuid"},{"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":"line-item","summary":"Line item commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"update","summary":"Patch project line item","runs":true,"flags":[{"name":"activation-date","description":"The day a periodic line item's charge schedule is anchored on, from 1970-01-01 through 2099-12-31","valueName":"value"},{"name":"billing-frequency","description":"The line item's single billing cadence","valueName":"value","values":["ANNUALLY","BIENNIALLY","BIWEEKLY","DAILY","MONTHLY","ONCE","QUADRENNIALLY","QUARTERLY","QUINQUENNIALLY","SEMIANNUALLY","TRIENNIALLY","WEEKLY"]},{"name":"charge-frequency","description":"How often a periodic line item creates a charge, and is refused unless chargeSchedule is PERIODIC","valueName":"value","values":["ANNUALLY","BIENNIALLY","BIWEEKLY","DAILY","MONTHLY","ONCE","QUADRENNIALLY","QUARTERLY","QUINQUENNIALLY","SEMIANNUALLY","TRIENNIALLY","WEEKLY"]},{"name":"charge-mode","description":"CONFIRMED when activationDate is sent, or PENDING when it is null, and a MILESTONE line item is CONFIRMED with no activationDate","valueName":"value","values":["CONFIRMED","PENDING"]},{"name":"charge-schedule","description":"PERIODIC when charges recur at a regular frequency, or MILESTONE when each charge follows a project milestone","valueName":"value","values":["MILESTONE","PERIODIC"]},{"name":"charge","description":"The line item's whole charge list, which replaces the charges it has, or omitted to leave them as they are. An INVOICED charge must stay in the list, because leaving it out is refused, and keeps its stored values whatever the list sends. Takes expectedBillableDate=, id=, isCustomModified=, label=, pricingMode=, quantity=, sequence=, servicePeriodEnd=, servicePeriodStart=, status=, totalPrice.amount=, totalPrice.isoCode=, triggerType=, unitPrice=, unitPrice.amount=, unitPrice.isoCode=","valueName":"field=value,...","repeatable":true},{"name":"details","description":"A free-form note about the line item, 65,536 characters or less","valueName":"value"},{"name":"fixed-price","description":"The flat price when pricingMode is FIXED, and is not sent together with unitPrice. Takes only null, which clears it","valueName":"null"},{"name":"fixed-price-value","description":"The flat price when pricingMode is FIXED, and is not sent together with unitPrice: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --fixed-price-iso-code","valueName":"value"},{"name":"fixed-price-iso-code","description":"The flat price when pricingMode is FIXED, and is not sent together with unitPrice: the value's ISO 4217 currency code, given with --fixed-price-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"regenerate-charges","description":"True to replace the line item's charges with the schedule its billing plan produces, and is not sent together with charges. A periodic plan needs its dates and its cadence, and generation is refused once a charge is INVOICED","negatable":true},{"name":"invoice-frequency","description":"How often a periodic line item's charges are invoiced, which is never more often than chargeFrequency","valueName":"value","values":["ANNUALLY","BIENNIALLY","BIWEEKLY","DAILY","MONTHLY","ONCE","QUADRENNIALLY","QUARTERLY","QUINQUENNIALLY","SEMIANNUALLY","TRIENNIALLY","WEEKLY"]},{"name":"invoice-mode","description":"ADVANCE to invoice a period before it starts, or ARREARS to invoice it after it ends, and is refused unless chargeSchedule is PERIODIC","valueName":"value","values":["ADVANCE","ARREARS"]},{"name":"item-id","description":"The catalog item the line item is for","valueName":"uuid"},{"name":"location-id","description":"The location the line item is for","valueName":"uuid"},{"name":"milestone-phases","description":"The named phases of a milestone line item and each one's share of its total. Takes only null, which clears it","valueName":"null"},{"name":"milestone-phase","description":"The phases, in order","valueName":"name=,percentage=","repeatable":true},{"name":"milestone-phases-mode","description":"PERCENTAGE, the only way a phase's share is expressed","valueName":"value"},{"name":"pricing-mode","description":"PER_UNIT to charge the unit price for each unit, or FIXED to charge the fixed price whatever the quantity","valueName":"value","values":["FIXED","PER_UNIT"]},{"name":"quantity","description":"The number of units the line item covers, which is zero or more","valueName":"number"},{"name":"total-override","description":"A negotiated total for a periodic line item that replaces the computed one, in the project's currency. Takes only null, which clears it","valueName":"null"},{"name":"total-override-value","description":"A negotiated total for a periodic line item that replaces the computed one, in the project's currency: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --total-override-iso-code","valueName":"value"},{"name":"total-override-iso-code","description":"A negotiated total for a periodic line item that replaces the computed one, in the project's currency: the value's ISO 4217 currency code, given with --total-override-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"transaction-type","description":"SALE to sell the item, which only a physical item allows, or SERVICE to provide it as a service","valueName":"value","values":["SALE","SERVICE"]},{"name":"unit-price","description":"The price of one unit for each charge, and is not sent together with fixedPrice. Takes only null, which clears it","valueName":"null"},{"name":"unit-price-value","description":"The price of one unit for each charge, and is not sent together with fixedPrice: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --unit-price-iso-code","valueName":"value"},{"name":"unit-price-iso-code","description":"The price of one unit for each charge, and is not sent together with fixedPrice: the value's ISO 4217 currency code, given with --unit-price-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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":"charges","summary":"Charges commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get project line item charges","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{},{}],"subcommands":[]}]}]},{"name":"note","summary":"Note commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get project notes","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 project note","runs":true,"flags":[{"name":"content","description":"The note's text, 1 to 2,000 characters","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":"purchase-order","summary":"Purchase order commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"List purchase orders","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, and 100 when left out","valueName":"number"},{"name":"sort-by","description":"The field to sort by","valueName":"value","values":["purchaseOrderNumber","status","promiseShipDate","promiseDeliveryDate"]},{"name":"sort-order","description":"The sort direction, and ASC when left out","valueName":"value","values":["ASC","DESC"]},{"name":"search","description":"Text to find in the order's number, its status, its supplier's name, its locations' names, or its items' names and SKUs","valueName":"value"},{"name":"purchase-order-keys","description":"The keys of the purchase orders to list, and an order named here or in purchaseOrderIds is listed","valueName":"value","repeatable":true},{"name":"purchase-order-ids","description":"The IDs of the purchase orders to list, and an order named here or in purchaseOrderKeys is listed","valueName":"uuid","repeatable":true},{"name":"supplier-ids","description":"The IDs of suppliers, and orders placed with one of them are listed","valueName":"uuid","repeatable":true},{"name":"statuses","description":"The statuses to list, as the order's status field spells them","valueName":"value","repeatable":true},{"name":"from-location-ids","description":"The IDs of locations, and orders shipping from one of them are listed, as are orders any other from filter matches","valueName":"uuid","repeatable":true},{"name":"to-location-ids","description":"The IDs of locations, and orders delivered to one of them are listed, as are orders any other to filter matches","valueName":"uuid","repeatable":true},{"name":"from-customer-ids","description":"The IDs of customers, and orders shipping from a location assigned to one of them are listed, as are orders any other from filter matches","valueName":"uuid","repeatable":true},{"name":"to-customer-ids","description":"The IDs of customers, and orders delivered to a location assigned to one of them are listed, as are orders any other to filter matches","valueName":"uuid","repeatable":true},{"name":"from-location-company-types","description":"The kind of site listed orders ship from, a CUSTOMER site or one of the organization's own MANUFACTURER sites, naming both filters nothing, and an order any other from filter matches is listed too","valueName":"value","repeatable":true},{"name":"to-location-company-types","description":"The kind of site listed orders are delivered to, a CUSTOMER site or one of the organization's own MANUFACTURER sites, naming both filters nothing, and an order any other to filter matches is listed too","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 purchase order","runs":true,"flags":[{"name":"external-purchase-order-number","description":"The supplier's own number for the order, or null when it has none","valueName":"value"},{"name":"from-location-id","description":"The ID of the location the supplier ships from, or null when the supplier has no location on record","valueName":"uuid"},{"name":"item","description":"The order's lines, from 1 to 50 of them, each naming a different item","valueName":"itemId=,requestedQuantity=","repeatable":true},{"name":"order-notes","description":"A note about the order, where blank text is stored as null","valueName":"value"},{"name":"promise-delivery-date","description":"The day the supplier promised the order would arrive","valueName":"value"},{"name":"promise-ship-date","description":"The day the supplier promised to ship the order","valueName":"value"},{"name":"supplier-id","description":"The ID of the company the items are ordered from, which must be a supplier","valueName":"uuid"},{"name":"to-location-id","description":"The ID of the location the order is delivered to","valueName":"uuid"},{"name":"transport-reference-details","description":"The carrier the supplier ships the order with and its transport reference. Takes only null, which clears it","valueName":"null"},{"name":"transport-reference-details-carrier","description":"The carrier, or null when none is named","valueName":"value","values":["airterra","apc_postal","apg","aramex","asendia_us","australia_post","axlehire","better_trucks","borderguru","boxberry","bring","canada_post","cdl","chronopost","colissimo","collect_plus","correios_br","correos_espana","couriersplease","deutsche_post","dhl_benelux","dhl_ecommerce","dhl_express","dhl_germany","dhl_germany_c2c","dpd_de","dpd_uk","estafeta","fastway_australia","fedex","globegistics","gls_us","gophr","gso","hermes_germany_b2c","hermes_uk","hongkong_post","la_poste","lasership","lso","mondial_relay","new_zealand_post","nippon_express","ontrac","orangeds","other","parcel","parcelforce","passport","pcf","pitney_bowes","poste_italiane","posti","purolator","royal_mail","royal_mail_sf","rr_donnelley","russian_post","sendle","shippo","skypostal","stuart","swyft","uds","ups","usps","veho","x_delivery","yodel"]},{"name":"transport-reference-details-name","description":"The carrier's name, which is accepted only when carrier is other","valueName":"value"},{"name":"transport-reference-details-transport-reference","description":"The transportation reference sent to the 3PL, such as a bill of lading or carrier reference rather than a carrier tracking number, or null when it has none","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 purchase order","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 purchase order","runs":true,"flags":[{"name":"external-purchase-order-number","description":"The supplier's own number for the order, or null when it has none","valueName":"value"},{"name":"from-location-id","description":"The ID of the location the supplier ships from, or null when the supplier has no location on record","valueName":"uuid"},{"name":"item","description":"The 1 to 50 lines that replace the order's, each naming a different item","valueName":"itemId=,requestedQuantity=","repeatable":true},{"name":"order-notes","description":"A note about the order, which a request sending only the note can change after the order leaves draft, until any of it is received, it is cancelled, or it is sent to a 3PL","valueName":"value"},{"name":"promise-delivery-date","description":"The day the supplier promised the order would arrive","valueName":"value"},{"name":"promise-ship-date","description":"The day the supplier promised to ship the order","valueName":"value"},{"name":"supplier-id","description":"The ID of the company the items are ordered from, which must be a supplier","valueName":"uuid"},{"name":"to-location-id","description":"The ID of the location the order is delivered to, which cannot be cleared","valueName":"uuid"},{"name":"transport-reference-details","description":"The carrier the supplier ships the order with and its transport reference, where a field left out keeps its stored value and null clears all of them. Takes only null, which clears it","valueName":"null"},{"name":"transport-reference-details-carrier","description":"The carrier, or null when none is named","valueName":"value","values":["airterra","apc_postal","apg","aramex","asendia_us","australia_post","axlehire","better_trucks","borderguru","boxberry","bring","canada_post","cdl","chronopost","colissimo","collect_plus","correios_br","correos_espana","couriersplease","deutsche_post","dhl_benelux","dhl_ecommerce","dhl_express","dhl_germany","dhl_germany_c2c","dpd_de","dpd_uk","estafeta","fastway_australia","fedex","globegistics","gls_us","gophr","gso","hermes_germany_b2c","hermes_uk","hongkong_post","la_poste","lasership","lso","mondial_relay","new_zealand_post","nippon_express","ontrac","orangeds","other","parcel","parcelforce","passport","pcf","pitney_bowes","poste_italiane","posti","purolator","royal_mail","royal_mail_sf","rr_donnelley","russian_post","sendle","shippo","skypostal","stuart","swyft","uds","ups","usps","veho","x_delivery","yodel"]},{"name":"transport-reference-details-name","description":"The carrier's name, which is accepted only when carrier is other","valueName":"value"},{"name":"transport-reference-details-transport-reference","description":"The transportation reference sent to the 3PL, such as a bill of lading or carrier reference rather than a carrier tracking number, or null when it has none","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":"resync-3pl-files","summary":"Resync 3PL files","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"cancel","summary":"Cancel purchase order","runs":true,"flags":[{"name":"cancellation-reason","description":"Why the order is cancelled, which is required","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":"file","summary":"File commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get purchase order 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":"Unlink purchase order file","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{},{}],"subcommands":[]}]},{"name":"resync","summary":"Resync purchase order","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"send-to-3pl","summary":"Send purchase order to 3PL","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 purchase order 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 purchase order 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":"return-order","summary":"Return order commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"List return orders","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, and 100 when left out","valueName":"number"},{"name":"sort-by","description":"The field to sort by","valueName":"value","values":["returnOrderNumber","status","returnType","promiseShipDate","promiseDeliveryDate"]},{"name":"sort-order","description":"The sort direction, and ASC when left out","valueName":"value","values":["ASC","DESC"]},{"name":"search","description":"Text to find in the order's number, its status, its return type, its locations' names, or its items' names and SKUs","valueName":"value"},{"name":"return-order-keys","description":"The keys of the return orders to list, and an order named here or in returnOrderIds is listed","valueName":"value","repeatable":true},{"name":"return-order-ids","description":"The IDs of the return orders to list, and an order named here or in returnOrderKeys is listed","valueName":"uuid","repeatable":true},{"name":"types","description":"The return types to list, as the order's returnType field spells them","valueName":"value","repeatable":true},{"name":"statuses","description":"The statuses to list, as the order's status field spells them","valueName":"value","repeatable":true},{"name":"from-location-ids","description":"The IDs of locations, and orders returned from one of them are listed, as are orders any other from filter matches","valueName":"uuid","repeatable":true},{"name":"to-location-ids","description":"The IDs of locations, and orders returned to one of them are listed, as are orders any other to filter matches","valueName":"uuid","repeatable":true},{"name":"from-customer-ids","description":"The IDs of customers, and orders returned from a location assigned to one of them are listed, as are orders any other from filter matches","valueName":"uuid","repeatable":true},{"name":"to-customer-ids","description":"The IDs of customers, and orders returned to a location assigned to one of them are listed, as are orders any other to filter matches","valueName":"uuid","repeatable":true},{"name":"from-location-company-types","description":"The kind of site listed orders are returned from, a CUSTOMER site or one of the organization's own MANUFACTURER sites, naming both filters nothing, and an order any other from filter matches is listed too","valueName":"value","repeatable":true},{"name":"to-location-company-types","description":"The kind of site listed orders are returned to, a CUSTOMER site or one of the organization's own MANUFACTURER sites, naming both filters nothing, and an order any other to filter matches is listed too","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 return order","runs":true,"flags":[{"name":"from-location-id","description":"The ID of the location the items are returned from","valueName":"uuid"},{"name":"item","description":"The order's lines, from 1 to 50 of them, each naming a different item","valueName":"itemId=,requestedQuantity=","repeatable":true},{"name":"order-notes","description":"A note about the order, where blank text is stored as null","valueName":"value"},{"name":"promise-delivery-date","description":"The day the items are promised to arrive","valueName":"value"},{"name":"promise-ship-date","description":"The day the items are promised to ship","valueName":"value"},{"name":"return-reason","description":"A description of why the items are coming back, which is required when returnType is OTHER","valueName":"value"},{"name":"return-type","description":"Why the items are coming back","valueName":"value","values":["CUSTOMER_CANCELLATION","DAMAGED","DEFECTIVE","END_OF_SERVICE","INCORRECT_SPEC","NOT_NEEDED","OTHER","PROVISIONING","UPGRADE","WRONG_ITEM"]},{"name":"to-location-id","description":"The ID of the location the items are returned to","valueName":"uuid"},{"name":"transport-reference-details","description":"The carrier the items are returned with and its transport reference. Takes only null, which clears it","valueName":"null"},{"name":"transport-reference-details-carrier","description":"The carrier, or null when none is named","valueName":"value","values":["airterra","apc_postal","apg","aramex","asendia_us","australia_post","axlehire","better_trucks","borderguru","boxberry","bring","canada_post","cdl","chronopost","colissimo","collect_plus","correios_br","correos_espana","couriersplease","deutsche_post","dhl_benelux","dhl_ecommerce","dhl_express","dhl_germany","dhl_germany_c2c","dpd_de","dpd_uk","estafeta","fastway_australia","fedex","globegistics","gls_us","gophr","gso","hermes_germany_b2c","hermes_uk","hongkong_post","la_poste","lasership","lso","mondial_relay","new_zealand_post","nippon_express","ontrac","orangeds","other","parcel","parcelforce","passport","pcf","pitney_bowes","poste_italiane","posti","purolator","royal_mail","royal_mail_sf","rr_donnelley","russian_post","sendle","shippo","skypostal","stuart","swyft","uds","ups","usps","veho","x_delivery","yodel"]},{"name":"transport-reference-details-name","description":"The carrier's name, which is accepted only when carrier is other","valueName":"value"},{"name":"transport-reference-details-transport-reference","description":"The transportation reference sent to the 3PL, such as a bill of lading or carrier reference rather than a carrier tracking number, or null when it has none","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 return order","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 return order","runs":true,"flags":[{"name":"from-location-id","description":"The ID of the location the items are returned from, which cannot be cleared","valueName":"uuid"},{"name":"item","description":"The 1 to 50 lines that replace the order's, each naming a different item","valueName":"itemId=,requestedQuantity=","repeatable":true},{"name":"order-notes","description":"A note about the order, which a request sending only the note can change after the order leaves draft until it is received or cancelled, unless a 3PL runs its destination","valueName":"value"},{"name":"promise-delivery-date","description":"The day the items are promised to arrive","valueName":"value"},{"name":"promise-ship-date","description":"The day the items are promised to ship","valueName":"value"},{"name":"return-reason","description":"A description of why the items are coming back, which the order must have while its type is OTHER","valueName":"value"},{"name":"return-type","description":"Why the items are coming back, which cannot be cleared","valueName":"value","values":["CUSTOMER_CANCELLATION","DAMAGED","DEFECTIVE","END_OF_SERVICE","INCORRECT_SPEC","NOT_NEEDED","OTHER","PROVISIONING","UPGRADE","WRONG_ITEM"]},{"name":"to-location-id","description":"The ID of the location the items are returned to, which cannot be cleared","valueName":"uuid"},{"name":"transport-reference-details","description":"The carrier the items are returned with and its transport reference, where a field left out keeps its stored value and null clears all of them. Takes only null, which clears it","valueName":"null"},{"name":"transport-reference-details-carrier","description":"The carrier, or null when none is named","valueName":"value","values":["airterra","apc_postal","apg","aramex","asendia_us","australia_post","axlehire","better_trucks","borderguru","boxberry","bring","canada_post","cdl","chronopost","colissimo","collect_plus","correios_br","correos_espana","couriersplease","deutsche_post","dhl_benelux","dhl_ecommerce","dhl_express","dhl_germany","dhl_germany_c2c","dpd_de","dpd_uk","estafeta","fastway_australia","fedex","globegistics","gls_us","gophr","gso","hermes_germany_b2c","hermes_uk","hongkong_post","la_poste","lasership","lso","mondial_relay","new_zealand_post","nippon_express","ontrac","orangeds","other","parcel","parcelforce","passport","pcf","pitney_bowes","poste_italiane","posti","purolator","royal_mail","royal_mail_sf","rr_donnelley","russian_post","sendle","shippo","skypostal","stuart","swyft","uds","ups","usps","veho","x_delivery","yodel"]},{"name":"transport-reference-details-name","description":"The carrier's name, which is accepted only when carrier is other","valueName":"value"},{"name":"transport-reference-details-transport-reference","description":"The transportation reference sent to the 3PL, such as a bill of lading or carrier reference rather than a carrier tracking number, or null when it has none","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":"resync-3pl-files","summary":"Resync 3PL files","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"cancel","summary":"Cancel return order","runs":true,"flags":[{"name":"cancellation-reason","description":"Why the order is cancelled, which is required","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":"file","summary":"File commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get return order 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":"Unlink return order file","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{},{}],"subcommands":[]}]},{"name":"resync","summary":"Resync return order","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[{}],"subcommands":[]},{"name":"send-to-3pl","summary":"Send return order to 3PL","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 return order 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 return order 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":"shipment","summary":"Shipment commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"List shipments","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, and 100 when left out","valueName":"number"},{"name":"sort-by","description":"The field to sort by","valueName":"value","values":["shipmentNumber","shippingCostAmount","totalValue","status"]},{"name":"sort-order","description":"The sort direction, and ASC when left out","valueName":"value","values":["ASC","DESC"]},{"name":"status","description":"The one status to list: OPEN, SHIPPED, DELIVERED, RECEIVED or CANCELLED","valueName":"value","values":["CANCELLED","DELIVERED","OPEN","RECEIVED","SHIPPED"]},{"name":"shipment-type","description":"The one direction to list: INBOUND or OUTBOUND","valueName":"value","values":["INBOUND","OUTBOUND"]},{"name":"search","description":"Text to find in the shipment's number, its order numbers, its tracking number, its locations' names, or its items' names and SKUs","valueName":"value"},{"name":"fo-numbers","description":"The fulfillment order numbers whose shipments to list","valueName":"value","repeatable":true},{"name":"po-numbers","description":"The purchase order numbers whose shipments to list","valueName":"value","repeatable":true},{"name":"ro-numbers","description":"The return order numbers whose shipments to list","valueName":"value","repeatable":true},{"name":"location-ids","description":"The IDs of locations, and only shipments leaving from or going to one of them are listed","valueName":"uuid","repeatable":true},{"name":"from-location-ids","description":"The IDs of locations, and shipments leaving from one of them are listed, as are shipments any other from filter matches","valueName":"uuid","repeatable":true},{"name":"to-location-ids","description":"The IDs of locations, and shipments going to one of them are listed, as are shipments any other to filter matches","valueName":"uuid","repeatable":true},{"name":"from-customer-ids","description":"The IDs of customers, and shipments leaving from a location assigned to one of them are listed, as are shipments any other from filter matches","valueName":"uuid","repeatable":true},{"name":"to-customer-ids","description":"The IDs of customers, and shipments going to a location assigned to one of them are listed, as are shipments any other to filter matches","valueName":"uuid","repeatable":true},{"name":"from-location-company-types","description":"The kind of site listed shipments leave from, a CUSTOMER site or one of the organization's own MANUFACTURER sites, naming both filters nothing, and a shipment any other from filter matches is listed too","valueName":"value","repeatable":true},{"name":"to-location-company-types","description":"The kind of site listed shipments go to, a CUSTOMER site or one of the organization's own MANUFACTURER sites, naming both filters nothing, and a shipment any other to filter matches is listed too","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 shipment","runs":true,"flags":[{"name":"delivered-at","description":"When the shipment arrived, which cannot be before shippedAt, or null while it has not","valueName":"value"},{"name":"delivered-at-timezone","description":"The IANA time zone deliveredAt is recorded in","valueName":"value"},{"name":"expected-delivered-on","description":"The day the shipment is expected to arrive, which on an inbound shipment cannot be before expectedShippedOn","valueName":"value"},{"name":"expected-shipped-on","description":"The day the shipment is expected to leave","valueName":"value"},{"name":"from-location-id","description":"The ID of the location the shipment leaves from, which an outbound shipment requires","valueName":"uuid"},{"name":"fulfillment-order-number","description":"The number of the fulfillment order an outbound shipment fills, or null for none","valueName":"value"},{"name":"item","description":"The shipment's line items, from 1 to 100 of them","valueName":"externalReference=,itemId=,quantity=,serials=","repeatable":true},{"name":"purchase-order-number","description":"The number of the purchase order an inbound shipment fills, or null for none","valueName":"value"},{"name":"return-order-number","description":"The number of the return order an inbound shipment fills, or null for none","valueName":"value"},{"name":"shipment-note","description":"A note about the shipment","valueName":"value"},{"name":"shipment-type","description":"Whether the shipment is INBOUND to the organization or OUTBOUND from it","valueName":"value","values":["INBOUND","OUTBOUND"]},{"name":"shipped-at","description":"When the shipment left, or null while it has not","valueName":"value"},{"name":"shipped-at-timezone","description":"The IANA time zone shippedAt is recorded in","valueName":"value"},{"name":"shipping-cost","description":"What the shipment cost to send, which cannot be negative. Takes only null, which clears it","valueName":"null"},{"name":"shipping-cost-value","description":"What the shipment cost to send: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --shipping-cost-iso-code","valueName":"value"},{"name":"shipping-cost-iso-code","description":"What the shipment cost to send: the value's ISO 4217 currency code, given with --shipping-cost-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"to-location-id","description":"The ID of the location the shipment is going to","valueName":"uuid"},{"name":"tracking-number-details","description":"Who carries the shipment and its tracking number. Takes only null, which clears it","valueName":"null"},{"name":"tracking-number-details-carrier","description":"The carrier, or null when none is named","valueName":"value","values":["airterra","apc_postal","apg","aramex","asendia_us","australia_post","axlehire","better_trucks","borderguru","boxberry","bring","canada_post","cdl","chronopost","colissimo","collect_plus","correios_br","correos_espana","couriersplease","deutsche_post","dhl_benelux","dhl_ecommerce","dhl_express","dhl_germany","dhl_germany_c2c","dpd_de","dpd_uk","estafeta","fastway_australia","fedex","globegistics","gls_us","gophr","gso","hermes_germany_b2c","hermes_uk","hongkong_post","la_poste","lasership","lso","mondial_relay","new_zealand_post","nippon_express","ontrac","orangeds","other","parcel","parcelforce","passport","pcf","pitney_bowes","poste_italiane","posti","purolator","royal_mail","royal_mail_sf","rr_donnelley","russian_post","sendle","shippo","skypostal","stuart","swyft","uds","ups","usps","veho","x_delivery","yodel"]},{"name":"tracking-number-details-name","description":"The carrier's name, which is accepted only when carrier is other","valueName":"value"},{"name":"tracking-number-details-tracking-number","description":"The number the carrier tracks the shipment by, or null when it has none","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 shipment","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 shipment","runs":true,"flags":[{"name":"delivered-at","description":"When the shipment arrived, which cannot be before shippedAt","valueName":"value"},{"name":"delivered-at-timezone","description":"The IANA time zone deliveredAt is recorded in","valueName":"value"},{"name":"delivery-note","description":"The note written when the shipment was delivered","valueName":"value"},{"name":"expected-delivered-on","description":"The day the shipment is expected to arrive, which on an inbound shipment cannot be before expectedShippedOn","valueName":"value"},{"name":"expected-shipped-on","description":"The day the shipment is expected to leave","valueName":"value"},{"name":"from-location-id","description":"The ID of the location the shipment leaves from, which an outbound shipment cannot clear","valueName":"uuid"},{"name":"fulfillment-order-number","description":"The number of the fulfillment order an outbound shipment fills, or null for none","valueName":"value"},{"name":"item","description":"The 1 to 100 line items that replace the shipment's, where a line already on the shipment keeps its quantity when sent without one","valueName":"externalReference=,itemId=,quantity=,serials=","repeatable":true},{"name":"purchase-order-number","description":"The number of the purchase order an inbound shipment fills, or null for none","valueName":"value"},{"name":"receipt-note","description":"The note written when the shipment was received","valueName":"value"},{"name":"return-order-number","description":"The number of the return order an inbound shipment fills, or null for none","valueName":"value"},{"name":"shipment-note","description":"A note about the shipment","valueName":"value"},{"name":"shipped-at","description":"When the shipment left, which cannot be cleared and, on an outbound shipment, can only be corrected after it has shipped","valueName":"value"},{"name":"shipped-at-timezone","description":"The IANA time zone shippedAt is recorded in","valueName":"value"},{"name":"shipping-cost","description":"What the shipment cost to send, which cannot be negative. Takes only null, which clears it","valueName":"null"},{"name":"shipping-cost-value","description":"What the shipment cost to send: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --shipping-cost-iso-code","valueName":"value"},{"name":"shipping-cost-iso-code","description":"What the shipment cost to send: the value's ISO 4217 currency code, given with --shipping-cost-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"name":"to-location-id","description":"The ID of the location the shipment is going to, which cannot be cleared","valueName":"uuid"},{"name":"tracking-number-details","description":"Who carries the shipment and its tracking number, where a field left out keeps its stored value and null clears all of them. Takes only null, which clears it","valueName":"null"},{"name":"tracking-number-details-carrier","description":"The carrier, or null when none is named","valueName":"value","values":["airterra","apc_postal","apg","aramex","asendia_us","australia_post","axlehire","better_trucks","borderguru","boxberry","bring","canada_post","cdl","chronopost","colissimo","collect_plus","correios_br","correos_espana","couriersplease","deutsche_post","dhl_benelux","dhl_ecommerce","dhl_express","dhl_germany","dhl_germany_c2c","dpd_de","dpd_uk","estafeta","fastway_australia","fedex","globegistics","gls_us","gophr","gso","hermes_germany_b2c","hermes_uk","hongkong_post","la_poste","lasership","lso","mondial_relay","new_zealand_post","nippon_express","ontrac","orangeds","other","parcel","parcelforce","passport","pcf","pitney_bowes","poste_italiane","posti","purolator","royal_mail","royal_mail_sf","rr_donnelley","russian_post","sendle","shippo","skypostal","stuart","swyft","uds","ups","usps","veho","x_delivery","yodel"]},{"name":"tracking-number-details-name","description":"The carrier's name, which is accepted only when carrier is other","valueName":"value"},{"name":"tracking-number-details-tracking-number","description":"The number the carrier tracks the shipment by, or null when it has none","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":"cancel","summary":"Cancel shipment","runs":true,"flags":[{"name":"cancellation-reason","description":"Why the shipment is cancelled, which is required","valueName":"value"},{"name":"remove-linked-shipping-cost","description":"True to also remove the shipping cost recorded for the shipment","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":"deliver","summary":"Mark shipment as delivered","runs":true,"flags":[{"name":"delivered-at","description":"When the shipment arrived","valueName":"value"},{"name":"delivered-at-timezone","description":"The IANA time zone deliveredAt is recorded in","valueName":"value"},{"name":"delivery-location-id","description":"The ID of the location the shipment was delivered to","valueName":"uuid"},{"name":"delivery-note","description":"A note about the delivery","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":"receive","summary":"Mark inbound shipment as received","runs":true,"flags":[{"name":"item","description":"What arrived on each line","valueName":"externalReference=,itemId=,quantity=,serials=","repeatable":true},{"name":"receipt-note","description":"A note about the receipt","valueName":"value"},{"name":"receive-location-id","description":"The ID of the location the items were received at","valueName":"uuid"},{"name":"received-at","description":"When the items were received","valueName":"value"},{"name":"received-at-timezone","description":"The IANA time zone receivedAt is recorded in","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":"ship","summary":"Mark outbound shipment as shipped","runs":true,"flags":[{"name":"item","description":"What left on each line, with the serial numbers of the units tracked by serial","valueName":"externalReference=,itemId=,quantity=,serials=","repeatable":true},{"name":"ship-location-id","description":"The ID of the location the shipment left from","valueName":"uuid"},{"name":"shipment-note","description":"A note about the shipment","valueName":"value"},{"name":"shipped-at","description":"When the shipment left","valueName":"value"},{"name":"shipped-at-timezone","description":"The IANA time zone shippedAt is recorded in","valueName":"value"},{"name":"shipping-cost","description":"What the shipment cost to send, which cannot be negative. Takes only null, which clears it","valueName":"null"},{"name":"shipping-cost-value","description":"What the shipment cost to send: the exact value as a decimal string, which cannot be negative, sent with at most two decimal places, given with --shipping-cost-iso-code","valueName":"value"},{"name":"shipping-cost-iso-code","description":"What the shipment cost to send: the value's ISO 4217 currency code, given with --shipping-cost-value","valueName":"value","values":["CAD","EUR","GBP","USD"]},{"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":"tracking","summary":"Tracking commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get shipment tracking events","runs":true,"flags":[{"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, and the organization it acts in","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, and an update sends it, url, or both","valueName":"value"},{"name":"url","description":"The address the link points to, which cannot be empty, and an update sends it, name, or both","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":"workflow","summary":"Workflow commands","runs":false,"flags":[],"arguments":[],"subcommands":[{"name":"list","summary":"Get workflows","runs":true,"flags":[{"name":"json","description":"Print machine-readable output, which is the default when stdout is not a terminal"}],"arguments":[],"subcommands":[]},{"name":"get","summary":"Get workflow","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 what an agent should read first: defaults, counting, accepted values, error codes","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":[]}]}