Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.upstackdata.com/llms.txt

Use this file to discover all available pages before exploring further.

Manage your Upstack account from the command line. Wraps the /api/account endpoints — see the API reference and the Account group for full request/response shapes.

Subcommands

SubcommandWraps
showGET /api/account
renamePATCH /api/account
settings order showGET /api/account/settings/order
settings order setPUT /api/account/settings/order

show

Print the configured account as JSON — display name, creation date, active owners and admins, and the current subscription summary (when present).
upstack account show
Sample output:
{
  "accountName": "Upstack Data",
  "createdAt": "2025-08-12T18:22:11.034Z",
  "owners": [
    { "email": "founder@upstackdata.com", "firstName": "Alex", "lastName": "Owner" }
  ],
  "admins": [
    { "email": "ops@upstackdata.com", "firstName": "Sam", "lastName": "Admin" }
  ],
  "subscription": {
    "plan": {
      "name": "Growth",
      "billingFrequency": "monthly",
      "displayPrice": "$49/mo",
      "discountedDisplayPrice": "$39/mo",
      "currency": "USD",
      "discount": {
        "code": "LAUNCH20",
        "type": "percentage",
        "value": 20,
        "appliesForBillingIntervals": 6
      }
    },
    "status": "active",
    "currentPeriodEnd": "2026-06-12T00:00:00.000Z",
    "cancelAtPeriodEnd": false
  }
}
Required scope: account:read.

Rendering price after a discount

Render discountedDisplayPrice ?? displayPrice to match the web app’s billing page. v2 (Stripe-native) plans may omit discountedDisplayPrice even when a discount is present — fall back to displayPrice and surface the discount summary for context.

rename

Rename the configured account. Prints the current → new transition and prompts for confirmation; pass --yes (or -y) to skip.
upstack account rename --name "Upstack Data"
upstack account rename --name "Upstack Data" --yes
Required flags:
FlagDescription
--name <name>New account name. 1–100 chars after trim. Control / zero-width / bidi characters rejected; unicode letters, marks, digits, punctuation, and emoji accepted.
Optional flags:
FlagDescription
-y, --yesSkip the confirmation prompt.
Required scope: account:write. The endpoint is allowlist-only — accountName is the single field accepted; any other key in the body is rejected with 400. Renames emit an accountUpdated EventBridge event with actor: cli:{apiKeyPk} so downstream consumers can distinguish UI vs API-key mutations.

settings order show

Print the account’s order settings as JSON — count flags for pending and voided orders, refund-date attribution, and the list of exclusion filters that drop matching orders from every analytics query.
upstack account settings order show
Sample output:
{
  "countPendingOrders": false,
  "countVoidedOrders": false,
  "refundDateAttribution": "refund_date",
  "exclusionFilters": [
    {
      "id": "9f3e1a4f-d2c1-4f1e-9b5a-3c6d7e8f0a1b",
      "name": "Exclude POS",
      "enabled": true,
      "conditionGroups": [
        {
          "id": "...",
          "logic": "and",
          "conditions": [
            {
              "id": "...",
              "field": "sourceName",
              "operator": "not_equals",
              "value": "pos"
            }
          ]
        }
      ],
      "createdAt": "2026-05-18T10:00:00.000Z",
      "updatedAt": "2026-05-18T10:00:00.000Z"
    }
  ]
}
Required scope: account:read. When the account has no stored orderSettings, the response is filled with the same defaults the web app uses (countPendingOrders=false, countVoidedOrders=false, refundDateAttribution=refund_date, exclusionFilters=[]).

settings order set

PUT-the-whole-config semantics. The file you pass replaces the stored orderSettings in its entirety — any existing filter not present in the file is deleted. The server assigns id, createdAt, and updatedAt on new filters (and on nested groups + conditions); entries that already carry an id preserve their createdAt and get a bumped updatedAt.
upstack account settings order show > order.json
$EDITOR order.json
upstack account settings order set --from-file order.json
upstack account settings order set --from-file order.json --yes
The CLI prints a summary (counting flags, refund attribution, filter count) and asks for confirmation; --yes skips the prompt. Required flags:
FlagDescription
--from-file <path>JSON file with the full OrderSettings body.
Optional flags:
FlagDescription
-y, --yesSkip the confirmation prompt.
Example body — “drop POS orders” filter, every id optional:
{
  "countPendingOrders": false,
  "countVoidedOrders": false,
  "refundDateAttribution": "refund_date",
  "exclusionFilters": [
    {
      "name": "Exclude POS",
      "enabled": true,
      "conditionGroups": [
        {
          "logic": "and",
          "conditions": [
            {
              "field": "sourceName",
              "operator": "not_equals",
              "value": "pos"
            }
          ]
        }
      ]
    }
  ]
}
Required scope: account:write. Strict allowlist at every nesting level — extra keys in the body, or in a filter, group, or condition are rejected with 400. Operators must be valid for the chosen field type per ORDER_EXCLUSION_FIELD_CATALOG (e.g. greater_than on sourceName → 400). Updates emit an accountUpdated EventBridge event with actor: cli:{apiKeyPk} and change: { kind: "orderSettings" }.