{
  "format": 1,
  "package": "@domino-sdk/relay-cli",
  "executable": "domino",
  "streams": {
    "stdout": "The result. With --json, exactly one JSON value followed by a newline, on success and for report commands that fail. Nothing else is written to stdout.",
    "stderr": "Progress, warnings, prompts and the error. With --json, a failure's error is one JSON object on the last line; lines before it are prose or JSON events.",
    "prompts": "Only when stdin and stderr are terminals, CI is unset, and neither --json nor --no-interactive is given."
  },
  "exitStatuses": [
    {
      "status": 0,
      "outcome": "success",
      "description": "The command completed. Its result is on stdout; stderr carries only progress and warnings."
    },
    {
      "status": 1,
      "outcome": "failed",
      "description": "The command failed, and nothing it was asked to change is left uncertain. The error is on stderr. Report commands (doctor, check, migrate) also print their result on stdout."
    },
    {
      "status": 2,
      "outcome": "failed",
      "description": "Usage error: an unknown command or option, or a missing or invalid argument. The CLI stopped before contacting the API or changing files."
    },
    {
      "status": 3,
      "outcome": "uncertain",
      "description": "A change was sent, but whether it took effect is unknown. Resume with the error's operation when it has one; otherwise check the state before retrying."
    },
    {
      "status": 130,
      "outcome": "cancelled",
      "description": "Cancelled by SIGINT or at a prompt, before any change was sent."
    },
    {
      "status": 143,
      "outcome": "cancelled",
      "description": "Cancelled by SIGTERM before any change was sent."
    }
  ],
  "errors": [
    {
      "code": "UNKNOWN_COMMAND",
      "exit": 2,
      "outcome": "failed",
      "category": "usage",
      "description": "No command or subcommand has this name."
    },
    {
      "code": "UNKNOWN_OPTION",
      "exit": 2,
      "outcome": "failed",
      "category": "usage",
      "description": "The command does not accept this option."
    },
    {
      "code": "INVALID_ARGUMENT",
      "exit": 2,
      "outcome": "failed",
      "category": "usage",
      "description": "An argument, option value or piped input is invalid, there are too many arguments, or options conflict."
    },
    {
      "code": "INPUT_REQUIRED",
      "exit": 2,
      "outcome": "failed",
      "category": "usage",
      "description": "A required argument, option, subcommand or piped input is missing, and the CLI cannot prompt for it."
    },
    {
      "code": "AUTH_REQUIRED",
      "exit": 1,
      "outcome": "failed",
      "category": "auth",
      "description": "No credential: run domino login, or set RELAY_MANAGEMENT_TOKEN. When sign-ins are saved only for other API URLs, details.savedApiUrls lists them; pass one as --api-url."
    },
    {
      "code": "AUTH_INVALID",
      "exit": 1,
      "outcome": "failed",
      "category": "auth",
      "description": "The API rejected the credential (HTTP 401), or it belongs to another organization."
    },
    {
      "code": "PERMISSION_DENIED",
      "exit": 1,
      "outcome": "failed",
      "category": "auth",
      "description": "The credential lacks permission for this action (HTTP 403)."
    },
    {
      "code": "LOGIN_FAILED",
      "exit": 1,
      "outcome": "failed",
      "category": "auth",
      "description": "Browser sign-in failed, expired or was approved for another organization."
    },
    {
      "code": "UNATTENDED_LOGIN_UNAVAILABLE",
      "exit": 1,
      "outcome": "failed",
      "category": "auth",
      "description": "Browser sign-in needs a person, and DOMINO_AGENT_MODE=unattended says none is present. Set RELAY_MANAGEMENT_TOKEN instead."
    },
    {
      "code": "SCOPE_INVALID",
      "exit": 1,
      "outcome": "failed",
      "category": "scope",
      "description": "A scope value from the environment, relay.json or the checkout is malformed, such as an environment other than test or live, or an API URL that is not HTTPS."
    },
    {
      "code": "SCOPE_REQUIRED",
      "exit": 1,
      "outcome": "failed",
      "category": "scope",
      "description": "The command needs an organization or project and several match. Pass --organization or --project."
    },
    {
      "code": "SCOPE_NOT_FOUND",
      "exit": 1,
      "outcome": "failed",
      "category": "scope",
      "description": "The credential cannot reach the selected project in the selected environment, or no project at all."
    },
    {
      "code": "SCOPE_PLACEHOLDER",
      "exit": 1,
      "outcome": "failed",
      "category": "scope",
      "description": "relay.json still names a starter's placeholder organization (local). Run domino checkout, or pass --organization and --project."
    },
    {
      "code": "PROJECT_MOVED",
      "exit": 1,
      "outcome": "failed",
      "category": "scope",
      "description": "The project moved to another organization; details.organization names it."
    },
    {
      "code": "ENVIRONMENT_UNSUPPORTED",
      "exit": 1,
      "outcome": "failed",
      "category": "scope",
      "description": "The command does not run in this environment, such as publishing to live. A definition change in live (apiCode promotion-required) is made in test and reaches live through a promotion."
    },
    {
      "code": "PROJECT_NOT_FOUND",
      "exit": 1,
      "outcome": "failed",
      "category": "project",
      "description": "No relay.json was found, or the file passed to --config does not exist."
    },
    {
      "code": "MANIFEST_INVALID",
      "exit": 1,
      "outcome": "failed",
      "category": "project",
      "description": "relay.json is not valid; details lists each field with a suggestion."
    },
    {
      "code": "PROJECT_INVALID",
      "exit": 1,
      "outcome": "failed",
      "category": "project",
      "description": "The project is missing configuration the command needs, such as app in relay.json."
    },
    {
      "code": "BUNDLE_FAILED",
      "exit": 1,
      "outcome": "failed",
      "category": "project",
      "description": "Bundling the configured quests, types, engagement rules or images failed."
    },
    {
      "code": "LOCAL_CONFLICT",
      "exit": 1,
      "outcome": "failed",
      "category": "project",
      "description": "Local files are in the way: a directory exists, a file would be overwritten, or changes are uncommitted."
    },
    {
      "code": "CHECKOUT_GIT_FAILED",
      "exit": 1,
      "outcome": "failed",
      "category": "project",
      "description": "A Git step of checkout or create failed; details names the phase and classification."
    },
    {
      "code": "CHECK_FAILED",
      "exit": 1,
      "outcome": "failed",
      "category": "report",
      "description": "domino check found blocking diagnostics or the app's check script failed."
    },
    {
      "code": "DOCTOR_UNHEALTHY",
      "exit": 1,
      "outcome": "failed",
      "category": "report",
      "description": "domino doctor found at least one check with status error; its result is on stdout."
    },
    {
      "code": "MIGRATION_BLOCKED",
      "exit": 1,
      "outcome": "failed",
      "category": "report",
      "description": "domino migrate found conflicts it cannot resolve; its result is on stdout and nothing was written."
    },
    {
      "code": "BAD_REQUEST",
      "exit": 1,
      "outcome": "failed",
      "category": "api",
      "description": "The management API rejected the request as invalid (HTTP 400)."
    },
    {
      "code": "NOT_FOUND",
      "exit": 1,
      "outcome": "failed",
      "category": "api",
      "description": "The resource does not exist (HTTP 404)."
    },
    {
      "code": "CONFLICT",
      "exit": 1,
      "outcome": "failed",
      "category": "api",
      "description": "The resource is not in a state that allows this change (HTTP 409)."
    },
    {
      "code": "REJECTED",
      "exit": 1,
      "outcome": "failed",
      "category": "api",
      "description": "The management API refused the change (HTTP 422 or another 4xx status)."
    },
    {
      "code": "RATE_LIMITED",
      "exit": 1,
      "outcome": "failed",
      "category": "api",
      "description": "Too many requests (HTTP 429). Wait before retrying: details.retryAfter, when the API sent Retry-After, is how long in milliseconds."
    },
    {
      "code": "SERVER_ERROR",
      "exit": 1,
      "outcome": "failed",
      "category": "api",
      "description": "The management API failed or is unavailable (HTTP 5xx) while reading, or answered 501 or 503. details.retryAfter, when present, is how long to wait in milliseconds."
    },
    {
      "code": "PREFLIGHT_FAILED",
      "exit": 1,
      "outcome": "failed",
      "category": "api",
      "description": "Hosting is not ready for this project; the message lists the blocking checks."
    },
    {
      "code": "STAGE_BUILD_FAILED",
      "exit": 1,
      "outcome": "failed",
      "category": "api",
      "description": "The cloud build failed. Read it with domino logs and the build ID in details."
    },
    {
      "code": "NETWORK_ERROR",
      "exit": 1,
      "outcome": "failed",
      "category": "transport",
      "description": "The API could not be reached, before any change was sent: DNS, connection, TLS or a redirect. Or a read's answer broke off after its headers, or a deployment preview (which publishes nothing) lost its connection."
    },
    {
      "code": "TIMEOUT",
      "exit": 1,
      "outcome": "failed",
      "category": "transport",
      "description": "A read, or a deployment preview (which publishes nothing), did not answer in time."
    },
    {
      "code": "INVALID_RESPONSE",
      "exit": 1,
      "outcome": "failed",
      "category": "transport",
      "description": "The API answered a read with something the CLI cannot use."
    },
    {
      "code": "OUTCOME_UNCERTAIN",
      "exit": 3,
      "outcome": "uncertain",
      "category": "uncertain",
      "description": "A change was sent, but the connection failed, timed out, was interrupted or answered 500, 502 or 504. details.cause names what happened; operation, when present, resumes it."
    },
    {
      "code": "CANCELLED",
      "exit": 130,
      "signalExits": {
        "SIGINT": 130,
        "SIGTERM": 143
      },
      "outcome": "cancelled",
      "category": "cancelled",
      "description": "Interrupted or declined before any change was sent: exit 130 for SIGINT or a prompt, 143 for SIGTERM. An operation, when present, is still running on the server."
    },
    {
      "code": "NODE_VERSION_UNSUPPORTED",
      "exit": 1,
      "outcome": "failed",
      "category": "other",
      "description": "Node is older than the CLI supports. details.minimumVersion is the required version, details.minimum its major version, and details.current the running one."
    },
    {
      "code": "COMMAND_FAILED",
      "exit": 1,
      "outcome": "failed",
      "category": "other",
      "description": "Any other failure. Read the message."
    }
  ],
  "recoveries": {
    "resume": "The change is saved as an operation: run the error's operation.resume. A run with --action-id instead of a saved operation is repeated with the same --action-id.",
    "replay": "Repeat the same command, with the same --action-id when it takes one: the API applies it at most once. Without --action-id, a repeat is a new change.",
    "reconcile": "Read the affected resource before deciding whether to repeat the change: a repeat may apply it twice."
  },
  "scopeSources": [
    {
      "kind": "flag",
      "description": "--api-url, --organization, --project, --environment"
    },
    {
      "kind": "environment",
      "description": "RELAY_API_URL, RELAY_ORGANIZATION, RELAY_PROJECT, RELAY_ENVIRONMENT"
    },
    {
      "kind": "checkout",
      "description": "domino.json in the Git common directory, written by domino checkout and create"
    },
    {
      "kind": "manifest",
      "description": "the nearest relay.json, or --config FILE"
    },
    {
      "kind": "default",
      "description": "API https://relay.domino.run; the environment defaults to test where a command needs one"
    }
  ],
  "credentials": [
    "RELAY_MANAGEMENT_TOKEN",
    "the token domino login saved for the API URL"
  ],
  "environmentVariables": [
    {
      "name": "RELAY_API_URL",
      "description": "API base URL, below --api-url."
    },
    {
      "name": "RELAY_ORGANIZATION",
      "description": "Organization, below --organization."
    },
    {
      "name": "RELAY_PROJECT",
      "description": "Project, below --project."
    },
    {
      "name": "RELAY_ENVIRONMENT",
      "description": "test or live, below --environment."
    },
    {
      "name": "RELAY_MANAGEMENT_TOKEN",
      "description": "Credential for automation. Takes precedence over the credential domino login saved for the API URL."
    },
    {
      "name": "RELAY_CONFIG_DIR",
      "description": "Directory of credentials.json and the private operations journal (default ~/.config/domino)."
    },
    {
      "name": "CI",
      "description": "Any value disables prompts, like --no-interactive."
    },
    {
      "name": "DOMINO_AGENT_MODE",
      "description": "unattended when nobody is present to answer: browser login refuses, feedback is saved to a file, and doctor and whoami report agentMode. Set by whoever launches the agent."
    },
    {
      "name": "DOMINO_FEEDBACK_FILE",
      "description": "Where unattended feedback is appended as JSON lines (default ./domino-feedback.jsonl)."
    },
    {
      "name": "DOMINO_FEEDBACK",
      "description": "submit sends unattended feedback, like --submit."
    }
  ],
  "globalOptions": [
    {
      "flags": "-V, --version",
      "name": "version",
      "description": "output the version number",
      "value": "none"
    },
    {
      "flags": "--api-url <url>",
      "name": "apiUrl",
      "description": "API base URL (RELAY_API_URL or relay.json)",
      "value": "required"
    },
    {
      "flags": "--organization <id>",
      "name": "organization",
      "description": "Organization scope (RELAY_ORGANIZATION or relay.json)",
      "value": "required"
    },
    {
      "flags": "--project <id>",
      "name": "project",
      "description": "Project scope (RELAY_PROJECT or relay.json)",
      "value": "required"
    },
    {
      "flags": "--environment <name>",
      "name": "environment",
      "description": "Environment scope (RELAY_ENVIRONMENT or relay.json)",
      "value": "required",
      "choices": ["test", "live"]
    },
    {
      "flags": "--config <file>",
      "name": "config",
      "description": "Use this manifest instead of the nearest relay.json",
      "value": "required"
    },
    {
      "flags": "--no-interactive",
      "name": "interactive",
      "description": "Disable terminal prompts",
      "value": "none"
    },
    {
      "flags": "--json",
      "name": "json",
      "description": "Emit machine-readable JSON results and errors",
      "value": "none"
    }
  ],
  "schemas": {
    "error": "schemas/error.schema.json",
    "event": "schemas/event.schema.json",
    "version": "schemas/results/version.schema.json"
  },
  "files": {
    "relay.json": "schemas/files/relay.schema.json",
    "domino.json": "schemas/files/domino.schema.json"
  },
  "commands": [
    {
      "path": "stock-items",
      "stability": "stable",
      "description": "Manage inventory names, lifecycle and stock corrections",
      "arguments": [],
      "options": [],
      "subcommands": ["list", "rename", "archive", "unarchive", "adjust-stock"],
      "result": null
    },
    {
      "path": "stock-items list",
      "stability": "stable",
      "description": "List active and archived inventory with revision fences",
      "arguments": [],
      "options": [
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "Opaque cursor from the previous page",
          "value": "required"
        },
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/stock-items-list.schema.json",
      "route": "GET /stock-items/states",
      "recovery": null
    },
    {
      "path": "stock-items rename",
      "stability": "stable",
      "description": "rename a stock item, retaining allocations and history",
      "arguments": [
        {
          "name": "item",
          "description": "Stock item ID",
          "required": true
        },
        {
          "name": "name",
          "description": "New item name",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--expected-revision <number>",
          "name": "expectedRevision",
          "description": "Revision from stock-items list",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Reuse the action ID for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/stock-items-rename.schema.json",
      "route": "POST /stock-items/:item/rename",
      "recovery": "replay"
    },
    {
      "path": "stock-items archive",
      "stability": "stable",
      "description": "archive a stock item, retaining allocations and history",
      "arguments": [
        {
          "name": "item",
          "description": "Stock item ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--expected-revision <number>",
          "name": "expectedRevision",
          "description": "Revision from stock-items list",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Reuse the action ID for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/stock-items-archive.schema.json",
      "route": "POST /stock-items/:item/archive",
      "recovery": "replay"
    },
    {
      "path": "stock-items unarchive",
      "stability": "stable",
      "description": "unarchive a stock item, retaining allocations and history",
      "arguments": [
        {
          "name": "item",
          "description": "Stock item ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--expected-revision <number>",
          "name": "expectedRevision",
          "description": "Revision from stock-items list",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Reuse the action ID for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/stock-items-unarchive.schema.json",
      "route": "POST /stock-items/:item/unarchive",
      "recovery": "replay"
    },
    {
      "path": "stock-items adjust-stock",
      "stability": "stable",
      "description": "adjust-stock a stock item, retaining allocations and history",
      "arguments": [
        {
          "name": "item",
          "description": "Stock item ID",
          "required": true
        },
        {
          "name": "delta",
          "description": "Signed correction to free stock",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--expected-revision <number>",
          "name": "expectedRevision",
          "description": "Revision from stock-items list",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Reuse the action ID for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/stock-items-adjust-stock.schema.json",
      "route": "POST /stock-items/:item/adjust-stock",
      "recovery": "replay"
    },
    {
      "path": "leaderboard-settlements",
      "stability": "stable",
      "description": "Read, approve and reject prize settlements, and retry their closing measurement",
      "arguments": [],
      "options": [],
      "subcommands": [
        "list",
        "get",
        "export",
        "reject",
        "retry-measurement",
        "approve"
      ],
      "result": null
    },
    {
      "path": "leaderboard-settlements list",
      "stability": "stable",
      "description": "Read closing, pending, approved and rejected settlement windows",
      "arguments": [
        {
          "name": "leaderboard",
          "description": "Leaderboard key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "nextCursor from a previous page",
          "value": "required"
        },
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/leaderboard-settlements-list.schema.json",
      "route": "GET /leaderboards/:reference/settlement-reviews",
      "recovery": null
    },
    {
      "path": "leaderboard-settlements get",
      "stability": "stable",
      "description": "Read one frozen settlement and its decision history",
      "arguments": [
        {
          "name": "settlement",
          "description": "Settlement ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/leaderboard-settlements-get.schema.json",
      "route": "GET /leaderboard-settlements/:id/review",
      "recovery": null
    },
    {
      "path": "leaderboard-settlements export",
      "stability": "stable",
      "description": "Print a settlement's payout list as CSV: member, score, rank, pool share and verified wallets (--json for the typed result)",
      "arguments": [
        {
          "name": "settlement",
          "description": "Settlement ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/leaderboard-settlements-export.schema.json",
      "route": "GET /leaderboard-settlements/:id/export",
      "recovery": null
    },
    {
      "path": "leaderboard-settlements reject",
      "stability": "stable",
      "description": "Cancel a pending settlement without paying prizes; its frozen rows stay",
      "arguments": [
        {
          "name": "settlement",
          "description": "Settlement ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--expected-created-at <milliseconds>",
          "name": "expectedCreatedAt",
          "description": "Creation timestamp from leaderboard-settlements get",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/leaderboard-settlements-reject.schema.json",
      "route": "POST /leaderboard-settlements/:id/reject",
      "recovery": "resume"
    },
    {
      "path": "leaderboard-settlements retry-measurement",
      "stability": "stable",
      "description": "Measure a settlement's unmeasured content again: it returns to closing and freezes anew",
      "arguments": [
        {
          "name": "settlement",
          "description": "Settlement ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/leaderboard-settlements-retry-measurement.schema.json",
      "route": "POST /leaderboard-settlements/:id/retry-measurement",
      "recovery": "resume"
    },
    {
      "path": "leaderboard-settlements approve",
      "stability": "stable",
      "description": "Approve a pending settlement: its prizes become completions and rewards",
      "arguments": [
        {
          "name": "settlement",
          "description": "Settlement ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/leaderboard-settlements-approve.schema.json",
      "route": "POST /leaderboard-settlements/{settlement}/approve",
      "recovery": "resume"
    },
    {
      "path": "trackers",
      "stability": "stable",
      "description": "Read trackers and their records, ingest custom records, and manage tracker lifecycle",
      "arguments": [],
      "options": [],
      "subcommands": [
        "archive",
        "unarchive",
        "pause",
        "resume",
        "refresh",
        "list",
        "get",
        "create",
        "update",
        "records",
        "summary",
        "ingest",
        "content",
        "outcomes",
        "retry-outcome"
      ],
      "result": null
    },
    {
      "path": "trackers archive",
      "stability": "stable",
      "description": "Archive a tracker while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/trackers-archive.schema.json",
      "route": "POST /trackers/:id/archive",
      "recovery": "resume"
    },
    {
      "path": "trackers unarchive",
      "stability": "stable",
      "description": "Restore a tracker while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/trackers-unarchive.schema.json",
      "route": "POST /trackers/:id/unarchive",
      "recovery": "resume"
    },
    {
      "path": "trackers pause",
      "stability": "stable",
      "description": "Pause trackers",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/trackers-pause.schema.json",
      "route": "POST /trackers/:id/pause",
      "recovery": "resume"
    },
    {
      "path": "trackers resume",
      "stability": "stable",
      "description": "Resume trackers",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/trackers-resume.schema.json",
      "route": "POST /trackers/:id/resume",
      "recovery": "resume"
    },
    {
      "path": "trackers refresh",
      "stability": "stable",
      "description": "Request a tracker refresh",
      "arguments": [
        {
          "name": "resource",
          "description": "Tracker key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/trackers-refresh.schema.json",
      "route": "POST /trackers/:id/refresh",
      "recovery": "resume"
    },
    {
      "path": "trackers list",
      "stability": "stable",
      "description": "List trackers with their collection status",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/trackers-list.schema.json",
      "route": "GET /trackers",
      "recovery": null
    },
    {
      "path": "trackers get",
      "stability": "stable",
      "description": "Show a tracker's collection status",
      "arguments": [
        {
          "name": "tracker",
          "description": "Tracker key or ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/trackers-get.schema.json",
      "route": "GET /trackers/{tracker}",
      "recovery": null
    },
    {
      "path": "trackers create",
      "stability": "stable",
      "description": "Create a tracker in test, without a deployment; live gets it through a promotion",
      "arguments": [
        {
          "name": "key",
          "description": "Stable tracker key, the same in test and live",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--source <kind>",
          "name": "source",
          "description": "Source kind; leave out with --query for an X search",
          "value": "required",
          "choices": [
            "x-search",
            "discord-messages",
            "discord-reactions",
            "telegram-messages",
            "telegram-reactions",
            "youtube-shorts",
            "tiktok-videos",
            "wallet-balances"
          ]
        },
        {
          "flags": "--chain <chain>",
          "name": "chain",
          "description": "wallet-balances: the chain, as for ctx.wallet.balance(): \"solana\", an EVM chain such as eip155:8453 or a Cosmos network such as cosmos:cosmoshub-4",
          "value": "required"
        },
        {
          "flags": "--token <token>",
          "name": "token",
          "description": "wallet-balances: the SPL mint, ERC-20 contract or Cosmos denomination; leave out for the native coin",
          "value": "required"
        },
        {
          "flags": "--title <title>",
          "name": "title",
          "description": "Name shown in Console",
          "value": "required"
        },
        {
          "flags": "--query <query>",
          "name": "query",
          "description": "X search query, for X search trackers",
          "value": "required"
        },
        {
          "flags": "--text <stored>",
          "name": "text",
          "description": "Discord messages: store each message's text (on) or not (off); turning it off erases the text already stored",
          "value": "required",
          "choices": ["on", "off"]
        },
        {
          "flags": "--start <milliseconds>",
          "name": "start",
          "description": "Window start, epoch time; an X tracker's first collection searches from here",
          "value": "required"
        },
        {
          "flags": "--end <milliseconds>",
          "name": "end",
          "description": "Window end, epoch time; leave out for an ongoing window",
          "value": "required"
        },
        {
          "flags": "--refresh-seconds <seconds>",
          "name": "refreshSeconds",
          "description": "Seconds between syncs (300–86400); the project's plan sets the shortest it runs at (6 hours below Enterprise), shown as effectiveRefreshSeconds",
          "value": "required"
        },
        {
          "flags": "--max-pages <pages>",
          "name": "maxPages",
          "description": "X search pages per sync (1–1000)",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/trackers-create.schema.json",
      "route": "POST /trackers",
      "recovery": "resume"
    },
    {
      "path": "trackers update",
      "stability": "stable",
      "description": "Change a tracker created with trackers create, in test",
      "arguments": [
        {
          "name": "tracker",
          "description": "Tracker key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--title <title>",
          "name": "title",
          "description": "Name shown in Console",
          "value": "required"
        },
        {
          "flags": "--query <query>",
          "name": "query",
          "description": "X search query, for X search trackers",
          "value": "required"
        },
        {
          "flags": "--text <stored>",
          "name": "text",
          "description": "Discord messages: store each message's text (on) or not (off); turning it off erases the text already stored",
          "value": "required",
          "choices": ["on", "off"]
        },
        {
          "flags": "--start <milliseconds>",
          "name": "start",
          "description": "Window start, epoch time; an X tracker's first collection searches from here",
          "value": "required"
        },
        {
          "flags": "--end <milliseconds>",
          "name": "end",
          "description": "Window end, epoch time; leave out for an ongoing window",
          "value": "required"
        },
        {
          "flags": "--refresh-seconds <seconds>",
          "name": "refreshSeconds",
          "description": "Seconds between syncs (300–86400); the project's plan sets the shortest it runs at (6 hours below Enterprise), shown as effectiveRefreshSeconds",
          "value": "required"
        },
        {
          "flags": "--max-pages <pages>",
          "name": "maxPages",
          "description": "X search pages per sync (1–1000)",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/trackers-update.schema.json",
      "route": "POST /trackers/{tracker}/update",
      "recovery": "resume"
    },
    {
      "path": "trackers records",
      "stability": "stable",
      "description": "List a tracker's records, newest first",
      "arguments": [
        {
          "name": "tracker",
          "description": "Tracker key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--member <member>",
          "name": "member",
          "description": "Only records attributed to this member",
          "value": "required"
        },
        {
          "flags": "--author <id>",
          "name": "author",
          "description": "Only records by this external author ID",
          "value": "required"
        },
        {
          "flags": "--verified <value>",
          "name": "verified",
          "description": "Only records whose author is (true) or is not (false) verified",
          "value": "required",
          "choices": ["true", "false"]
        },
        {
          "flags": "--since <milliseconds>",
          "name": "since",
          "description": "Only records that occurred at or after this epoch time",
          "value": "required"
        },
        {
          "flags": "--until <milliseconds>",
          "name": "until",
          "description": "Only records that occurred before this epoch time",
          "value": "required"
        },
        {
          "flags": "--removed",
          "name": "removed",
          "description": "Only records the source has removed",
          "value": "none"
        },
        {
          "flags": "--min-likes <n>",
          "name": "minLikes",
          "description": "Only records with at least this many likes",
          "value": "required"
        },
        {
          "flags": "--min-views <n>",
          "name": "minViews",
          "description": "Only records with at least this many views",
          "value": "required"
        },
        {
          "flags": "--include-evidence",
          "name": "includeEvidence",
          "description": "Include each X record's stored evidence",
          "value": "none"
        },
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        },
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/trackers-records.schema.json",
      "route": "GET /trackers/{tracker}/records",
      "recovery": null
    },
    {
      "path": "trackers summary",
      "stability": "stable",
      "description": "Count a tracker's records, authors and engagement metrics for a filter",
      "arguments": [
        {
          "name": "tracker",
          "description": "Tracker key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--member <member>",
          "name": "member",
          "description": "Only records attributed to this member",
          "value": "required"
        },
        {
          "flags": "--author <id>",
          "name": "author",
          "description": "Only records by this external author ID",
          "value": "required"
        },
        {
          "flags": "--verified <value>",
          "name": "verified",
          "description": "Only records whose author is (true) or is not (false) verified",
          "value": "required",
          "choices": ["true", "false"]
        },
        {
          "flags": "--since <milliseconds>",
          "name": "since",
          "description": "Only records that occurred at or after this epoch time",
          "value": "required"
        },
        {
          "flags": "--until <milliseconds>",
          "name": "until",
          "description": "Only records that occurred before this epoch time",
          "value": "required"
        },
        {
          "flags": "--removed",
          "name": "removed",
          "description": "Only records the source has removed",
          "value": "none"
        },
        {
          "flags": "--min-likes <n>",
          "name": "minLikes",
          "description": "Only records with at least this many likes",
          "value": "required"
        },
        {
          "flags": "--min-views <n>",
          "name": "minViews",
          "description": "Only records with at least this many views",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/trackers-summary.schema.json",
      "route": "GET /trackers/{tracker}/summary",
      "recovery": null
    },
    {
      "path": "trackers ingest",
      "stability": "stable",
      "description": "Store up to 100 records in a custom tracker; a refused batch stores none",
      "arguments": [
        {
          "name": "tracker",
          "description": "Tracker key or ID",
          "required": true
        },
        {
          "name": "file",
          "description": "JSON with records (or an array of records), or - for stdin",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/trackers-ingest.schema.json",
      "route": "POST /trackers/{tracker}/records",
      "recovery": "resume"
    },
    {
      "path": "trackers content",
      "stability": "stable",
      "description": "Show one tracked record's stored content as attributed to a member",
      "arguments": [
        {
          "name": "tracker",
          "description": "Tracker key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--id <id>",
          "name": "id",
          "description": "Record ID",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--observation <id>",
          "name": "observation",
          "description": "Observation ID from the record's evidence (observation_…)",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--member <member>",
          "name": "member",
          "description": "Member the record is attributed to",
          "value": "required",
          "mandatory": true
        }
      ],
      "subcommands": [],
      "result": "schemas/results/trackers-content.schema.json",
      "route": "GET /trackers/{tracker}/content",
      "recovery": null
    },
    {
      "path": "trackers outcomes",
      "stability": "stable",
      "description": "List a tracker's trigger outcomes, newest first: admitted and skipped records per quest",
      "arguments": [
        {
          "name": "tracker",
          "description": "Tracker key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--quest <quest>",
          "name": "quest",
          "description": "Only this quest's outcomes, by key or ID",
          "value": "required"
        },
        {
          "flags": "--record <id>",
          "name": "record",
          "description": "Only this record's outcomes",
          "value": "required"
        },
        {
          "flags": "--member <member>",
          "name": "member",
          "description": "Only this member's outcomes",
          "value": "required"
        },
        {
          "flags": "--state <state>",
          "name": "state",
          "description": "Only admitted or skipped outcomes",
          "value": "required",
          "choices": ["admitted", "skipped"]
        },
        {
          "flags": "--code <code>",
          "name": "code",
          "description": "Only skips with this code, such as unlinked-account",
          "value": "required"
        },
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        },
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/trackers-outcomes.schema.json",
      "route": "GET /trackers/{tracker}/trigger-outcomes",
      "recovery": null
    },
    {
      "path": "trackers retry-outcome",
      "stability": "stable",
      "description": "Run admission again for one skipped record under the quest's current release",
      "arguments": [
        {
          "name": "tracker",
          "description": "Tracker key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--quest <quest>",
          "name": "quest",
          "description": "Quest key or ID",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--record <id>",
          "name": "record",
          "description": "Record ID",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--observed-at <milliseconds>",
          "name": "observedAt",
          "description": "The skipped outcome's observedAt",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/trackers-retry-outcome.schema.json",
      "route": "POST /trackers/{tracker}/outcomes/retry",
      "recovery": "resume"
    },
    {
      "path": "referral-programs",
      "stability": "stable",
      "description": "Read referral programs, qualify members for them, and manage their lifecycle",
      "arguments": [],
      "options": [],
      "subcommands": ["archive", "unarchive", "list", "qualify"],
      "result": null
    },
    {
      "path": "referral-programs archive",
      "stability": "stable",
      "description": "Archive a referral while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/referral-programs-archive.schema.json",
      "route": "POST /referral-programs/:id/archive",
      "recovery": "resume"
    },
    {
      "path": "referral-programs unarchive",
      "stability": "stable",
      "description": "Restore a referral while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/referral-programs-unarchive.schema.json",
      "route": "POST /referral-programs/:id/unarchive",
      "recovery": "resume"
    },
    {
      "path": "referral-programs list",
      "stability": "stable",
      "description": "List published referral programs",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/referral-programs-list.schema.json",
      "route": "GET /referrals",
      "recovery": null
    },
    {
      "path": "referral-programs qualify",
      "stability": "stable",
      "description": "Qualify a member for a referral program after an external check, or with --disqualify withdraw it",
      "arguments": [
        {
          "name": "program",
          "description": "Referral program key or ID",
          "required": true
        },
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--disqualify",
          "name": "disqualify",
          "description": "Withdraw the qualification instead",
          "value": "none"
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/referral-programs-qualify.schema.json",
      "route": "POST /referral-programs/{program}/members/{member}/qualify",
      "recovery": "resume"
    },
    {
      "path": "leaderboards",
      "stability": "stable",
      "description": "Read leaderboard standings, exclude members, and manage leaderboard lifecycle",
      "arguments": [],
      "options": [],
      "subcommands": [
        "archive",
        "unarchive",
        "list",
        "standings",
        "history",
        "exclusions",
        "exclusion-group",
        "bind-exclusion-group",
        "exclude",
        "include"
      ],
      "result": null
    },
    {
      "path": "leaderboards archive",
      "stability": "stable",
      "description": "Archive a leaderboard while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/leaderboards-archive.schema.json",
      "route": "POST /leaderboards/:id/archive",
      "recovery": "resume"
    },
    {
      "path": "leaderboards unarchive",
      "stability": "stable",
      "description": "Restore a leaderboard while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/leaderboards-unarchive.schema.json",
      "route": "POST /leaderboards/:id/unarchive",
      "recovery": "resume"
    },
    {
      "path": "leaderboards list",
      "stability": "stable",
      "description": "List published leaderboards",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/leaderboards-list.schema.json",
      "route": "GET /leaderboards",
      "recovery": null
    },
    {
      "path": "leaderboards standings",
      "stability": "stable",
      "description": "Read a leaderboard's current standings, best rank first",
      "arguments": [
        {
          "name": "leaderboard",
          "description": "Leaderboard key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        },
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/leaderboards-standings.schema.json",
      "route": "GET /leaderboards/{leaderboard}",
      "recovery": null
    },
    {
      "path": "leaderboards history",
      "stability": "stable",
      "description": "List a leaderboard's published definitions, newest first",
      "arguments": [
        {
          "name": "leaderboard",
          "description": "Leaderboard key or ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/leaderboards-history.schema.json",
      "route": "GET /leaderboards/{leaderboard}/history",
      "recovery": null
    },
    {
      "path": "leaderboards exclusions",
      "stability": "stable",
      "description": "List members excluded from a leaderboard",
      "arguments": [
        {
          "name": "leaderboard",
          "description": "Leaderboard key or ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/leaderboards-exclusions.schema.json",
      "route": "GET /leaderboards/{leaderboard}/exclusions",
      "recovery": null
    },
    {
      "path": "leaderboards exclusion-group",
      "stability": "stable",
      "description": "Show the group whose members a leaderboard leaves out: its generated group or a shared one",
      "arguments": [
        {
          "name": "leaderboard",
          "description": "Leaderboard key or ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/leaderboards-exclusion-group.schema.json",
      "route": "GET /leaderboards/{leaderboard}/exclusion-group",
      "recovery": null
    },
    {
      "path": "leaderboards bind-exclusion-group",
      "stability": "stable",
      "description": "Bind a leaderboard to the group whose members it leaves out, such as a group shared by several boards, or back to its generated group",
      "arguments": [
        {
          "name": "leaderboard",
          "description": "Leaderboard key or ID",
          "required": true
        },
        {
          "name": "group",
          "description": "Group key",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/leaderboards-bind-exclusion-group.schema.json",
      "route": "POST /leaderboards/{leaderboard}/exclusion-group",
      "recovery": "resume"
    },
    {
      "path": "leaderboards exclude",
      "stability": "stable",
      "description": "Exclude a member from a leaderboard's standings and settlements, through its exclusion group",
      "arguments": [
        {
          "name": "leaderboard",
          "description": "Leaderboard key or ID",
          "required": true
        },
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/leaderboards-exclude.schema.json",
      "route": "POST /leaderboards/{leaderboard}/exclusions",
      "recovery": "resume"
    },
    {
      "path": "leaderboards include",
      "stability": "stable",
      "description": "Include an excluded member in a leaderboard again",
      "arguments": [
        {
          "name": "leaderboard",
          "description": "Leaderboard key or ID",
          "required": true
        },
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/leaderboards-include.schema.json",
      "route": "POST /leaderboards/{leaderboard}/exclusions",
      "recovery": "resume"
    },
    {
      "path": "engagement",
      "stability": "stable",
      "description": "Manage engagement lifecycle",
      "arguments": [],
      "options": [],
      "subcommands": ["archive", "unarchive"],
      "result": null
    },
    {
      "path": "engagement archive",
      "stability": "stable",
      "description": "Archive a engagement while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/engagement-archive.schema.json",
      "route": "POST /engagement/rules/:id/archive",
      "recovery": "resume"
    },
    {
      "path": "engagement unarchive",
      "stability": "stable",
      "description": "Restore a engagement while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/engagement-unarchive.schema.json",
      "route": "POST /engagement/rules/:id/unarchive",
      "recovery": "resume"
    },
    {
      "path": "collections",
      "stability": "stable",
      "description": "Manage collections lifecycle",
      "arguments": [],
      "options": [],
      "subcommands": ["archive", "unarchive", "list"],
      "result": null
    },
    {
      "path": "collections archive",
      "stability": "stable",
      "description": "Archive a collection while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/collections-archive.schema.json",
      "route": "POST /collections/:id/archive",
      "recovery": "resume"
    },
    {
      "path": "collections unarchive",
      "stability": "stable",
      "description": "Restore a collection while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/collections-unarchive.schema.json",
      "route": "POST /collections/:id/unarchive",
      "recovery": "resume"
    },
    {
      "path": "collections list",
      "stability": "stable",
      "description": "List active and archived collections in this project and environment",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/collections-list.schema.json",
      "route": "GET /resources",
      "recovery": null
    },
    {
      "path": "quest-types",
      "stability": "stable",
      "description": "Manage quest-types lifecycle",
      "arguments": [],
      "options": [],
      "subcommands": ["archive", "unarchive"],
      "result": null
    },
    {
      "path": "quest-types archive",
      "stability": "stable",
      "description": "Archive a quest-type while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/quest-types-archive.schema.json",
      "route": "POST /quest-types/:id/archive",
      "recovery": "resume"
    },
    {
      "path": "quest-types unarchive",
      "stability": "stable",
      "description": "Restore a quest-type while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/quest-types-unarchive.schema.json",
      "route": "POST /quest-types/:id/unarchive",
      "recovery": "resume"
    },
    {
      "path": "images",
      "stability": "stable",
      "description": "Manage images lifecycle",
      "arguments": [],
      "options": [],
      "subcommands": ["archive", "unarchive"],
      "result": null
    },
    {
      "path": "images archive",
      "stability": "stable",
      "description": "Archive a image while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/images-archive.schema.json",
      "route": "POST /images/:id/archive",
      "recovery": "resume"
    },
    {
      "path": "images unarchive",
      "stability": "stable",
      "description": "Restore a image while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/images-unarchive.schema.json",
      "route": "POST /images/:id/unarchive",
      "recovery": "resume"
    },
    {
      "path": "point-ledgers",
      "stability": "stable",
      "description": "Read, create and update point ledgers, and manage their lifecycle",
      "arguments": [],
      "options": [],
      "subcommands": ["archive", "unarchive", "list", "create", "update"],
      "result": null
    },
    {
      "path": "point-ledgers archive",
      "stability": "stable",
      "description": "Archive a point-ledger while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/point-ledgers-archive.schema.json",
      "route": "POST /point-ledgers/:id/archive",
      "recovery": "resume"
    },
    {
      "path": "point-ledgers unarchive",
      "stability": "stable",
      "description": "Restore a point-ledger while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/point-ledgers-unarchive.schema.json",
      "route": "POST /point-ledgers/:id/unarchive",
      "recovery": "resume"
    },
    {
      "path": "point-ledgers list",
      "stability": "stable",
      "description": "List point ledgers, archived ones included",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/point-ledgers-list.schema.json",
      "route": "GET /point-ledgers",
      "recovery": null
    },
    {
      "path": "point-ledgers create",
      "stability": "stable",
      "description": "Create a point ledger",
      "arguments": [
        {
          "name": "name",
          "description": "Name shown to operators and members",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--key <key>",
          "name": "key",
          "description": "Key code can name: letters, digits, _ and -",
          "value": "required"
        },
        {
          "flags": "--description <text>",
          "name": "description",
          "description": "What the ledger counts",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/point-ledgers-create.schema.json",
      "route": "POST /point-ledgers",
      "recovery": "resume"
    },
    {
      "path": "point-ledgers update",
      "stability": "stable",
      "description": "Rename a point ledger or change its description; balances stay",
      "arguments": [
        {
          "name": "ledger",
          "description": "Point ledger ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--name <name>",
          "name": "name",
          "description": "New name",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--description <text>",
          "name": "description",
          "description": "New description; empty when omitted",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/point-ledgers-update.schema.json",
      "route": "POST /point-ledgers/{ledger}/update",
      "recovery": "replay"
    },
    {
      "path": "offers",
      "stability": "stable",
      "description": "Read offers, pause or resume them, and archive or restore them",
      "arguments": [],
      "options": [],
      "subcommands": ["archive", "unarchive", "pause", "resume", "list"],
      "result": null
    },
    {
      "path": "offers archive",
      "stability": "stable",
      "description": "Archive a offer while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/offers-archive.schema.json",
      "route": "POST /offers/:id/archive",
      "recovery": "resume"
    },
    {
      "path": "offers unarchive",
      "stability": "stable",
      "description": "Restore a offer while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/offers-unarchive.schema.json",
      "route": "POST /offers/:id/unarchive",
      "recovery": "resume"
    },
    {
      "path": "offers pause",
      "stability": "stable",
      "description": "Pause offers",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--expected-revision <number>",
          "name": "expectedRevision",
          "description": "Revision shown by the latest read",
          "value": "required"
        },
        {
          "flags": "--revision <number>",
          "name": "revision",
          "description": "Deprecated: use --expected-revision. Removed in 2.0.0",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/offers-pause.schema.json",
      "route": "POST /offers/:id/pause",
      "recovery": "resume"
    },
    {
      "path": "offers resume",
      "stability": "stable",
      "description": "Resume offers",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--expected-revision <number>",
          "name": "expectedRevision",
          "description": "Revision shown by the latest read",
          "value": "required"
        },
        {
          "flags": "--revision <number>",
          "name": "revision",
          "description": "Deprecated: use --expected-revision. Removed in 2.0.0",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/offers-resume.schema.json",
      "route": "POST /offers/:id/resume",
      "recovery": "resume"
    },
    {
      "path": "offers list",
      "stability": "stable",
      "description": "List offers with their revision, stock and availability",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/offers-list.schema.json",
      "route": "GET /offers",
      "recovery": null
    },
    {
      "path": "tiered-rewards",
      "stability": "experimental",
      "description": "List tiered rewards, and archive or restore them",
      "arguments": [],
      "options": [],
      "subcommands": ["archive", "unarchive", "list"],
      "result": null
    },
    {
      "path": "tiered-rewards archive",
      "stability": "experimental",
      "description": "Archive a tiered reward while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/tiered-rewards-archive.schema.json",
      "route": "POST /tiered-rewards/:id/archive",
      "recovery": "resume"
    },
    {
      "path": "tiered-rewards unarchive",
      "stability": "experimental",
      "description": "Restore a tiered reward while retaining its history",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/tiered-rewards-unarchive.schema.json",
      "route": "POST /tiered-rewards/:id/unarchive",
      "recovery": "resume"
    },
    {
      "path": "tiered-rewards list",
      "stability": "experimental",
      "description": "List active and archived tiered rewards in this project and environment",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/tiered-rewards-list.schema.json",
      "route": "GET /resources",
      "recovery": null
    },
    {
      "path": "referral-relationships",
      "stability": "stable",
      "description": "Read referral relationships and pause or resume a member's referral earnings",
      "arguments": [],
      "options": [],
      "subcommands": ["pause", "resume", "list", "history"],
      "result": null
    },
    {
      "path": "referral-relationships pause",
      "stability": "stable",
      "description": "Pause referral-relationships",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/referral-relationships-pause.schema.json",
      "route": "POST /referral-relationships/:id/pause",
      "recovery": "resume"
    },
    {
      "path": "referral-relationships resume",
      "stability": "stable",
      "description": "Resume referral-relationships",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/referral-relationships-resume.schema.json",
      "route": "POST /referral-relationships/:id/resume",
      "recovery": "resume"
    },
    {
      "path": "referral-relationships list",
      "stability": "stable",
      "description": "List referral relationships, newest first, with qualifications, accounts and rewards waiting for review",
      "arguments": [],
      "options": [
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/referral-relationships-list.schema.json",
      "route": "GET /referrals/participants",
      "recovery": null
    },
    {
      "path": "referral-relationships history",
      "stability": "stable",
      "description": "List a member's referral point history, newest first",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/referral-relationships-history.schema.json",
      "route": "GET /referrals/history/{member}",
      "recovery": null
    },
    {
      "path": "redemptions",
      "stability": "stable",
      "description": "Read and cancel redemptions, and pause or resume reward collection",
      "arguments": [],
      "options": [],
      "subcommands": ["pause", "resume", "list", "history", "cancel"],
      "result": null
    },
    {
      "path": "redemptions pause",
      "stability": "stable",
      "description": "Pause redemptions",
      "arguments": [],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--expected-revision <number>",
          "name": "expectedRevision",
          "description": "Revision shown by the latest read",
          "value": "required"
        },
        {
          "flags": "--revision <number>",
          "name": "revision",
          "description": "Deprecated: use --expected-revision. Removed in 2.0.0",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/redemptions-pause.schema.json",
      "route": "POST /redemptions/pause",
      "recovery": "resume"
    },
    {
      "path": "redemptions resume",
      "stability": "stable",
      "description": "Resume redemptions",
      "arguments": [],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--expected-revision <number>",
          "name": "expectedRevision",
          "description": "Revision shown by the latest read",
          "value": "required"
        },
        {
          "flags": "--revision <number>",
          "name": "revision",
          "description": "Deprecated: use --expected-revision. Removed in 2.0.0",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/redemptions-resume.schema.json",
      "route": "POST /redemptions/resume",
      "recovery": "resume"
    },
    {
      "path": "redemptions list",
      "stability": "stable",
      "description": "Deprecated: list every redemption in one response. Use redemptions history",
      "arguments": [],
      "options": [
        {
          "flags": "--member <member>",
          "name": "member",
          "description": "Only this member's redemptions",
          "value": "required"
        }
      ],
      "subcommands": [],
      "deprecated": "Use domino redemptions history.",
      "result": "schemas/results/redemptions-list.schema.json",
      "route": "GET /redemptions",
      "recovery": null
    },
    {
      "path": "redemptions history",
      "stability": "stable",
      "description": "List redemptions, newest first, a page at a time",
      "arguments": [],
      "options": [
        {
          "flags": "--member <member>",
          "name": "member",
          "description": "Only this member's redemptions",
          "value": "required"
        },
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        },
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/redemptions-history.schema.json",
      "route": "GET /redemptions/history",
      "recovery": null
    },
    {
      "path": "redemptions cancel",
      "stability": "stable",
      "description": "Cancel a redemption at the revision you read, returning its price to the member",
      "arguments": [
        {
          "name": "redemption",
          "description": "Redemption ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--expected-revision <number>",
          "name": "expectedRevision",
          "description": "Revision shown by redemptions list",
          "value": "required"
        },
        {
          "flags": "--revision <number>",
          "name": "revision",
          "description": "Deprecated: use --expected-revision. Removed in 2.0.0",
          "value": "required"
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/redemptions-cancel.schema.json",
      "route": "POST /redemptions/{redemption}/cancel",
      "recovery": "resume"
    },
    {
      "path": "badges",
      "stability": "stable",
      "description": "Manage badge definitions and member awards",
      "arguments": [],
      "options": [],
      "subcommands": [
        "list",
        "member",
        "create",
        "update",
        "archive",
        "unarchive",
        "award",
        "revoke"
      ],
      "result": null
    },
    {
      "path": "badges list",
      "stability": "stable",
      "description": "List the badge catalog, including archived badges",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/badges-list.schema.json",
      "route": "GET /badges",
      "recovery": null
    },
    {
      "path": "badges member",
      "stability": "stable",
      "description": "Read a member's badges",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/badges-member.schema.json",
      "route": "GET /members/{member}/badges",
      "recovery": null
    },
    {
      "path": "badges create",
      "stability": "stable",
      "description": "Create a badge definition",
      "arguments": [
        {
          "name": "key",
          "description": "Stable badge key",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--name <name>",
          "name": "name",
          "description": "Achievement name",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--image <url>",
          "name": "image",
          "description": "Badge image URL",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--description <text>",
          "name": "description",
          "description": "Achievement description",
          "value": "required",
          "default": ""
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/badges-create.schema.json",
      "route": "POST /badges",
      "recovery": "resume"
    },
    {
      "path": "badges update",
      "stability": "stable",
      "description": "Update a badge definition",
      "arguments": [
        {
          "name": "badge",
          "description": "Badge key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--name <name>",
          "name": "name",
          "description": "Achievement name",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--image <url>",
          "name": "image",
          "description": "Badge image URL",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--description <text>",
          "name": "description",
          "description": "Achievement description",
          "value": "required",
          "default": ""
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Audited reason",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/badges-update.schema.json",
      "route": "POST /badges/{badge}/update",
      "recovery": "resume"
    },
    {
      "path": "badges archive",
      "stability": "stable",
      "description": "Archive a badge definition",
      "arguments": [
        {
          "name": "badge",
          "description": "Badge key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Audited reason",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/badges-archive.schema.json",
      "route": "POST /badges/{badge}/archive",
      "recovery": "resume"
    },
    {
      "path": "badges unarchive",
      "stability": "stable",
      "description": "Restore a badge definition",
      "arguments": [
        {
          "name": "badge",
          "description": "Badge key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Audited reason",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/badges-unarchive.schema.json",
      "route": "POST /badges/{badge}/unarchive",
      "recovery": "resume"
    },
    {
      "path": "badges award",
      "stability": "stable",
      "description": "Award a member's badge",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        },
        {
          "name": "badge",
          "description": "Badge key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Audited reason",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/badges-award.schema.json",
      "route": "POST /members/{member}/badges/{badge}/award",
      "recovery": "resume"
    },
    {
      "path": "badges revoke",
      "stability": "stable",
      "description": "Revoke a member's badge",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        },
        {
          "name": "badge",
          "description": "Badge key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Audited reason",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/badges-revoke.schema.json",
      "route": "POST /members/{member}/badges/{badge}/revoke",
      "recovery": "resume"
    },
    {
      "path": "test-members",
      "stability": "stable",
      "description": "Create test members, submit as them, pass their quests, accept referrals and redeem offers as them, give them wallets and real X and Discord accounts, send their X and Discord activity, move their clocks and reset them (test environment)",
      "arguments": [],
      "options": [],
      "subcommands": [
        "list",
        "history",
        "create",
        "act",
        "pass",
        "accept-anyway",
        "advance",
        "accept-referral",
        "redeem",
        "link-wallet",
        "unlink-wallet",
        "link-account",
        "unlink-account",
        "record",
        "reset",
        "purge"
      ],
      "result": null
    },
    {
      "path": "test-members list",
      "stability": "stable",
      "description": "List the project's test members with their current dates",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/test-members-list.schema.json",
      "route": "GET /test-members",
      "recovery": null
    },
    {
      "path": "test-members history",
      "stability": "stable",
      "description": "Read a test member's attempts and skipped tracker outcomes, newest first",
      "arguments": [
        {
          "name": "member",
          "description": "Test member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--since <ms>",
          "name": "since",
          "description": "Inclusive lower bound on credited activity time, in epoch milliseconds",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/test-members-history.schema.json",
      "route": "GET /test-members/{member}/history",
      "recovery": null
    },
    {
      "path": "test-members create",
      "stability": "stable",
      "description": "Create a test member in this project",
      "arguments": [
        {
          "name": "name",
          "description": "Display name, 1–40 characters",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <id>",
          "name": "actionId",
          "description": "Send this action ID (1–100 letters, digits, - or _) without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/test-members-create.schema.json",
      "route": "POST /test-members",
      "recovery": "resume"
    },
    {
      "path": "test-members act",
      "stability": "stable",
      "description": "Submit to a quest as a test member, through the same admission and evaluation as a signed-in member",
      "arguments": [
        {
          "name": "member",
          "description": "Test member ID",
          "required": true
        },
        {
          "name": "quest",
          "description": "Quest ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--input <json>",
          "name": "input",
          "description": "Submission input as JSON: {\"kind\":\"text\",\"value\":…}, {\"kind\":\"url\",\"value\":…} or {\"kind\":\"quiz\",\"answers\":{…}}; omit for a claim",
          "value": "required"
        },
        {
          "flags": "--photo <file>",
          "name": "photo",
          "description": "For a photo quest: upload this JPEG or PNG (at most 5 MB) as the member's photo and submit it",
          "value": "required"
        },
        {
          "flags": "--release <release>",
          "name": "release",
          "description": "Submit against this quest release",
          "value": "required"
        },
        {
          "flags": "--wait",
          "name": "wait",
          "description": "Wait until evaluation settles and print the attempt with its status, reason and code",
          "value": "none"
        },
        {
          "flags": "--timeout <seconds>",
          "name": "timeout",
          "description": "With --wait, how long to wait (1–3600, default 60)",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <id>",
          "name": "actionId",
          "description": "Send this action ID (1–100 letters, digits, - or _) without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/test-members-act.schema.json",
      "route": "POST /test-members/{member}/actions",
      "recovery": "resume"
    },
    {
      "path": "test-members pass",
      "stability": "stable",
      "description": "Pass a manual quest for a test member without running its check: admitted as a submission, then accepted as you",
      "arguments": [
        {
          "name": "member",
          "description": "Test member ID",
          "required": true
        },
        {
          "name": "quest",
          "description": "Quest key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--completion-key <key>",
          "name": "completionKey",
          "description": "Completion key of a keyed quest, or the distinct action of a counter quest (`progress(...)`); omit for a fresh one",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <id>",
          "name": "actionId",
          "description": "Send this action ID (1–100 letters, digits, - or _) without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/test-members-pass.schema.json",
      "route": "POST /test-members/{member}/passes",
      "recovery": "resume"
    },
    {
      "path": "test-members accept-anyway",
      "stability": "stable",
      "description": "Accept a test member's rejected attempt as you, in place of the evaluator's or a reviewer's rejection",
      "arguments": [
        {
          "name": "member",
          "description": "Test member ID",
          "required": true
        },
        {
          "name": "attempt",
          "description": "Rejected attempt ID, from `history`",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--live-rules",
          "name": "liveRules",
          "description": "Refuse what live's `attempts accept-anyway` refuses (archived quest, superseded attempt, completion cooldown), with its codes; needs --reason",
          "value": "none"
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded with the decision",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <id>",
          "name": "actionId",
          "description": "Send this action ID (1–100 letters, digits, - or _) without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/test-members-accept-anyway.schema.json",
      "route": "POST /test-members/{member}/accept-anyway",
      "recovery": "resume"
    },
    {
      "path": "test-members advance",
      "stability": "stable",
      "description": "Move a test member's clock forward by days, hours or minutes, or to a later instant (up to 90 days ahead)",
      "arguments": [
        {
          "name": "member",
          "description": "Test member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--days <days>",
          "name": "days",
          "description": "Project-calendar days to advance, 1–30, keeping the time of day",
          "value": "required"
        },
        {
          "flags": "--hours <hours>",
          "name": "hours",
          "description": "Hours to advance, 1–720",
          "value": "required"
        },
        {
          "flags": "--minutes <minutes>",
          "name": "minutes",
          "description": "Minutes to advance, 1–43200",
          "value": "required"
        },
        {
          "flags": "--to <instant>",
          "name": "to",
          "description": "Epoch milliseconds, or an ISO 8601 instant with an offset such as 2026-10-10T00:00:00+02:00, later than the member's clock",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <id>",
          "name": "actionId",
          "description": "Send this action ID (1–100 letters, digits, - or _) without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/test-members-advance.schema.json",
      "route": "POST /test-members/{member}/clock",
      "recovery": "resume"
    },
    {
      "path": "test-members accept-referral",
      "stability": "stable",
      "description": "Accept a referral invitation as a test member, as a signed-in member accepting it would",
      "arguments": [
        {
          "name": "member",
          "description": "Test member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--code <code>",
          "name": "code",
          "description": "Invitation code",
          "value": "required"
        },
        {
          "flags": "--inviter <member>",
          "name": "inviter",
          "description": "Another test member, whose invitation code Relay uses",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <id>",
          "name": "actionId",
          "description": "Send this action ID (1–100 letters, digits, - or _) without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/test-members-accept-referral.schema.json",
      "route": "POST /test-members/{member}/referrals/accept",
      "recovery": "resume"
    },
    {
      "path": "test-members redeem",
      "stability": "stable",
      "description": "Redeem an offer as a test member, as a signed-in member redeeming it would",
      "arguments": [
        {
          "name": "member",
          "description": "Test member ID",
          "required": true
        },
        {
          "name": "offer",
          "description": "Offer key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <id>",
          "name": "actionId",
          "description": "Send this action ID (1–100 letters, digits, - or _) without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/test-members-redeem.schema.json",
      "route": "POST /test-members/{member}/redemptions",
      "recovery": "resume"
    },
    {
      "path": "test-members link-wallet",
      "stability": "stable",
      "description": "Give a test member a wallet address without a signature; quest code reads it like a linked wallet",
      "arguments": [
        {
          "name": "member",
          "description": "Test member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--chain <chain>",
          "name": "chain",
          "description": "Wallet chain family",
          "value": "required",
          "mandatory": true,
          "choices": ["solana", "eip155", "cosmos"]
        },
        {
          "flags": "--address <address>",
          "name": "address",
          "description": "Wallet address",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--network <network>",
          "name": "network",
          "description": "Cosmos network, such as cosmos:cosmoshub-4 (Cosmos only)",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <id>",
          "name": "actionId",
          "description": "Send this action ID (1–100 letters, digits, - or _) without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/test-members-link-wallet.schema.json",
      "route": "POST /test-members/{member}/wallets",
      "recovery": "resume"
    },
    {
      "path": "test-members unlink-wallet",
      "stability": "stable",
      "description": "Remove a wallet address from a test member, freeing it for anyone to link",
      "arguments": [
        {
          "name": "member",
          "description": "Test member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--chain <chain>",
          "name": "chain",
          "description": "Wallet chain family",
          "value": "required",
          "mandatory": true,
          "choices": ["solana", "eip155", "cosmos"]
        },
        {
          "flags": "--address <address>",
          "name": "address",
          "description": "Wallet address",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <id>",
          "name": "actionId",
          "description": "Send this action ID (1–100 letters, digits, - or _) without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/test-members-unlink-wallet.schema.json",
      "route": "POST /test-members/{member}/wallets/unlink",
      "recovery": "resume"
    },
    {
      "path": "test-members link-account",
      "stability": "stable",
      "description": "Link a real X or Discord account to a test member without OAuth; quest code reads it like a linked account",
      "arguments": [
        {
          "name": "member",
          "description": "Test member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--kind <kind>",
          "name": "kind",
          "description": "The account's kind",
          "value": "required",
          "choices": ["x", "discord"]
        },
        {
          "flags": "--subject <id>",
          "name": "subject",
          "description": "The numeric X or Discord user ID",
          "value": "required"
        },
        {
          "flags": "--username <username>",
          "name": "username",
          "description": "With --kind x: an X handle, resolved to its account through X",
          "value": "required"
        },
        {
          "flags": "--provider <provider>",
          "name": "provider",
          "description": "Deprecated: the account provider, with --id",
          "value": "required",
          "choices": ["x", "discord"],
          "deprecated": "Use --kind."
        },
        {
          "flags": "--id <id>",
          "name": "id",
          "description": "Deprecated: the numeric user ID, with --provider",
          "value": "required",
          "deprecated": "Use --subject."
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <id>",
          "name": "actionId",
          "description": "Send this action ID (1–100 letters, digits, - or _) without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/test-members-link-account.schema.json",
      "route": "POST /test-members/{member}/accounts",
      "recovery": "resume"
    },
    {
      "path": "test-members unlink-account",
      "stability": "stable",
      "description": "Unlink an X or Discord account linked with link-account, freeing it for anyone to link",
      "arguments": [
        {
          "name": "member",
          "description": "Test member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--kind <kind>",
          "name": "kind",
          "description": "The account's kind",
          "value": "required",
          "choices": ["x", "discord"]
        },
        {
          "flags": "--subject <id>",
          "name": "subject",
          "description": "The numeric X or Discord user ID",
          "value": "required"
        },
        {
          "flags": "--provider <provider>",
          "name": "provider",
          "description": "Deprecated: the account provider, with --id",
          "value": "required",
          "choices": ["x", "discord"],
          "deprecated": "Use --kind."
        },
        {
          "flags": "--id <id>",
          "name": "id",
          "description": "Deprecated: the numeric user ID, with --provider",
          "value": "required",
          "deprecated": "Use --subject."
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <id>",
          "name": "actionId",
          "description": "Send this action ID (1–100 letters, digits, - or _) without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/test-members-unlink-account.schema.json",
      "route": "POST /test-members/{member}/accounts/unlink",
      "recovery": "resume"
    },
    {
      "path": "test-members record",
      "stability": "stable",
      "description": "Send a synthetic X post, Discord message or Discord reaction for a test member into a managed tracker",
      "arguments": [
        {
          "name": "member",
          "description": "Test member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--tracker <tracker>",
          "name": "tracker",
          "description": "Managed X or Discord tracker key or ID",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--data <json>",
          "name": "data",
          "description": "Record data as JSON, in the tracker's record shape: {\"content\":\"gm\",\"likeCount\":12} for X, {\"channelId\":\"…\",\"text\":\"gm\"} for messages, {\"emoji\":{\"name\":\"⭐\"}} for reactions",
          "value": "required"
        },
        {
          "flags": "--as <role>",
          "name": "as",
          "description": "The record account the member holds; messageAuthor is for Discord reactions to the member's message",
          "value": "required",
          "choices": ["author", "messageAuthor"],
          "default": "author"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <id>",
          "name": "actionId",
          "description": "Send this action ID (1–100 letters, digits, - or _) without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/test-members-record.schema.json",
      "route": "POST /test-members/{member}/records",
      "recovery": "resume"
    },
    {
      "path": "test-members reset",
      "stability": "stable",
      "description": "Delete a test member and its participation; create a new member for another run",
      "arguments": [
        {
          "name": "member",
          "description": "Test member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <id>",
          "name": "actionId",
          "description": "Send this action ID (1–100 letters, digits, - or _) without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/test-members-reset.schema.json",
      "route": "POST /test-members/{member}/reset",
      "recovery": "resume"
    },
    {
      "path": "test-members purge",
      "stability": "stable",
      "description": "Delete test members reset refuses for redemptions, reservations, handovers or referrals, giving their redeemed stock back",
      "arguments": [
        {
          "name": "members",
          "description": "Test member IDs, at most 500",
          "required": true,
          "variadic": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <id>",
          "name": "actionId",
          "description": "Send this action ID (1–100 letters, digits, - or _) without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/test-members-purge.schema.json",
      "route": "POST /test-members/purge",
      "recovery": "resume"
    },
    {
      "path": "import",
      "stability": "stable",
      "description": "Import members, opening point balances, quest progress and referrals from a JSONL file",
      "arguments": [],
      "options": [
        {
          "flags": "--file <path>",
          "name": "file",
          "description": "JSONL, one member per line, or - for stdin",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--source <name>",
          "name": "source",
          "description": "Where the members come from, such as legacy-domino",
          "value": "required",
          "default": "import"
        },
        {
          "flags": "--import <id>",
          "name": "import",
          "description": "Add the rows to this import instead of creating one, such as to resume",
          "value": "required"
        },
        {
          "flags": "--dry-run",
          "name": "dryRun",
          "description": "Check the rows and print what would be created, linked, set and refused; change nothing",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/import.schema.json",
      "recovery": "reconcile"
    },
    {
      "path": "imports",
      "stability": "stable",
      "description": "Read, apply, cancel, stop and revert member imports",
      "arguments": [],
      "options": [],
      "subcommands": [
        "list",
        "get",
        "rows",
        "apply",
        "cancel",
        "stop",
        "revert"
      ],
      "result": null
    },
    {
      "path": "imports list",
      "stability": "stable",
      "description": "List the project's member imports, newest first",
      "arguments": [],
      "options": [
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        },
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/imports-list.schema.json",
      "route": "GET /member-imports",
      "recovery": null
    },
    {
      "path": "imports get",
      "stability": "stable",
      "description": "Show an import: its status, check summary and progress",
      "arguments": [
        {
          "name": "import",
          "description": "Import ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/imports-get.schema.json",
      "route": "GET /member-imports/{import}",
      "recovery": null
    },
    {
      "path": "imports rows",
      "stability": "stable",
      "description": "List an import's rows with their check or apply outcome",
      "arguments": [
        {
          "name": "import",
          "description": "Import ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--status <status>",
          "name": "status",
          "description": "Only rows in this state",
          "value": "required",
          "choices": ["pending", "ready", "applied", "refused"]
        },
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–500)",
          "value": "required"
        },
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/imports-rows.schema.json",
      "route": "GET /member-imports/{import}/rows",
      "recovery": null
    },
    {
      "path": "imports apply",
      "stability": "stable",
      "description": "Apply a checked import in test and wait for it; approve live imports in Console",
      "arguments": [
        {
          "name": "import",
          "description": "Import ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/imports-apply.schema.json",
      "recovery": "reconcile"
    },
    {
      "path": "imports cancel",
      "stability": "stable",
      "description": "Cancel an open or checked import",
      "arguments": [
        {
          "name": "import",
          "description": "Import ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/imports-cancel.schema.json",
      "route": "POST /member-imports/{import}/cancel",
      "recovery": "reconcile"
    },
    {
      "path": "imports stop",
      "stability": "stable",
      "description": "Stop an applying import after the row being applied; the rest stay ready",
      "arguments": [
        {
          "name": "import",
          "description": "Import ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/imports-stop.schema.json",
      "route": "POST /member-imports/{import}/stop",
      "recovery": "reconcile"
    },
    {
      "path": "imports revert",
      "stability": "stable",
      "description": "Revert an applied or stopped import and wait: reverse its balances and completions, remove unused links",
      "arguments": [
        {
          "name": "import",
          "description": "Import ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        }
      ],
      "subcommands": [],
      "result": "schemas/results/imports-revert.schema.json",
      "recovery": "reconcile"
    },
    {
      "path": "points",
      "stability": "stable",
      "description": "Read and record members' point balances and entries in a point ledger",
      "arguments": [],
      "options": [],
      "subcommands": [
        "get",
        "list",
        "award",
        "spend",
        "adjust",
        "set",
        "reverse"
      ],
      "result": null
    },
    {
      "path": "points get",
      "stability": "stable",
      "description": "Show a member's total and held points in one ledger",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        },
        {
          "name": "ledger",
          "description": "Point ledger ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/points-get.schema.json",
      "route": "GET /points/{member}/{ledger}",
      "recovery": null
    },
    {
      "path": "points list",
      "stability": "stable",
      "description": "List a member's entries in one ledger, newest first",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        },
        {
          "name": "ledger",
          "description": "Point ledger ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/points-list.schema.json",
      "route": "GET /points/{member}/{ledger}/history",
      "recovery": null
    },
    {
      "path": "points award",
      "stability": "stable",
      "description": "Award points to a member in a ledger",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        },
        {
          "name": "ledger",
          "description": "Point ledger ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--amount <points>",
          "name": "amount",
          "description": "Points to add, above 0",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--referral-eligible",
          "name": "referralEligible",
          "description": "Count the award toward referral rules that reward points earned",
          "value": "none"
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--effective-at <milliseconds>",
          "name": "effectiveAt",
          "description": "Backdate the entry to this epoch time; not in the future",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/points-award.schema.json",
      "route": "POST /points",
      "recovery": "resume"
    },
    {
      "path": "points spend",
      "stability": "stable",
      "description": "Deduct points a member spent; the balance cannot go below 0 or into reserved points",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        },
        {
          "name": "ledger",
          "description": "Point ledger ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--amount <points>",
          "name": "amount",
          "description": "Points to deduct, above 0",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--effective-at <milliseconds>",
          "name": "effectiveAt",
          "description": "Backdate the entry to this epoch time; not in the future",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/points-spend.schema.json",
      "route": "POST /points",
      "recovery": "resume"
    },
    {
      "path": "points adjust",
      "stability": "stable",
      "description": "Correct a member's balance by a signed amount, recorded as an adjustment",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        },
        {
          "name": "ledger",
          "description": "Point ledger ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--amount <points>",
          "name": "amount",
          "description": "Signed correction, such as 5 or -5; not 0",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--effective-at <milliseconds>",
          "name": "effectiveAt",
          "description": "Backdate the entry to this epoch time; not in the future",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/points-adjust.schema.json",
      "route": "POST /points",
      "recovery": "resume"
    },
    {
      "path": "points set",
      "stability": "stable",
      "description": "Set a member's balance to an absolute total, if it still equals --expected-total",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        },
        {
          "name": "ledger",
          "description": "Point ledger ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--total <points>",
          "name": "total",
          "description": "New total, 0 or more",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--expected-total <points>",
          "name": "expectedTotal",
          "description": "The total points get last showed; a different total refuses the change",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--classification <kind>",
          "name": "classification",
          "description": "Record the difference as earned points or as spending",
          "value": "required",
          "mandatory": true,
          "choices": ["earned", "spend"]
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--effective-at <milliseconds>",
          "name": "effectiveAt",
          "description": "Backdate the entry to this epoch time; not in the future",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/points-set.schema.json",
      "route": "POST /points",
      "recovery": "resume"
    },
    {
      "path": "points reverse",
      "stability": "stable",
      "description": "Reverse all or part of one recorded entry",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        },
        {
          "name": "ledger",
          "description": "Point ledger ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--entry <id>",
          "name": "entry",
          "description": "Entry ID from points list",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--amount <points>",
          "name": "amount",
          "description": "Points of the entry to reverse, above 0",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/points-reverse.schema.json",
      "route": "POST /points",
      "recovery": "resume"
    },
    {
      "path": "referral-rewards",
      "stability": "stable",
      "description": "Resolve referral rewards held for review",
      "arguments": [],
      "options": [],
      "subcommands": ["resolve"],
      "result": null
    },
    {
      "path": "referral-rewards resolve",
      "stability": "stable",
      "description": "Mark a referral reward held for review as reconciled",
      "arguments": [
        {
          "name": "entitlement",
          "description": "Entitlement ID of the reward",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/referral-rewards-resolve.schema.json",
      "route": "POST /referral-rewards/{entitlement}/resolve",
      "recovery": "resume"
    },
    {
      "path": "entitlements",
      "stability": "stable",
      "description": "Correct members' reward entitlements",
      "arguments": [],
      "options": [],
      "subcommands": ["restore"],
      "result": null
    },
    {
      "path": "entitlements restore",
      "stability": "stable",
      "description": "Restore an entitlement an operator voided, at the revision you read; it is available again",
      "arguments": [
        {
          "name": "entitlement",
          "description": "Entitlement ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--expected-revision <number>",
          "name": "expectedRevision",
          "description": "Revision shown by the latest read",
          "value": "required"
        },
        {
          "flags": "--revision <number>",
          "name": "revision",
          "description": "Deprecated: use --expected-revision. Removed in 2.0.0",
          "value": "required"
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/entitlements-restore.schema.json",
      "route": "POST /entitlements/{entitlement}/restore",
      "recovery": "resume"
    },
    {
      "path": "completions",
      "stability": "stable",
      "description": "Correct members' completions",
      "arguments": [],
      "options": [],
      "subcommands": ["restore"],
      "result": null
    },
    {
      "path": "completions restore",
      "stability": "stable",
      "description": "Restore a revoked completion: re-apply what its revocation reversed",
      "arguments": [
        {
          "name": "completion",
          "description": "Completion ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/completions-restore.schema.json",
      "route": "POST /completions/{completion}/restore",
      "recovery": "resume"
    },
    {
      "path": "dashboards",
      "stability": "stable",
      "description": "Read the project's dashboards and their panels' numbers, and archive or restore them",
      "arguments": [],
      "options": [],
      "subcommands": ["list", "get", "archive", "unarchive"],
      "result": null
    },
    {
      "path": "dashboards list",
      "stability": "stable",
      "description": "List dashboards by position, then title; archived ones only with --include-archived",
      "arguments": [],
      "options": [
        {
          "flags": "--include-archived",
          "name": "includeArchived",
          "description": "List archived dashboards too",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/dashboards-list.schema.json",
      "route": "GET /dashboards",
      "recovery": null
    },
    {
      "path": "dashboards get",
      "stability": "stable",
      "description": "Show a dashboard with every panel's numbers over a range, as Console shows them; check a dashboard you built with it",
      "arguments": [
        {
          "name": "key",
          "description": "Dashboard key",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--range <range>",
          "name": "range",
          "description": "How far back to read (defaults to the dashboard's defaultRange)",
          "value": "required",
          "choices": ["7d", "30d", "90d", "all"]
        }
      ],
      "subcommands": [],
      "result": "schemas/results/dashboards-get.schema.json",
      "route": "GET /dashboards/{key}",
      "recovery": null
    },
    {
      "path": "dashboards archive",
      "stability": "stable",
      "description": "Archive a dashboard in test: it leaves the list and stays readable",
      "arguments": [
        {
          "name": "key",
          "description": "Dashboard key",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/dashboards-archive.schema.json",
      "route": "POST /dashboards/{key}/archive",
      "recovery": "resume"
    },
    {
      "path": "dashboards unarchive",
      "stability": "stable",
      "description": "Restore an archived dashboard in test",
      "arguments": [
        {
          "name": "key",
          "description": "Dashboard key",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/dashboards-unarchive.schema.json",
      "route": "POST /dashboards/{key}/unarchive",
      "recovery": "resume"
    },
    {
      "path": "profiles",
      "stability": "stable",
      "description": "Read and configure member profiles, and moderate one member's",
      "arguments": [],
      "options": [],
      "subcommands": ["settings", "configure", "moderate"],
      "result": null
    },
    {
      "path": "profiles settings",
      "stability": "stable",
      "description": "Show the project's profile settings: visibility, defaults and revision",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/profiles-settings.schema.json",
      "route": "GET /profile-settings",
      "recovery": null
    },
    {
      "path": "profiles configure",
      "stability": "stable",
      "description": "Replace the project's profile settings from JSON: { visibility, defaults, expectedRevision, reason }",
      "arguments": [
        {
          "name": "file",
          "description": "JSON input, or - for stdin",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/profiles-configure.schema.json",
      "route": "POST /profile-settings",
      "recovery": "resume"
    },
    {
      "path": "profiles moderate",
      "stability": "stable",
      "description": "Reset a member's profile name, remove their avatar, or lock or unlock both",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reset-name",
          "name": "resetName",
          "description": "Reset the display name",
          "value": "none"
        },
        {
          "flags": "--remove-avatar",
          "name": "removeAvatar",
          "description": "Remove the uploaded avatar",
          "value": "none"
        },
        {
          "flags": "--lock",
          "name": "lock",
          "description": "Lock the name and avatar against changes",
          "value": "none"
        },
        {
          "flags": "--unlock",
          "name": "unlock",
          "description": "Unlock the name and avatar",
          "value": "none"
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/profiles-moderate.schema.json",
      "route": "POST /members/{member}/profile",
      "recovery": "resume"
    },
    {
      "path": "calendar",
      "stability": "stable",
      "description": "Read and change the project calendar that day, week and month windows follow",
      "arguments": [],
      "options": [],
      "subcommands": ["get", "configure"],
      "result": null
    },
    {
      "path": "calendar get",
      "stability": "stable",
      "description": "Show the project's time zone and any pending change",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/calendar-get.schema.json",
      "route": "GET /calendar",
      "recovery": null
    },
    {
      "path": "calendar configure",
      "stability": "stable",
      "description": "Change the project's time zone",
      "arguments": [],
      "options": [
        {
          "flags": "--time-zone <zone>",
          "name": "timeZone",
          "description": "IANA time zone, such as Europe/Berlin",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/calendar-configure.schema.json",
      "route": "POST /calendar",
      "recovery": "resume"
    },
    {
      "path": "resources",
      "stability": "stable",
      "description": "Inspect, archive and restore project resources while keeping their history",
      "arguments": [],
      "options": [],
      "subcommands": ["list", "archive", "unarchive"],
      "result": null
    },
    {
      "path": "resources list",
      "stability": "stable",
      "description": "List active and archived resources in this project and environment",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/resources-list.schema.json",
      "route": "GET /resources",
      "recovery": null
    },
    {
      "path": "resources archive",
      "stability": "stable",
      "description": "Deprecated: use the resource-specific archive command",
      "arguments": [
        {
          "name": "kind",
          "description": "Resource kind",
          "required": true,
          "choices": [
            "tracker",
            "referral",
            "leaderboard",
            "engagement",
            "collection",
            "quest-type",
            "image",
            "point-ledger"
          ]
        },
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Resume a saved operation with the same scope and inputs",
          "value": "required"
        }
      ],
      "subcommands": [],
      "deprecated": "Use domino <resource-kind> archive.",
      "result": "schemas/results/resources-archive.schema.json",
      "route": "POST /resources/lifecycle",
      "recovery": "resume"
    },
    {
      "path": "resources unarchive",
      "stability": "stable",
      "description": "Deprecated: use the resource-specific unarchive command",
      "arguments": [
        {
          "name": "kind",
          "description": "Resource kind",
          "required": true,
          "choices": [
            "tracker",
            "referral",
            "leaderboard",
            "engagement",
            "collection",
            "quest-type",
            "image",
            "point-ledger"
          ]
        },
        {
          "name": "resource",
          "description": "Resource key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Resume a saved operation with the same scope and inputs",
          "value": "required"
        }
      ],
      "subcommands": [],
      "deprecated": "Use domino <resource-kind> unarchive.",
      "result": "schemas/results/resources-unarchive.schema.json",
      "route": "POST /resources/lifecycle",
      "recovery": "resume"
    },
    {
      "path": "groups",
      "stability": "stable",
      "description": "Manage groups: named sets of members that prerequisites, leaderboards and referral rules read",
      "arguments": [],
      "options": [],
      "subcommands": [
        "list",
        "members",
        "show",
        "get",
        "member",
        "create",
        "update",
        "archive",
        "unarchive",
        "add",
        "remove"
      ],
      "result": null
    },
    {
      "path": "groups list",
      "stability": "stable",
      "description": "List groups by key, archived ones included",
      "arguments": [],
      "options": [
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "Opaque cursor from the previous page",
          "value": "required"
        },
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/groups-list.schema.json",
      "route": "GET /groups",
      "recovery": null
    },
    {
      "path": "groups members",
      "stability": "stable",
      "description": "List a group's current members by member ID",
      "arguments": [
        {
          "name": "group",
          "description": "Group key",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "Opaque cursor from the previous page",
          "value": "required"
        },
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/groups-members.schema.json",
      "route": "GET /groups/{group}/members",
      "recovery": null
    },
    {
      "path": "groups show",
      "stability": "stable",
      "description": "Deprecated: use groups get",
      "arguments": [
        {
          "name": "group",
          "description": "Group key",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "deprecated": "Use domino groups get.",
      "result": "schemas/results/groups-show.schema.json",
      "route": "GET /groups/{group}",
      "recovery": null
    },
    {
      "path": "groups get",
      "stability": "stable",
      "description": "Show a group with its member count",
      "arguments": [
        {
          "name": "group",
          "description": "Group key",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/groups-get.schema.json",
      "route": "GET /groups/{group}",
      "recovery": null
    },
    {
      "path": "groups member",
      "stability": "stable",
      "description": "Show one member's current membership in a group",
      "arguments": [
        {
          "name": "group",
          "description": "Group key",
          "required": true
        },
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/groups-member.schema.json",
      "route": "GET /groups/{group}/members/{member}",
      "recovery": null
    },
    {
      "path": "groups create",
      "stability": "stable",
      "description": "Create a group under a key that code can name",
      "arguments": [
        {
          "name": "key",
          "description": "Group key: letters, digits, _ and -",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--title <title>",
          "name": "title",
          "description": "Name shown to operators",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Reuse a saved operation with identical scope and inputs",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/groups-create.schema.json",
      "route": "POST /groups",
      "recovery": "resume"
    },
    {
      "path": "groups update",
      "stability": "stable",
      "description": "Rename a group; its key and members stay",
      "arguments": [
        {
          "name": "group",
          "description": "Group key",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--title <title>",
          "name": "title",
          "description": "New name shown to operators",
          "value": "required",
          "mandatory": true
        }
      ],
      "subcommands": [],
      "result": "schemas/results/groups-update.schema.json",
      "route": "POST /groups/{group}/update",
      "recovery": "replay"
    },
    {
      "path": "groups archive",
      "stability": "stable",
      "description": "Freeze a group's membership; prerequisites, leaderboards and referral rules still read its members",
      "arguments": [
        {
          "name": "group",
          "description": "Group key",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/groups-archive.schema.json",
      "route": "POST /groups/{group}/archive",
      "recovery": "replay"
    },
    {
      "path": "groups unarchive",
      "stability": "stable",
      "description": "Let a group's membership change again",
      "arguments": [
        {
          "name": "group",
          "description": "Group key",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/groups-unarchive.schema.json",
      "route": "POST /groups/{group}/unarchive",
      "recovery": "replay"
    },
    {
      "path": "groups add",
      "stability": "stable",
      "description": "Add a member to a group",
      "arguments": [
        {
          "name": "group",
          "description": "Group key",
          "required": true
        },
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Reuse a saved operation with identical scope and inputs",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/groups-add.schema.json",
      "route": "POST /groups/{group}/members",
      "recovery": "resume"
    },
    {
      "path": "groups remove",
      "stability": "stable",
      "description": "Remove a member from a group",
      "arguments": [
        {
          "name": "group",
          "description": "Group key",
          "required": true
        },
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Reuse a saved operation with identical scope and inputs",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/groups-remove.schema.json",
      "route": "POST /groups/{group}/members/{member}/remove",
      "recovery": "resume"
    },
    {
      "path": "operations",
      "stability": "stable",
      "description": "List, inspect, resume and remove saved CLI mutations without creating a new operation",
      "arguments": [],
      "options": [
        {
          "flags": "--directory <path>",
          "name": "directory",
          "description": "Recovery journal directory (defaults to RELAY_CONFIG_DIR/operations)",
          "value": "required"
        }
      ],
      "subcommands": ["list", "show", "resume", "forget", "prune"],
      "result": null
    },
    {
      "path": "operations list",
      "stability": "stable",
      "description": "List saved operations and their status; never includes credentials or input payloads",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/operations-list.schema.json",
      "recovery": null
    },
    {
      "path": "operations show",
      "stability": "stable",
      "description": "Inspect an operation and its committed result without contacting the API",
      "arguments": [
        {
          "name": "id",
          "description": "Saved operation ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/operations-show.schema.json",
      "recovery": null
    },
    {
      "path": "operations resume",
      "stability": "stable",
      "description": "Resume the original scoped input, or return its saved committed result",
      "arguments": [
        {
          "name": "id",
          "description": "Saved operation ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/operations-resume.schema.json",
      "recovery": "resume"
    },
    {
      "path": "operations forget",
      "stability": "stable",
      "description": "Remove a saved operation from the journal; a pending one can no longer be resumed",
      "arguments": [
        {
          "name": "id",
          "description": "Saved operation ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/operations-forget.schema.json",
      "recovery": null
    },
    {
      "path": "operations prune",
      "stability": "stable",
      "description": "Remove completed operations last changed before the cutoff; pending ones stay resumable",
      "arguments": [],
      "options": [
        {
          "flags": "--older-than <days>",
          "name": "olderThan",
          "description": "Age in days of the completed operations to remove",
          "value": "required",
          "default": 30
        }
      ],
      "subcommands": [],
      "result": "schemas/results/operations-prune.schema.json",
      "recovery": null
    },
    {
      "path": "login",
      "stability": "stable",
      "description": "Sign in through Console, or verify and save a personal token",
      "arguments": [],
      "options": [
        {
          "flags": "--no-browser",
          "name": "browser",
          "description": "Print the sign-in URL without opening a browser",
          "value": "none"
        },
        {
          "flags": "--token-stdin",
          "name": "tokenStdin",
          "description": "Read the token from stdin instead of RELAY_MANAGEMENT_TOKEN",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/login.schema.json",
      "recovery": null
    },
    {
      "path": "logout",
      "stability": "stable",
      "description": "Sign out and revoke a saved CLI session; remove saved personal tokens",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/logout.schema.json",
      "recovery": "reconcile"
    },
    {
      "path": "whoami",
      "stability": "stable",
      "description": "Show identity and accessible projects",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/whoami.schema.json",
      "route": "GET /access",
      "recovery": null
    },
    {
      "path": "migrate",
      "stability": "stable",
      "description": "Preview an offline authoring migration without changing resource names",
      "arguments": [],
      "options": [
        {
          "flags": "--write",
          "name": "write",
          "description": "Apply the displayed source and manifest changes",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/migrate.schema.json",
      "recovery": null
    },
    {
      "path": "init",
      "stability": "stable",
      "description": "Link an existing project without generating starter data",
      "arguments": [
        {
          "name": "directory",
          "description": "Existing project directory",
          "required": false,
          "default": "."
        }
      ],
      "options": [
        {
          "flags": "--entry <path>",
          "name": "entry",
          "description": "Register an existing quest entry, relative to the target directory (repeatable)",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/init.schema.json",
      "recovery": null
    },
    {
      "path": "build",
      "stability": "stable",
      "description": "Bundle all configured quests, engagement rules, reusable types, and collection slots without publishing",
      "arguments": [],
      "options": [
        {
          "flags": "--out <file>",
          "name": "out",
          "description": "Write the complete project bundle to a file instead of stdout",
          "value": "required"
        },
        {
          "flags": "--hosting-artifacts",
          "name": "hostingArtifacts",
          "description": "Write the quest and catalog artifacts Domino hosting builds from to .domino-build/ beside relay.json",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/build.schema.json",
      "recovery": null
    },
    {
      "path": "deploy",
      "stability": "stable",
      "description": "Atomically deploy quests, engagement rules, reusable types, and collection slots, preserving Console-owned settings and placement",
      "arguments": [],
      "options": [
        {
          "flags": "--yes",
          "name": "yes",
          "description": "Skip the terminal publication confirmation",
          "value": "none"
        },
        {
          "flags": "--dry-run",
          "name": "dryRun",
          "description": "Build locally only; does not preview Relay custom values",
          "value": "none"
        },
        {
          "flags": "--resume <id>",
          "name": "resume",
          "description": "Publish an existing test preview or recover its committed receipt",
          "value": "required"
        },
        {
          "flags": "--promote <id>",
          "name": "promote",
          "description": "Deprecated: use domino promote --environment test. Once this test deployment is published, prepares a promotion of all of test for Console approval",
          "value": "required",
          "deprecated": "Use domino promote --environment test."
        },
        {
          "flags": "--preview",
          "name": "preview",
          "description": "Resolve the full deployment against Relay without publishing",
          "value": "none"
        },
        {
          "flags": "--out <file>",
          "name": "out",
          "description": "Write the combined bundle to a file (requires --dry-run)",
          "value": "required"
        },
        {
          "flags": "--only <quest>",
          "name": "only",
          "description": "Deploy only the quest with this key (repeatable); every other quest and resource stays as published",
          "value": "required"
        }
      ],
      "subcommands": ["rollback"],
      "result": "schemas/results/deploy.schema.json",
      "recovery": "resume"
    },
    {
      "path": "deploy rollback",
      "stability": "stable",
      "description": "Publish the previous published test deployment again, undoing the latest deploy",
      "arguments": [
        {
          "name": "deployment",
          "description": "The deployment to roll back to: the previous published one, which is the default",
          "required": false
        }
      ],
      "options": [
        {
          "flags": "--yes",
          "name": "yes",
          "description": "Skip the terminal confirmation",
          "value": "none"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/deploy-rollback.schema.json",
      "recovery": "resume"
    },
    {
      "path": "promote",
      "stability": "stable",
      "description": "Prepare a promotion that makes live match test, for approval in Console",
      "arguments": [],
      "options": [
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/promote.schema.json",
      "route": "POST /promotions",
      "recovery": "resume"
    },
    {
      "path": "promotions",
      "stability": "stable",
      "description": "Read environment promotions, newest first",
      "arguments": [],
      "options": [],
      "subcommands": ["list", "get"],
      "result": null
    },
    {
      "path": "promotions list",
      "stability": "stable",
      "description": "List the project's promotions, newest first",
      "arguments": [],
      "options": [
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        },
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/promotions-list.schema.json",
      "route": "GET /promotions/history",
      "recovery": null
    },
    {
      "path": "promotions get",
      "stability": "stable",
      "description": "Show a promotion: its changes, warnings, build and decision",
      "arguments": [
        {
          "name": "promotion",
          "description": "Promotion ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/promotions-get.schema.json",
      "route": "GET /promotions/{promotion}",
      "recovery": null
    },
    {
      "path": "status",
      "stability": "stable",
      "description": "Deprecated: show Console's former overview page. Use metrics get, attempts list, quests list and pauses list",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "deprecated": "Use domino metrics get for counts, domino attempts list for attempts, domino quests list for current quests and domino pauses list for paused quests.",
      "result": "schemas/results/status.schema.json",
      "route": "GET /overview",
      "recovery": null
    },
    {
      "path": "quests",
      "stability": "stable",
      "description": "Deprecated without a subcommand: list current quests from Console's former page. Use quests list and quests get",
      "arguments": [],
      "options": [
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        },
        {
          "flags": "--offset <number>",
          "name": "offset",
          "description": "Page offset (0–1000000)",
          "value": "required"
        },
        {
          "flags": "--filter <value>",
          "name": "filter",
          "description": "Filter the collection",
          "value": "required"
        },
        {
          "flags": "--q <text>",
          "name": "q",
          "description": "Search the collection",
          "value": "required"
        }
      ],
      "subcommands": [
        "list",
        "get",
        "pause",
        "resume",
        "enrollments",
        "enroll",
        "withdraw",
        "replay",
        "archive",
        "unarchive"
      ],
      "deprecated": "Use domino quests list for current quests, and domino quests get <key> --json for one quest's settings values and overrides (configuration).",
      "result": "schemas/results/quests.schema.json",
      "route": "GET /quests",
      "recovery": null
    },
    {
      "path": "quests list",
      "stability": "stable",
      "description": "List each quest's current release, most recently published first, archived quests included",
      "arguments": [],
      "options": [
        {
          "flags": "--lifecycle <state>",
          "name": "lifecycle",
          "description": "Only quests in this lifecycle state; repeat for more than one",
          "value": "required",
          "choices": ["active", "paused", "archived"]
        }
      ],
      "subcommands": [],
      "result": "schemas/results/quests-list.schema.json",
      "route": "GET /quests/list",
      "recovery": null
    },
    {
      "path": "quests get",
      "stability": "stable",
      "description": "Show a quest's current release",
      "arguments": [
        {
          "name": "quest",
          "description": "Quest key or ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/quests-get.schema.json",
      "route": "GET /quests/list",
      "recovery": null
    },
    {
      "path": "quests pause",
      "stability": "stable",
      "description": "Pause quests",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--expected-revision <number>",
          "name": "expectedRevision",
          "description": "Revision shown by the latest read",
          "value": "required"
        },
        {
          "flags": "--revision <number>",
          "name": "revision",
          "description": "Deprecated: use --expected-revision. Removed in 2.0.0",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/quests-pause.schema.json",
      "route": "POST /quests/:id/pause",
      "recovery": "resume"
    },
    {
      "path": "quests resume",
      "stability": "stable",
      "description": "Resume quests",
      "arguments": [
        {
          "name": "resource",
          "description": "Resource ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--expected-revision <number>",
          "name": "expectedRevision",
          "description": "Revision shown by the latest read",
          "value": "required"
        },
        {
          "flags": "--revision <number>",
          "name": "revision",
          "description": "Deprecated: use --expected-revision. Removed in 2.0.0",
          "value": "required"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/quests-resume.schema.json",
      "route": "POST /quests/:id/resume",
      "recovery": "resume"
    },
    {
      "path": "quests enrollments",
      "stability": "stable",
      "description": "Read a member's active and withdrawn quest enrollments",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "Opaque cursor from the previous page",
          "value": "required"
        },
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/quests-enrollments.schema.json",
      "route": "GET /members/:member/quest-enrollments",
      "recovery": null
    },
    {
      "path": "quests enroll",
      "stability": "stable",
      "description": "Enroll or re-enroll a member, vouching for their consent",
      "arguments": [
        {
          "name": "quest",
          "description": "Quest key or ID",
          "required": true
        },
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/quests-enroll.schema.json",
      "route": "POST /quests/enrollments",
      "recovery": "resume"
    },
    {
      "path": "quests withdraw",
      "stability": "stable",
      "description": "Withdraw a quest enrollment, preserving admitted attempts and rewards",
      "arguments": [
        {
          "name": "quest",
          "description": "Quest key or ID",
          "required": true
        },
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--expected-revision <number>",
          "name": "expectedRevision",
          "description": "Enrollment revision from quests enrollments",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/quests-withdraw.schema.json",
      "route": "POST /quests/:quest/enrollments/:member/withdraw",
      "recovery": "resume"
    },
    {
      "path": "quests replay",
      "stability": "stable",
      "description": "Replay a test-environment attempt against local quest code and show whether the decision changed",
      "arguments": [
        {
          "name": "attempt",
          "description": "Attempt ID; omit with --capture",
          "required": false
        }
      ],
      "options": [
        {
          "flags": "--quest <file>",
          "name": "quest",
          "description": "Quest module to replay (default: the discovered quest whose key the capture names)",
          "value": "required"
        },
        {
          "flags": "--export <name>",
          "name": "export",
          "description": "Export name of the --quest module",
          "value": "required",
          "default": "default"
        },
        {
          "flags": "--capture <file>",
          "name": "capture",
          "description": "Replay a saved capture instead of fetching one",
          "value": "required"
        },
        {
          "flags": "--out <file>",
          "name": "out",
          "description": "Also write the capture JSON to this file, readable only by you (mode 0600)",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/quests-replay.schema.json",
      "route": "GET /attempts/:attempt/capture",
      "recovery": null
    },
    {
      "path": "quests archive",
      "stability": "stable",
      "description": "Archive a code-authored quest: no new attempts, hidden from collections; completions, attempts and rewards stay",
      "arguments": [
        {
          "name": "quest",
          "description": "Quest key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Reuse a saved operation with identical scope and inputs",
          "value": "required"
        },
        {
          "flags": "--expected-release <id>",
          "name": "expectedRelease",
          "description": "Refuse if the quest's current release has changed from this one",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/quests-archive.schema.json",
      "route": "POST /quests/:id/archive",
      "recovery": "resume"
    },
    {
      "path": "quests unarchive",
      "stability": "stable",
      "description": "Reopen an archived code-authored quest, if the app supports its interaction and its prerequisites are valid",
      "arguments": [
        {
          "name": "quest",
          "description": "Quest key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Reuse a saved operation with identical scope and inputs",
          "value": "required"
        },
        {
          "flags": "--expected-release <id>",
          "name": "expectedRelease",
          "description": "Refuse if the quest's current release has changed from this one",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/quests-unarchive.schema.json",
      "route": "POST /quests/:id/archive",
      "recovery": "resume"
    },
    {
      "path": "releases",
      "stability": "stable",
      "description": "Deprecated without a subcommand: list release history from Console's former page. Use releases list and releases get",
      "arguments": [],
      "options": [
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        },
        {
          "flags": "--offset <number>",
          "name": "offset",
          "description": "Page offset (0–1000000)",
          "value": "required"
        },
        {
          "flags": "--filter <value>",
          "name": "filter",
          "description": "Filter the collection",
          "value": "required"
        },
        {
          "flags": "--q <text>",
          "name": "q",
          "description": "Search the collection",
          "value": "required"
        }
      ],
      "subcommands": ["list", "get"],
      "deprecated": "Use domino releases list for release history, and domino releases get <release> --json for one release.",
      "result": "schemas/results/releases.schema.json",
      "route": "GET /releases",
      "recovery": null
    },
    {
      "path": "releases list",
      "stability": "stable",
      "description": "List every release the project's quests have had, newest first; needs publish",
      "arguments": [],
      "options": [
        {
          "flags": "--quest <quest>",
          "name": "quest",
          "description": "Only this quest's releases, by key or ID",
          "value": "required"
        },
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        },
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/releases-list.schema.json",
      "route": "GET /releases/list",
      "recovery": null
    },
    {
      "path": "releases get",
      "stability": "stable",
      "description": "Show one current or historical release; needs publish",
      "arguments": [
        {
          "name": "release",
          "description": "Release ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/releases-get.schema.json",
      "route": "GET /releases/{release}",
      "recovery": null
    },
    {
      "path": "metrics",
      "stability": "stable",
      "description": "Read the project's headline counts",
      "arguments": [],
      "options": [],
      "subcommands": ["get"],
      "result": null
    },
    {
      "path": "metrics get",
      "stability": "stable",
      "description": "Show counts of quests, members, attempts, completions, reviews, failures and entitlements, and completions by quest",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/metrics-get.schema.json",
      "route": "GET /metrics",
      "recovery": null
    },
    {
      "path": "usage",
      "stability": "stable",
      "description": "Read what the project uses against its plan",
      "arguments": [],
      "options": [],
      "subcommands": ["active-members", "real-people-in-test", "plan"],
      "result": null
    },
    {
      "path": "usage active-members",
      "stability": "stable",
      "description": "Show live active members this UTC month against the plan's limit, and the previous six months",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/usage-active-members.schema.json",
      "route": "GET /usage/active-members",
      "recovery": null
    },
    {
      "path": "usage real-people-in-test",
      "stability": "stable",
      "description": "Show the real people who joined the test environment against the plan's limit",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/usage-real-people-in-test.schema.json",
      "route": "GET /usage/real-people-in-test",
      "recovery": null
    },
    {
      "path": "usage plan",
      "stability": "stable",
      "description": "Show the project's plan, whether it may serve live, the organization's trial, the AI balance and the subscription",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/usage-plan.schema.json",
      "route": "GET /usage/plan",
      "recovery": null
    },
    {
      "path": "attempts",
      "stability": "stable",
      "description": "Read the project's quest attempts, accept a rejected one anyway, and delete an attempt's evidence",
      "arguments": [],
      "options": [],
      "subcommands": [
        "list",
        "get",
        "accept-anyway",
        "redact-evidence",
        "evidence-retention",
        "set-evidence-retention",
        "redact-evidence-before"
      ],
      "result": null
    },
    {
      "path": "attempts list",
      "stability": "stable",
      "description": "List attempts, newest first, with the releases they were admitted under and the members they name",
      "arguments": [],
      "options": [
        {
          "flags": "--q <text>",
          "name": "q",
          "description": "Part of the member, quest or attempt ID",
          "value": "required"
        },
        {
          "flags": "--quest <quest>",
          "name": "quest",
          "description": "Only this quest's attempts, by ID",
          "value": "required"
        },
        {
          "flags": "--status <status>",
          "name": "status",
          "description": "Only attempts with this status, such as needs-review",
          "value": "required"
        },
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        },
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/attempts-list.schema.json",
      "route": "GET /attempts",
      "recovery": null
    },
    {
      "path": "attempts get",
      "stability": "stable",
      "description": "Show an attempt with its release, recorded events and member",
      "arguments": [
        {
          "name": "attempt",
          "description": "Attempt ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/attempts-get.schema.json",
      "route": "GET /attempts/{attempt}",
      "recovery": null
    },
    {
      "path": "attempts accept-anyway",
      "stability": "stable",
      "description": "Accept a member's rejected attempt anyway, with a reason (needs review permission): the rejection stays in its history and the acceptance pays as a reviewer's approval would",
      "arguments": [
        {
          "name": "attempt",
          "description": "Rejected attempt ID: the member's latest on its quest",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why you are reversing the rejection, recorded with the decision",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/attempts-accept-anyway.schema.json",
      "route": "POST /attempts/{attempt}/accept-anyway",
      "recovery": "resume"
    },
    {
      "path": "attempts redact-evidence",
      "stability": "stable",
      "description": "Delete the evidence a member submitted for a decided attempt (photo, text, URL or quiz answers), with a reason (needs review permission): the attempt keeps its status, completion and rewards",
      "arguments": [
        {
          "name": "attempt",
          "description": "Accepted, progressed, rejected or failed attempt ID; attempts that submitted the same photo are redacted with it",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why the evidence is deleted, recorded in the audit history",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/attempts-redact-evidence.schema.json",
      "route": "POST /attempts/{attempt}/redact-evidence",
      "recovery": "resume"
    },
    {
      "path": "attempts evidence-retention",
      "stability": "stable",
      "description": "Show how long the project keeps submitted evidence (both environments): days after the decision, or keep, and when automatic deletion may start",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/attempts-evidence-retention.schema.json",
      "route": "GET /evidence-retention",
      "recovery": null
    },
    {
      "path": "attempts set-evidence-retention",
      "stability": "stable",
      "description": "Set how long the project keeps submitted evidence, in both environments (needs publish permission; shortening it needs an organization admin's key or a service key)",
      "arguments": [],
      "options": [
        {
          "flags": "--days <days>",
          "name": "days",
          "description": "Delete evidence this many days (1-3650) after its decision",
          "value": "required"
        },
        {
          "flags": "--keep",
          "name": "keep",
          "description": "Keep evidence until someone deletes it",
          "value": "none"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/attempts-set-evidence-retention.schema.json",
      "route": "POST /evidence-retention",
      "recovery": "resume"
    },
    {
      "path": "attempts redact-evidence-before",
      "stability": "stable",
      "description": "Delete the evidence of a quest's attempts decided before a time, for a retention schedule (needs review permission; in live, an organization admin's key or a service key): repeats until none is left, then prints the total",
      "arguments": [],
      "options": [
        {
          "flags": "--quest <quest>",
          "name": "quest",
          "description": "Quest key or ID",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--decided-before <ms>",
          "name": "decidedBefore",
          "description": "Unix milliseconds, not in the future: attempts decided before it lose their evidence",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why the evidence is deleted, recorded in the audit history",
          "value": "required",
          "mandatory": true
        }
      ],
      "subcommands": [],
      "result": "schemas/results/attempts-redact-evidence-before.schema.json",
      "recovery": "reconcile"
    },
    {
      "path": "pauses",
      "stability": "stable",
      "description": "Read which operations are paused: redemptions and each quest's participation",
      "arguments": [],
      "options": [],
      "subcommands": ["list"],
      "result": null
    },
    {
      "path": "pauses list",
      "stability": "stable",
      "description": "List every paused or resumed operation with the revision quests pause|resume and redemptions pause|resume take",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/pauses-list.schema.json",
      "route": "GET /operations",
      "recovery": null
    },
    {
      "path": "billing",
      "stability": "experimental",
      "description": "Subscribe the project to a plan through Stripe, and manage the organization's billing",
      "arguments": [],
      "options": [],
      "subcommands": [
        "show",
        "organization",
        "checkout",
        "change",
        "cancel",
        "resume",
        "topup",
        "portal"
      ],
      "result": null
    },
    {
      "path": "billing show",
      "stability": "experimental",
      "description": "Show the project's subscription, or why billing is not open to you",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/billing-show.schema.json",
      "route": "GET /billing",
      "recovery": null
    },
    {
      "path": "billing organization",
      "stability": "experimental",
      "description": "Show every project's plan and renewal, the organization's free allowances and its trial",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/billing-organization.schema.json",
      "route": "GET /organization/billing",
      "recovery": null
    },
    {
      "path": "billing checkout",
      "stability": "experimental",
      "description": "Start a Stripe Checkout that subscribes the project; open the URL to pay (organization administrators)",
      "arguments": [],
      "options": [
        {
          "flags": "--plan <plan>",
          "name": "plan",
          "description": "The plan, such as launch, growth or scale; Relay refuses one it does not offer",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--interval <interval>",
          "name": "interval",
          "description": "How often it renews",
          "value": "required",
          "choices": ["month", "year"],
          "default": "month"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/billing-checkout.schema.json",
      "route": "POST /billing/checkout",
      "recovery": "reconcile"
    },
    {
      "path": "billing change",
      "stability": "experimental",
      "description": "Move the project's subscription to another plan: a higher plan or annual billing now, prorated; a lower plan or monthly billing at the renewal (organization administrators)",
      "arguments": [],
      "options": [
        {
          "flags": "--plan <plan>",
          "name": "plan",
          "description": "The plan, such as launch, growth or scale; Relay refuses one it does not offer",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--interval <interval>",
          "name": "interval",
          "description": "How often it renews",
          "value": "required",
          "choices": ["month", "year"],
          "default": "month"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/billing-change.schema.json",
      "route": "POST /billing/plan",
      "recovery": "replay"
    },
    {
      "path": "billing cancel",
      "stability": "experimental",
      "description": "End the project's subscription when its period does; the project keeps its plan until then (organization administrators)",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/billing-cancel.schema.json",
      "route": "POST /billing/cancel",
      "recovery": "replay"
    },
    {
      "path": "billing resume",
      "stability": "experimental",
      "description": "Take back a cancellation before the period ends (organization administrators)",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/billing-resume.schema.json",
      "route": "POST /billing/resume",
      "recovery": "replay"
    },
    {
      "path": "billing topup",
      "stability": "experimental",
      "description": "Start a Stripe Checkout buying $10 packs of AI builder credit for the project; open the URL to pay (organization administrators)",
      "arguments": [],
      "options": [
        {
          "flags": "--quantity <packs>",
          "name": "quantity",
          "description": "How many $10 packs, 1 to 10",
          "value": "required",
          "default": 1
        }
      ],
      "subcommands": [],
      "result": "schemas/results/billing-topup.schema.json",
      "route": "POST /billing/topup",
      "recovery": "reconcile"
    },
    {
      "path": "billing portal",
      "stability": "experimental",
      "description": "Open Stripe's customer portal for the organization's cards, invoices and billing details (organization administrators)",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/billing-portal.schema.json",
      "route": "POST /billing/portal",
      "recovery": "reconcile"
    },
    {
      "path": "analytics",
      "stability": "stable",
      "description": "Read the project's activity over time",
      "arguments": [],
      "options": [],
      "subcommands": ["get", "metrics", "query"],
      "result": null
    },
    {
      "path": "analytics get",
      "stability": "stable",
      "description": "Show members, quests, points, offers and referrals over a range, with the change from the range before; quote these numbers instead of computing your own",
      "arguments": [],
      "options": [
        {
          "flags": "--range <range>",
          "name": "range",
          "description": "How far back to read",
          "value": "required",
          "choices": ["7d", "30d", "90d", "all"],
          "default": "30d"
        },
        {
          "flags": "--ledger <key>",
          "name": "ledger",
          "description": "The point ledger for the points section, by key or ID (defaults to the first ledger not archived)",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/analytics-get.schema.json",
      "route": "GET /analytics",
      "recovery": null
    },
    {
      "path": "analytics metrics",
      "stability": "stable",
      "description": "List the metric catalog: each metric's definition, breakdowns, filters, charts and whether it needs a point ledger",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/analytics-metrics.schema.json",
      "route": "GET /analytics/catalog",
      "recovery": null
    },
    {
      "path": "analytics query",
      "stability": "stable",
      "description": "Read one catalog metric over a range, optionally broken down by one dimension and filtered; quote these numbers instead of computing your own",
      "arguments": [],
      "options": [
        {
          "flags": "--metric <id>",
          "name": "metric",
          "description": "The metric's ID, such as quests.completions",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--range <range>",
          "name": "range",
          "description": "How far back to read",
          "value": "required",
          "choices": ["7d", "30d", "90d", "all"],
          "default": "30d"
        },
        {
          "flags": "--breakdown <dimension>",
          "name": "breakdown",
          "description": "Split the metric by one dimension the metric accepts, such as quest",
          "value": "required"
        },
        {
          "flags": "--filter <name=keys>",
          "name": "filter",
          "description": "Narrow by keys, such as quest=a,b or group=vip (repeatable)",
          "value": "required"
        },
        {
          "flags": "--ledger <key>",
          "name": "ledger",
          "description": "The point ledger a points metric reads, by key or ID",
          "value": "required"
        },
        {
          "flags": "--limit <rows>",
          "name": "limit",
          "description": "Breakdown rows to show, 1 to 100 (default 100); the rest are summed into Other",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/analytics-query.schema.json",
      "route": "GET /analytics/query",
      "recovery": null
    },
    {
      "path": "members",
      "stability": "stable",
      "description": "Read the project's members in the selected environment",
      "arguments": [],
      "options": [],
      "subcommands": [
        "identities",
        "unlink-identity",
        "relink-identity",
        "identity-sign-in",
        "identity-links",
        "relink",
        "get",
        "erase",
        "ban",
        "unban",
        "progress",
        "consent",
        "oauth-accounts",
        "counters",
        "moderate-counter",
        "lookup",
        "list"
      ],
      "result": null
    },
    {
      "path": "members identities",
      "stability": "stable",
      "description": "List a member's wallets, X, Discord and Telegram accounts and app identities, with their link, sign-in and revision",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "Opaque cursor from the previous page",
          "value": "required"
        },
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/members-identities.schema.json",
      "route": "GET /members/:member/identity-states",
      "recovery": null
    },
    {
      "path": "members unlink-identity",
      "stability": "stable",
      "description": "Stop an identity attributing for a member, from a JSON input naming it by kind",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        },
        {
          "name": "file",
          "description": "JSON input, or - for stdin",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/members-unlink-identity.schema.json",
      "route": "POST /members/:member/identity-states/unlink",
      "recovery": "resume"
    },
    {
      "path": "members relink-identity",
      "stability": "stable",
      "description": "Restore an unlinked identity's attribution, from a JSON input naming it by kind",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        },
        {
          "name": "file",
          "description": "JSON input, or - for stdin",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/members-relink-identity.schema.json",
      "route": "POST /members/:member/identity-states/relink",
      "recovery": "resume"
    },
    {
      "path": "members identity-sign-in",
      "stability": "stable",
      "description": "Turn sign-in with a member's wallet on or off, from a JSON input",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        },
        {
          "name": "file",
          "description": "JSON input, or - for stdin",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/members-identity-sign-in.schema.json",
      "route": "POST /members/:member/identity-states/sign-in",
      "recovery": "resume"
    },
    {
      "path": "members identity-links",
      "stability": "stable",
      "description": "List exact owned wallet and OAuth identities and relink fences",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "Opaque cursor from the previous page",
          "value": "required"
        },
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        }
      ],
      "subcommands": [],
      "deprecated": "Use domino members identities.",
      "result": "schemas/results/members-identity-links.schema.json",
      "route": "GET /members/:member/identity-links",
      "recovery": null
    },
    {
      "path": "members relink",
      "stability": "stable",
      "description": "Restore wallet or OAuth attribution using a kind-keyed JSON input",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        },
        {
          "name": "file",
          "description": "JSON input, or - for stdin",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "deprecated": "Use domino members relink-identity.",
      "result": "schemas/results/members-relink.schema.json",
      "route": "POST /members/:member/identity-links/relink",
      "recovery": "resume"
    },
    {
      "path": "members get",
      "stability": "stable",
      "description": "Show a member with their accounts, balances, profile and recent activity",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/members-get.schema.json",
      "route": "GET /members/{member}",
      "recovery": null
    },
    {
      "path": "members erase",
      "stability": "stable",
      "description": "Erase a member on the person's request (needs publish): deletes their profile, accounts, identities, wallets, sessions, consent and evidence, keeps their points, completions and rewards under the member ID, and can't be undone",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit history and kept: put no personal data in it",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--yes",
          "name": "yes",
          "description": "Skip the terminal confirmation",
          "value": "none"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/members-erase.schema.json",
      "route": "POST /members/{member}/erase",
      "recovery": "resume"
    },
    {
      "path": "members ban",
      "stability": "experimental",
      "description": "Ban a member (needs review; publish too to reverse referral payouts or point awards): refuses their attempts, completions and invitations, rejects attempts waiting for a decision, leaves them out of leaderboards, and with --rollback takes back what they earned in the background",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit history; the member never sees it",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--rollback <kinds>",
          "name": "rollback",
          "description": "What to take back, comma-separated: completions (revokes them and the inviter's bonus on them), referral-payouts, point-awards (manual awards, imported balances and engagement payouts)",
          "value": "required"
        },
        {
          "flags": "--dry-run",
          "name": "dryRun",
          "description": "Preview what the ban would take back, per point ledger, without banning",
          "value": "none"
        },
        {
          "flags": "--yes",
          "name": "yes",
          "description": "Skip the terminal confirmation",
          "value": "none"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/members-ban.schema.json",
      "route": "POST /members/{member}/ban",
      "recovery": "resume"
    },
    {
      "path": "members unban",
      "stability": "experimental",
      "description": "Lift a member's ban (needs review); --restore-completions restores the completions the ban's rollback revoked",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit history",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--restore-completions",
          "name": "restoreCompletions",
          "description": "Restore the completions the ban's rollback revoked; reversed payouts and awards stay reversed",
          "value": "none"
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Send this action ID without saving the change; reuse it for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/members-unban.schema.json",
      "route": "POST /members/{member}/unban",
      "recovery": "resume"
    },
    {
      "path": "members progress",
      "stability": "stable",
      "description": "Show a member's quest progress, recent attempts and balances, without quest code",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/members-progress.schema.json",
      "route": "GET /members/{member}/progress",
      "recovery": null
    },
    {
      "path": "members consent",
      "stability": "experimental",
      "description": "Show a member's current marketing consent per channel and its history, newest first",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "History page size (1–100)",
          "value": "required"
        },
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The history.nextCursor a previous page returned",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/members-consent.schema.json",
      "recovery": null
    },
    {
      "path": "members oauth-accounts",
      "stability": "stable",
      "description": "List a member's connected OAuth accounts with the revision unlinking takes",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "deprecated": "Use domino members identities.",
      "result": "schemas/results/members-oauth-accounts.schema.json",
      "route": "GET /members/{member}/oauth-accounts",
      "recovery": null
    },
    {
      "path": "members counters",
      "stability": "stable",
      "description": "List a member's counter contributions to a quest, newest first, with their status",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        },
        {
          "name": "quest",
          "description": "Quest key or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        },
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/members-counters.schema.json",
      "route": "GET /members/{member}/counters/{quest}",
      "recovery": null
    },
    {
      "path": "members moderate-counter",
      "stability": "stable",
      "description": "Exclude one counter contribution from a member's progress, or with --include count it again",
      "arguments": [
        {
          "name": "member",
          "description": "Member ID",
          "required": true
        },
        {
          "name": "quest",
          "description": "Quest key or ID",
          "required": true
        },
        {
          "name": "contribution",
          "description": "Contribution ID from members counters",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--include",
          "name": "include",
          "description": "Count an excluded contribution again",
          "value": "none"
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/members-moderate-counter.schema.json",
      "route": "POST /members/{member}/counters/{quest}/{contribution}/moderate",
      "recovery": "resume"
    },
    {
      "path": "members lookup",
      "stability": "stable",
      "description": "Find the one member holding exactly this account, such as a Discord user ID",
      "arguments": [],
      "options": [
        {
          "flags": "--kind <kind>",
          "name": "kind",
          "description": "The account's kind as a member import names it: x, discord, telegram, an app identity kind such as app:game, or wallet",
          "value": "required"
        },
        {
          "flags": "--subject <subject>",
          "name": "subject",
          "description": "The numeric X, Discord or Telegram user ID, or the app identity's subject",
          "value": "required"
        },
        {
          "flags": "--chain <chain>",
          "name": "chain",
          "description": "With --kind wallet: solana, eip155 or cosmos",
          "value": "required"
        },
        {
          "flags": "--address <address>",
          "name": "address",
          "description": "With --kind wallet: the address, as the member's accounts list it",
          "value": "required"
        },
        {
          "flags": "--provider <provider>",
          "name": "provider",
          "description": "Deprecated: account provider as members list shows it, such as discord or email, or an app identity kind such as app:game, with --subject",
          "value": "required",
          "deprecated": "Use --kind."
        }
      ],
      "subcommands": [],
      "result": "schemas/results/members-lookup.schema.json",
      "route": "GET /members/lookup",
      "recovery": null
    },
    {
      "path": "members list",
      "stability": "stable",
      "description": "List members, most recently joined first, with their accounts and activity counts",
      "arguments": [],
      "options": [
        {
          "flags": "--q <text>",
          "name": "q",
          "description": "Part of a member ID, profile name, or account subject, name or email",
          "value": "required"
        },
        {
          "flags": "--needs-review",
          "name": "needsReview",
          "description": "Only members with an attempt waiting for review",
          "value": "none"
        },
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        },
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/members-list.schema.json",
      "route": "GET /members/list",
      "recovery": null
    },
    {
      "path": "x",
      "stability": "stable",
      "description": "Read public X data for the project's configuration",
      "arguments": [],
      "options": [],
      "subcommands": ["lookup"],
      "result": null
    },
    {
      "path": "x lookup",
      "stability": "stable",
      "description": "Resolve an X handle to the account's stable user ID; this does not show who owns the account",
      "arguments": [
        {
          "name": "handle",
          "description": "X handle, with or without @",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/x-lookup.schema.json",
      "route": "GET /x/users/lookup",
      "recovery": null
    },
    {
      "path": "integrations",
      "stability": "stable",
      "description": "Read and connect the project's integrations",
      "arguments": [],
      "options": [],
      "subcommands": ["discord"],
      "result": null
    },
    {
      "path": "integrations discord",
      "stability": "stable",
      "description": "The project's Discord server. Installing Domino's bot into a new server takes an organization administrator in Console",
      "arguments": [],
      "options": [],
      "subcommands": ["get", "status", "servers", "connect"],
      "result": null
    },
    {
      "path": "integrations discord get",
      "stability": "stable",
      "description": "Read the project's Discord connection in this environment",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/integrations-discord-get.schema.json",
      "route": "GET /integrations",
      "recovery": null
    },
    {
      "path": "integrations discord status",
      "stability": "stable",
      "description": "Deprecated: use integrations discord get",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "deprecated": "Use domino integrations discord get.",
      "result": "schemas/results/integrations-discord-status.schema.json",
      "route": "GET /integrations",
      "recovery": null
    },
    {
      "path": "integrations discord servers",
      "stability": "stable",
      "description": "List the Discord servers other projects of the organization connect in this environment, which connect accepts",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/integrations-discord-servers.schema.json",
      "route": "GET /integrations/discord/servers",
      "recovery": null
    },
    {
      "path": "integrations discord connect",
      "stability": "stable",
      "description": "Connect a server another project of the organization connects, without installing the bot again; needs publish permission",
      "arguments": [],
      "options": [
        {
          "flags": "--server <id>",
          "name": "server",
          "description": "Discord server ID, from servers",
          "value": "required",
          "mandatory": true
        }
      ],
      "subcommands": [],
      "result": "schemas/results/integrations-discord-connect.schema.json",
      "route": "POST /integrations/discord/servers/{server}/connect",
      "recovery": "reconcile"
    },
    {
      "path": "connections",
      "stability": "experimental",
      "description": "Connect the project to plugins, the integrations Domino writes, and manage those connections",
      "arguments": [],
      "options": [],
      "subcommands": [
        "list",
        "get",
        "connect",
        "authorize",
        "update",
        "activity",
        "resync",
        "log",
        "disconnect"
      ],
      "result": null
    },
    {
      "path": "connections list",
      "stability": "experimental",
      "description": "List the plugins available to the project and each one's connection",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/connections-list.schema.json",
      "route": "GET /connections",
      "recovery": null
    },
    {
      "path": "connections get",
      "stability": "experimental",
      "description": "Read one plugin's connection: status, config, its schema, and which secrets are set",
      "arguments": [
        {
          "name": "plugin",
          "description": "Plugin ID, from connections list",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/connections-get.schema.json",
      "route": "GET /connections/{plugin}",
      "recovery": null
    },
    {
      "path": "connections connect",
      "stability": "experimental",
      "description": "Connect a plugin with its config and secrets; reads the secrets from stdin or hidden prompts",
      "arguments": [
        {
          "name": "plugin",
          "description": "Plugin ID, from connections list",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--config-json <json>",
          "name": "configJson",
          "description": "The config as a JSON object, valid against the plugin's configSchema",
          "value": "required",
          "default": "{}"
        },
        {
          "flags": "--dry-run",
          "name": "dryRun",
          "description": "Test environment only: connect a destination that runs as a dry run, with no secrets or vendor account; it records what it would have sent (connections log)",
          "value": "none"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Idempotency key: send the same one when you retry this connect",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/connections-connect.schema.json",
      "route": "POST /connections/{plugin}/connect",
      "recovery": "replay"
    },
    {
      "path": "connections authorize",
      "stability": "experimental",
      "description": "Connect, or reconnect, a plugin through the vendor's OAuth: prints the URL a person opens to grant access",
      "arguments": [
        {
          "name": "plugin",
          "description": "Plugin ID, from connections list",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--config-json <json>",
          "name": "configJson",
          "description": "The config as a JSON object, valid against the plugin's configSchema",
          "value": "required",
          "default": "{}"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Idempotency key: send the same one when you retry this authorize",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/connections-authorize.schema.json",
      "route": "POST /connections/{plugin}/authorize",
      "recovery": "replay"
    },
    {
      "path": "connections update",
      "stability": "experimental",
      "description": "Replace a connection's config, some of its secrets, or both",
      "arguments": [
        {
          "name": "plugin",
          "description": "Plugin ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--config-json <json>",
          "name": "configJson",
          "description": "The whole new config, as a JSON object",
          "value": "required"
        },
        {
          "flags": "--secrets",
          "name": "secrets",
          "description": "Also change secrets: a JSON object on stdin, whose missing fields keep their values, or a hidden prompt for each field",
          "value": "none"
        },
        {
          "flags": "--expected-revision <n>",
          "name": "expectedRevision",
          "description": "Refuse the change if the connection's revision moved on since you read it",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Idempotency key: send the same one when you retry this update",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/connections-update.schema.json",
      "route": "POST /connections/{plugin}/update",
      "recovery": "replay"
    },
    {
      "path": "connections activity",
      "stability": "experimental",
      "description": "Read a destination's sync status: last sync, members synced and skipped by reason, the latest backfill or resync, and recent errors",
      "arguments": [
        {
          "name": "plugin",
          "description": "Plugin ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/connections-activity.schema.json",
      "route": "GET /connections/{plugin}/activity",
      "recovery": null
    },
    {
      "path": "connections resync",
      "stability": "experimental",
      "description": "Send every member's profile and attributes to a connected destination again, never past events",
      "arguments": [
        {
          "name": "plugin",
          "description": "Plugin ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Idempotency key: send the same one when you retry this resync",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/connections-resync.schema.json",
      "route": "POST /connections/{plugin}/resync",
      "recovery": "replay"
    },
    {
      "path": "connections log",
      "stability": "experimental",
      "description": "List what a dry-run destination would have sent, newest first",
      "arguments": [
        {
          "name": "plugin",
          "description": "Plugin ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--limit <n>",
          "name": "limit",
          "description": "Requests per page, 1 to 100",
          "value": "required",
          "default": "50"
        },
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "nextCursor from the previous page",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/connections-log.schema.json",
      "route": "GET /connections/{plugin}/dry-run",
      "recovery": null
    },
    {
      "path": "connections disconnect",
      "stability": "experimental",
      "description": "Disconnect a plugin: deletes its secrets and keeps the connection to connect again",
      "arguments": [
        {
          "name": "plugin",
          "description": "Plugin ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--expected-revision <n>",
          "name": "expectedRevision",
          "description": "Refuse if the connection's revision moved on since you read it",
          "value": "required"
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Idempotency key: send the same one when you retry this disconnect",
          "value": "required"
        },
        {
          "flags": "--yes",
          "name": "yes",
          "description": "Skip the terminal confirmation",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/connections-disconnect.schema.json",
      "route": "POST /connections/{plugin}/disconnect",
      "recovery": "replay"
    },
    {
      "path": "identity-integrations",
      "stability": "stable",
      "description": "Read the app login keys that let an existing app sign its users in as members. An organization administrator's CLI session lists them; creating, rotating and revoking them, and their secrets, stay in Console",
      "arguments": [],
      "options": [],
      "subcommands": ["list", "kinds"],
      "result": null
    },
    {
      "path": "identity-integrations list",
      "stability": "stable",
      "description": "List the project's identity integrations in this environment: origin, identity kind and each secret's expiry and last use, never a secret",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/identity-integrations-list.schema.json",
      "route": "GET /identity-integrations",
      "recovery": null
    },
    {
      "path": "identity-integrations kinds",
      "stability": "stable",
      "description": "List the app:<name> identity kinds claimed in this environment and the integration that owns each",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/identity-integrations-kinds.schema.json",
      "route": "GET /identity-integrations/kinds",
      "recovery": null
    },
    {
      "path": "api",
      "stability": "stable",
      "description": "Call a /management/v1 route",
      "arguments": [
        {
          "name": "method",
          "description": "HTTP method",
          "required": true,
          "choices": ["GET", "POST", "PUT", "DELETE", "PATCH"]
        },
        {
          "name": "path",
          "description": "Path within /management/v1, for example /quests",
          "required": true
        },
        {
          "name": "file",
          "description": "JSON body file, or - for stdin",
          "required": false
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/api.schema.json",
      "route": "any",
      "recovery": "reconcile"
    },
    {
      "path": "check",
      "stability": "stable",
      "description": "Check the local app and bundle quest definitions without publishing",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/check.schema.json",
      "recovery": null
    },
    {
      "path": "dev",
      "stability": "experimental",
      "description": "Run your app with hosted test data and a shareable HTTPS preview",
      "arguments": [],
      "options": [
        {
          "flags": "--cloudflared <path>",
          "name": "cloudflared",
          "description": "Path to the Cloudflare Tunnel connector",
          "value": "required"
        },
        {
          "flags": "--port <port>",
          "name": "port",
          "description": "App development server port",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/dev.schema.json",
      "recovery": null
    },
    {
      "path": "create",
      "stability": "stable",
      "description": "Create a hosted project from a starter and check it out locally",
      "arguments": [
        {
          "name": "name",
          "description": "Project identifier (prompted if omitted)",
          "required": false
        }
      ],
      "options": [
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Reuse a saved creation operation with identical inputs",
          "value": "required"
        },
        {
          "flags": "--directory <path>",
          "name": "directory",
          "description": "Local directory (defaults to project name)",
          "value": "required"
        },
        {
          "flags": "--template <id>",
          "name": "template",
          "description": "Starter to begin from (prompted if omitted, otherwise campaign)",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/create.schema.json",
      "recovery": "resume"
    },
    {
      "path": "checkout",
      "stability": "stable",
      "description": "Recover or clone a hosted campaign with Domino Git authentication",
      "arguments": [
        {
          "name": "project",
          "description": "Project ID or slug (choose interactively if omitted)",
          "required": false
        }
      ],
      "options": [
        {
          "flags": "--directory <path>",
          "name": "directory",
          "description": "Local directory (defaults to the project as given)",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/checkout.schema.json",
      "recovery": null
    },
    {
      "path": "starters",
      "stability": "stable",
      "description": "Copy a starter's current files, for an existing project",
      "arguments": [],
      "options": [],
      "subcommands": ["export"],
      "result": null
    },
    {
      "path": "starters export",
      "stability": "stable",
      "description": "Write the starter that domino create uses today into a new or empty directory",
      "arguments": [
        {
          "name": "template",
          "description": "Starter ID, for example campaign",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--directory <path>",
          "name": "directory",
          "description": "New or empty directory to write the files into",
          "value": "required",
          "mandatory": true
        }
      ],
      "subcommands": [],
      "result": "schemas/results/starters-export.schema.json",
      "route": "GET /starters/{id}",
      "recovery": null
    },
    {
      "path": "secrets",
      "stability": "stable",
      "description": "Manage the hosted app's secrets, bound to Worker builds staged afterwards",
      "arguments": [],
      "options": [],
      "subcommands": ["list", "set", "delete"],
      "result": null
    },
    {
      "path": "secrets list",
      "stability": "stable",
      "description": "List secret names, when they last changed, and declared secrets not yet set",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/secrets-list.schema.json",
      "route": "GET /secrets",
      "recovery": null
    },
    {
      "path": "secrets set",
      "stability": "stable",
      "description": "Create or replace a secret; reads the value from stdin",
      "arguments": [
        {
          "name": "name",
          "description": "Binding name, for example APP_API_KEY",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/secrets-set.schema.json",
      "route": "PUT /secrets/{name}",
      "recovery": "reconcile"
    },
    {
      "path": "secrets delete",
      "stability": "stable",
      "description": "Delete a secret",
      "arguments": [
        {
          "name": "name",
          "description": "Secret name",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--yes",
          "name": "yes",
          "description": "Skip the terminal confirmation",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/secrets-delete.schema.json",
      "recovery": "reconcile"
    },
    {
      "path": "domains",
      "stability": "stable",
      "description": "Attach your own domain to the project's live hosted app",
      "arguments": [],
      "options": [],
      "subcommands": ["list", "get", "add", "recheck", "remove"],
      "result": null
    },
    {
      "path": "domains list",
      "stability": "stable",
      "description": "List the project's custom domains and their state",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/domains-list.schema.json",
      "route": "GET /domains",
      "recovery": null
    },
    {
      "path": "domains get",
      "stability": "stable",
      "description": "Show a domain: each DNS record and what public DNS returned, Cloudflare's statuses, and when Domino checks next",
      "arguments": [
        {
          "name": "domain",
          "description": "The domain's hostname or ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/domains-get.schema.json",
      "route": "GET /domains/{id}",
      "recovery": null
    },
    {
      "path": "domains add",
      "stability": "stable",
      "description": "Attach a hostname and show the DNS records to add",
      "arguments": [
        {
          "name": "hostname",
          "description": "For example quests.example.com",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/domains-add.schema.json",
      "route": "POST /domains",
      "recovery": "reconcile"
    },
    {
      "path": "domains recheck",
      "stability": "stable",
      "description": "Check DNS and the certificate now, at most every 10 seconds and within the organization's 30 domain changes an hour",
      "arguments": [
        {
          "name": "domain",
          "description": "The domain's hostname or ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/domains-recheck.schema.json",
      "route": "POST /domains/{id}/recheck",
      "recovery": "reconcile"
    },
    {
      "path": "domains remove",
      "stability": "stable",
      "description": "Detach a domain; it stops serving within about a minute",
      "arguments": [
        {
          "name": "domain",
          "description": "The domain's hostname or ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--yes",
          "name": "yes",
          "description": "Skip the terminal confirmation",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/domains-remove.schema.json",
      "route": "DELETE /domains/{id}",
      "recovery": "reconcile"
    },
    {
      "path": "tokens",
      "stability": "stable",
      "description": "Manage your personal API keys",
      "arguments": [],
      "options": [],
      "subcommands": ["list", "create", "scope", "revoke"],
      "result": null
    },
    {
      "path": "tokens list",
      "stability": "stable",
      "description": "List your personal API keys with their project, environment, permissions and expiry",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/tokens-list.schema.json",
      "route": "GET /tokens",
      "recovery": null
    },
    {
      "path": "tokens create",
      "stability": "stable",
      "description": "Issue a personal API key for the selected project, in test (live keys come from Console)",
      "arguments": [],
      "options": [
        {
          "flags": "--name <name>",
          "name": "name",
          "description": "A name to recognize the key by",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--permission <permission>",
          "name": "permission",
          "description": "A permission the key holds, such as read, ingest or confirm; repeat for more",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--ingest-tracker <tracker>",
          "name": "ingestTracker",
          "description": "Restrict ingestion to this custom tracker key or ID; repeat for more",
          "value": "required"
        },
        {
          "flags": "--days <days>",
          "name": "days",
          "description": "Days until the key expires, 1 to 90",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/tokens-create.schema.json",
      "route": "POST /tokens",
      "recovery": "reconcile"
    },
    {
      "path": "tokens scope",
      "stability": "stable",
      "description": "Replace a key's ingestion restriction without changing its secret",
      "arguments": [
        {
          "name": "id",
          "description": "The key's ID, from domino tokens list",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--ingest-tracker <tracker>",
          "name": "ingestTracker",
          "description": "Allow ingestion into this custom tracker key or ID only; repeat for more",
          "value": "required"
        },
        {
          "flags": "--clear",
          "name": "clear",
          "description": "Remove the restriction: ingest into every tracker",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/tokens-scope.schema.json",
      "route": "PUT /tokens/{id}/scope",
      "recovery": "reconcile"
    },
    {
      "path": "tokens revoke",
      "stability": "stable",
      "description": "Revoke a personal API key; requests with it fail at once",
      "arguments": [
        {
          "name": "id",
          "description": "The key's ID, from domino tokens list",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--yes",
          "name": "yes",
          "description": "Skip the terminal confirmation",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/tokens-revoke.schema.json",
      "route": "DELETE /tokens/{id}",
      "recovery": "reconcile"
    },
    {
      "path": "storage",
      "stability": "stable",
      "description": "Inspect hosted app storage in test, or in live with --environment live; clear test data",
      "arguments": [],
      "options": [],
      "subcommands": [
        "list",
        "tables",
        "rows",
        "cell",
        "keys",
        "get",
        "clear",
        "delete"
      ],
      "result": null
    },
    {
      "path": "storage list",
      "stability": "stable",
      "description": "List declared and retained KV and SQL stores, without provider IDs",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/storage-list.schema.json",
      "route": "GET /storage",
      "recovery": null
    },
    {
      "path": "storage tables",
      "stability": "stable",
      "description": "List a SQL store's tables and views",
      "arguments": [
        {
          "name": "name",
          "description": "SQL store binding name",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/storage-tables.schema.json",
      "route": "GET /storage/sql/{name}/tables",
      "recovery": null
    },
    {
      "path": "storage rows",
      "stability": "stable",
      "description": "Read a page of a SQL table's rows",
      "arguments": [
        {
          "name": "name",
          "description": "SQL store binding name",
          "required": true
        },
        {
          "name": "table",
          "description": "Table or view name",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        },
        {
          "flags": "--offset <n>",
          "name": "offset",
          "description": "Deprecated: use --cursor",
          "value": "required",
          "default": "0",
          "deprecated": "Use --cursor."
        }
      ],
      "subcommands": [],
      "result": "schemas/results/storage-rows.schema.json",
      "route": "GET /storage/sql/{name}/rows",
      "recovery": null
    },
    {
      "path": "storage cell",
      "stability": "stable",
      "description": "Read one SQL value in full, where rows shows a preview",
      "arguments": [
        {
          "name": "name",
          "description": "SQL store binding name",
          "required": true
        },
        {
          "name": "table",
          "description": "Table or view name",
          "required": true
        },
        {
          "name": "row",
          "description": "Row position in storage order: a rows page's offset plus the row's index on it",
          "required": true
        },
        {
          "name": "column",
          "description": "Column name",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        },
        {
          "flags": "--all",
          "name": "all",
          "description": "Follow nextCursor and print the whole value as one page",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/storage-cell.schema.json",
      "route": "GET /storage/sql/{name}/cell",
      "recovery": null
    },
    {
      "path": "storage keys",
      "stability": "stable",
      "description": "List a page of a KV store's keys",
      "arguments": [
        {
          "name": "name",
          "description": "KV store binding name",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--prefix <prefix>",
          "name": "prefix",
          "description": "Only keys starting with this prefix",
          "value": "required"
        },
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/storage-keys.schema.json",
      "route": "GET /storage/kv/{name}/keys",
      "recovery": null
    },
    {
      "path": "storage get",
      "stability": "stable",
      "description": "Read a KV value's size and text preview",
      "arguments": [
        {
          "name": "name",
          "description": "KV store binding name",
          "required": true
        },
        {
          "name": "key",
          "description": "Key",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/storage-get.schema.json",
      "route": "GET /storage/kv/{name}/value",
      "recovery": null
    },
    {
      "path": "storage clear",
      "stability": "stable",
      "description": "Test only: empty SQL tables or delete KV keys, keeping the schema and d1_migrations",
      "arguments": [
        {
          "name": "kind",
          "description": "kv or sql",
          "required": true
        },
        {
          "name": "name",
          "description": "Store binding name",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--table <table>",
          "name": "table",
          "description": "SQL: a table to empty; repeat for more",
          "value": "required",
          "default": []
        },
        {
          "flags": "--all-tables",
          "name": "allTables",
          "description": "SQL: empty every table",
          "value": "none"
        },
        {
          "flags": "--keep <table>",
          "name": "keep",
          "description": "SQL, with --all-tables: a table to leave as it is; repeat for more",
          "value": "required",
          "default": []
        },
        {
          "flags": "--prefix <prefix>",
          "name": "prefix",
          "description": "KV: delete the keys starting with this prefix",
          "value": "required"
        },
        {
          "flags": "--all-keys",
          "name": "allKeys",
          "description": "KV: delete every key",
          "value": "none"
        },
        {
          "flags": "--dry-run",
          "name": "dryRun",
          "description": "Only count the rows or keys",
          "value": "none"
        },
        {
          "flags": "--yes",
          "name": "yes",
          "description": "Skip the terminal confirmation",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/storage-clear.schema.json",
      "route": "POST /storage/{kind}/{name}/clear",
      "recovery": "reconcile"
    },
    {
      "path": "storage delete",
      "stability": "stable",
      "description": "Delete a store no serving build declares, with its data",
      "arguments": [
        {
          "name": "kind",
          "description": "kv or sql",
          "required": true
        },
        {
          "name": "name",
          "description": "Store binding name",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--yes",
          "name": "yes",
          "description": "Skip the terminal confirmation",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/storage-delete.schema.json",
      "route": "DELETE /storage/{kind}/{name}",
      "recovery": "reconcile"
    },
    {
      "path": "schedules",
      "stability": "stable",
      "description": "Inspect and control the hosted app's scheduled jobs in test, or the live app's with --environment live",
      "arguments": [],
      "options": [],
      "subcommands": [
        "list",
        "runs",
        "run",
        "pause",
        "archive",
        "resume",
        "recover"
      ],
      "result": null
    },
    {
      "path": "schedules list",
      "stability": "stable",
      "description": "Show declarations, the last run, blocked jobs and the next run",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/schedules-list.schema.json",
      "route": "GET /schedules",
      "recovery": null
    },
    {
      "path": "schedules runs",
      "stability": "stable",
      "description": "Show a schedule's latest twenty runs, newest first, with each run's result from the app",
      "arguments": [
        {
          "name": "name",
          "description": "Declared schedule name",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/schedules-runs.schema.json",
      "route": "GET /schedules/{name}/runs",
      "recovery": null
    },
    {
      "path": "schedules run",
      "stability": "stable",
      "description": "Queue one run against the active build; needs publish permission",
      "arguments": [
        {
          "name": "name",
          "description": "Declared schedule name",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/schedules-run.schema.json",
      "route": "POST /schedules/{name}/run",
      "recovery": "reconcile"
    },
    {
      "path": "schedules pause",
      "stability": "stable",
      "description": "Pause this project's schedules; persists across new builds",
      "arguments": [],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/schedules-pause.schema.json",
      "route": "PUT /schedules/state",
      "recovery": "replay"
    },
    {
      "path": "schedules archive",
      "stability": "stable",
      "description": "Archive this project's schedules; persists across new builds",
      "arguments": [],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/schedules-archive.schema.json",
      "route": "PUT /schedules/state",
      "recovery": "replay"
    },
    {
      "path": "schedules resume",
      "stability": "stable",
      "description": "Resume this project's schedules; persists across new builds",
      "arguments": [],
      "options": [
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Why, recorded in the audit log",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/schedules-resume.schema.json",
      "route": "PUT /schedules/state",
      "recovery": "replay"
    },
    {
      "path": "schedules recover",
      "stability": "stable",
      "description": "Unblock an uncertain run after confirming it stopped; never replays its tick",
      "arguments": [
        {
          "name": "name",
          "description": "Schedule with an uncertain run",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--yes",
          "name": "yes",
          "description": "Confirm the previous job has stopped",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/schedules-recover.schema.json",
      "route": "POST /schedules/{name}/recover",
      "recovery": "reconcile"
    },
    {
      "path": "webhooks",
      "stability": "stable",
      "description": "Manage outbound webhook endpoints and deliveries in the selected environment",
      "arguments": [],
      "options": [],
      "subcommands": [
        "list",
        "get",
        "states",
        "delete",
        "create",
        "update",
        "disable",
        "pause",
        "resume",
        "rotate-secret",
        "deliveries",
        "replay"
      ],
      "result": null
    },
    {
      "path": "webhooks list",
      "stability": "stable",
      "description": "List endpoints without signing secrets",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/webhooks-list.schema.json",
      "route": "/webhooks",
      "recovery": null
    },
    {
      "path": "webhooks get",
      "stability": "stable",
      "description": "Read an endpoint state and revision, including deleted endpoints",
      "arguments": [
        {
          "name": "endpoint",
          "description": "Endpoint ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/webhooks-get.schema.json",
      "route": "GET /webhooks/:id/state",
      "recovery": null
    },
    {
      "path": "webhooks states",
      "stability": "stable",
      "description": "List active and deleted endpoints with revision fences",
      "arguments": [],
      "options": [
        {
          "flags": "--cursor <id>",
          "name": "cursor",
          "description": "nextCursor from a previous page",
          "value": "required"
        },
        {
          "flags": "--limit <number>",
          "name": "limit",
          "description": "Page size (1–100)",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/webhooks-states.schema.json",
      "route": "GET /webhooks/states",
      "recovery": null
    },
    {
      "path": "webhooks delete",
      "stability": "stable",
      "description": "Delete an endpoint, retaining delivery history and freeing capacity",
      "arguments": [
        {
          "name": "endpoint",
          "description": "Endpoint ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--expected-revision <number>",
          "name": "expectedRevision",
          "description": "Revision from webhooks states",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--reason <text>",
          "name": "reason",
          "description": "Reason recorded in the audit log",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Reuse the action ID for an identical retry",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/webhooks-delete.schema.json",
      "route": "POST /webhooks/:id/delete",
      "recovery": "replay"
    },
    {
      "path": "webhooks create",
      "stability": "stable",
      "description": "Create an endpoint from JSON and print its one-time secret; resuming an unfinished create returns the same endpoint and secret",
      "arguments": [
        {
          "name": "file",
          "description": "JSON file, or - for stdin",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/webhooks-create.schema.json",
      "route": "/webhooks",
      "recovery": "resume"
    },
    {
      "path": "webhooks update",
      "stability": "stable",
      "description": "Update URL, filters or enabled state from JSON",
      "arguments": [
        {
          "name": "endpoint",
          "description": "Endpoint ID",
          "required": true
        },
        {
          "name": "file",
          "description": "JSON file, or - for stdin",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/webhooks-update.schema.json",
      "route": "/webhooks",
      "recovery": "reconcile"
    },
    {
      "path": "webhooks disable",
      "stability": "stable",
      "description": "Deprecated: use webhooks pause",
      "arguments": [
        {
          "name": "endpoint",
          "description": "Endpoint ID",
          "required": true
        }
      ],
      "options": [],
      "subcommands": [],
      "deprecated": "Use domino webhooks pause.",
      "result": "schemas/results/webhooks-disable.schema.json",
      "route": "/webhooks",
      "recovery": "reconcile"
    },
    {
      "path": "webhooks pause",
      "stability": "stable",
      "description": "pause an endpoint",
      "arguments": [
        {
          "name": "endpoint",
          "description": "Endpoint ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Reuse the action ID of an interrupted request",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/webhooks-pause.schema.json",
      "route": "POST /webhooks/:id/pause",
      "recovery": "replay"
    },
    {
      "path": "webhooks resume",
      "stability": "stable",
      "description": "resume an endpoint",
      "arguments": [
        {
          "name": "endpoint",
          "description": "Endpoint ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Reuse the action ID of an interrupted request",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/webhooks-resume.schema.json",
      "route": "POST /webhooks/:id/resume",
      "recovery": "replay"
    },
    {
      "path": "webhooks rotate-secret",
      "stability": "stable",
      "description": "Rotate and print a one-time signing secret; old secret overlaps for 24 hours. Resuming an unfinished rotation returns the same secret",
      "arguments": [
        {
          "name": "endpoint",
          "description": "Endpoint ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--operation-id <uuid>",
          "name": "operationId",
          "description": "Save this change under this ID, sent as its actionId; reuse it with identical inputs to resume",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/webhooks-rotate-secret.schema.json",
      "route": "/webhooks",
      "recovery": "resume"
    },
    {
      "path": "webhooks deliveries",
      "stability": "stable",
      "description": "List recent deliveries",
      "arguments": [
        {
          "name": "endpoint",
          "description": "Endpoint ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--cursor <cursor>",
          "name": "cursor",
          "description": "The nextCursor a previous page returned",
          "value": "required"
        },
        {
          "flags": "--before <id>",
          "name": "before",
          "description": "Deprecated: use --cursor",
          "value": "required",
          "deprecated": "Use --cursor."
        }
      ],
      "subcommands": [],
      "result": "schemas/results/webhooks-deliveries.schema.json",
      "route": "/webhooks",
      "recovery": null
    },
    {
      "path": "webhooks replay",
      "stability": "stable",
      "description": "Replay a finished delivery with the original event ID",
      "arguments": [
        {
          "name": "endpoint",
          "description": "Endpoint ID",
          "required": true
        },
        {
          "name": "delivery",
          "description": "Delivery ID",
          "required": true
        }
      ],
      "options": [
        {
          "flags": "--action-id <uuid>",
          "name": "actionId",
          "description": "Reuse the action ID for an identical retry: it answers the delivery the first replay queued",
          "value": "required"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/webhooks-replay.schema.json",
      "route": "/webhooks",
      "recovery": "replay"
    },
    {
      "path": "stage",
      "stability": "stable",
      "description": "Build a pushed commit in the cloud and deploy its staging preview",
      "arguments": [],
      "options": [
        {
          "flags": "--commit <sha>",
          "name": "commit",
          "description": "Exact pushed commit (defaults to local HEAD)",
          "value": "required"
        },
        {
          "flags": "--request-id <uuid>",
          "name": "requestId",
          "description": "Resume a submitted build request with its --commit and scope flags",
          "value": "required"
        },
        {
          "flags": "--yes",
          "name": "yes",
          "description": "Skip the terminal confirmation",
          "value": "none"
        },
        {
          "flags": "--no-wait",
          "name": "wait",
          "description": "Return the build ID without waiting",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/stage.schema.json",
      "recovery": "resume"
    },
    {
      "path": "builds",
      "stability": "stable",
      "description": "List recent cloud builds for this campaign",
      "arguments": [],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/builds.schema.json",
      "route": "GET /builds",
      "recovery": null
    },
    {
      "path": "logs",
      "stability": "stable",
      "description": "Read retained cloud build logs",
      "arguments": [
        {
          "name": "id",
          "description": "Build ID (choose a recent build if omitted)",
          "required": false
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/logs.schema.json",
      "route": "GET /builds/{id}/logs",
      "recovery": null
    },
    {
      "path": "agents",
      "stability": "stable",
      "description": "Set up project instructions for your coding agent",
      "arguments": [],
      "options": [],
      "subcommands": ["install"],
      "result": null
    },
    {
      "path": "agents install",
      "stability": "stable",
      "description": "Install package-backed skill loaders and migrate unmodified copied guidance",
      "arguments": [],
      "options": [
        {
          "flags": "--directory <path>",
          "name": "directory",
          "description": "Project root (defaults to the linked project or current directory)",
          "value": "required"
        },
        {
          "flags": "--agent <name>",
          "name": "agent",
          "description": "Agent to configure",
          "value": "required",
          "choices": ["codex", "claude", "both"]
        }
      ],
      "subcommands": [],
      "result": "schemas/results/agents-install.schema.json",
      "recovery": null
    },
    {
      "path": "doctor",
      "stability": "stable",
      "description": "Inspect local agent setup without changing files or running app code",
      "arguments": [],
      "options": [
        {
          "flags": "--remote",
          "name": "remote",
          "description": "Also verify access to the selected project through the management API",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/doctor.schema.json",
      "recovery": null
    },
    {
      "path": "capabilities",
      "stability": "stable",
      "description": "Read this CLI release's bundled capability catalog (not a server probe)",
      "arguments": [
        {
          "name": "id",
          "description": "Capability identifier",
          "required": false
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/capabilities.schema.json",
      "recovery": null
    },
    {
      "path": "reference",
      "stability": "stable",
      "description": "Read a compact task or SDK reference bundled with this CLI",
      "arguments": [
        {
          "name": "topic",
          "description": "analytics, authoring, automation, campaign-testing, errors, existing-app, hosted, imports, management, onchain, participant-api, quest-rules, referrals, trackers, troubleshooting, verification, webhooks",
          "required": false
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/reference.schema.json",
      "recovery": null
    },
    {
      "path": "feedback",
      "stability": "stable",
      "description": "Report a tooling issue or experience to Domino's Linear triage",
      "arguments": [],
      "options": [
        {
          "flags": "--title <text>",
          "name": "title",
          "description": "Short summary, up to 200 characters",
          "value": "required",
          "mandatory": true
        },
        {
          "flags": "--body <text>",
          "name": "body",
          "description": "Report text, up to 20000 characters",
          "value": "required"
        },
        {
          "flags": "--body-file <file>",
          "name": "bodyFile",
          "description": "Read report text from a UTF-8 file, or - for stdin",
          "value": "required"
        },
        {
          "flags": "--reporter <kind>",
          "name": "reporter",
          "description": "Who is submitting the report",
          "value": "required",
          "choices": ["human", "agent"],
          "default": "human"
        },
        {
          "flags": "--dry-run",
          "name": "dryRun",
          "description": "Print the report without sending it",
          "value": "none"
        },
        {
          "flags": "--submit",
          "name": "submit",
          "description": "Send the report even in unattended mode, which otherwise saves it to a file",
          "value": "none"
        }
      ],
      "subcommands": [],
      "result": "schemas/results/feedback.schema.json",
      "route": "POST /feedback",
      "recovery": "reconcile"
    },
    {
      "path": "help",
      "stability": "stable",
      "description": "Display help for a command",
      "arguments": [
        {
          "name": "command",
          "description": "Command and subcommand, such as secrets set",
          "required": false,
          "variadic": true
        }
      ],
      "options": [],
      "subcommands": [],
      "result": "schemas/results/help.schema.json",
      "recovery": null
    }
  ]
}
