{
  "schema": "orishare.capabilities/v1",
  "notes": [
    "Generated from the OpenAPI document; do not edit. Agents call only the operations and tools listed here.",
    "rest_operations: every REST operation. credentials empty means a public route. tool is the operator tool name, or null with no_tool_reason when the operation deliberately has no tool.",
    "proposal true means the call records a change set or preview and commits nothing by itself. It is committed when a person confirms it in the dashboard, or when a policy application tool (exposure apply: create_change_set_application, create_change_set_undo) applies it as far as the environment's autonomy policy allows (always in a sandbox; in production only under auto, or limits with the plan inside them); a refused application leaves it pending for a person.",
    "retry: atomic_replay and keyed_resume replay the first result for the same Idempotency-Key, so a write may be repeated with the same key after a lost answer; outcome_unknown has no replay, so check the resource before repeating; read is a GET.",
    "authorization: each branch lists the credentials, scopes and environment selection it accepts; runtime_class, when present, limits the branch to sandbox or production environments.",
    "no_tool_reason commit_requires_confirmation: only a signed-in member confirming in the dashboard (a session cookie from the dashboard origin, with its CSRF token) can call the operation, so its credentials are session alone; a personal access token, a secret key, the assistant and MCP are refused with confirmation_required.",
    "rule_actions: every rule action type this release executes. An environment executes a mechanics action only once that mechanic is activated there; GET /capabilities is the per-environment check.",
    "tools: the generated operation tools and the composite tools (fixed sequences of operation tools).",
    "call_action: the hosted MCP core reaches every operation with call_action (find it with search_actions, read it with describe_action) unless held_back names why; gate_class is how the production gate judges a data-changing call by an AI (MCP or the dashboard assistant) under each autonomy mode; runs_as_customer means only a customer session from act_as_customer can call it.",
    "ai_connections: how a person connects an AI client (ADR 0065). connector_url starts OAuth 2.1 sign-in (PKCE S256, Client ID Metadata Documents preferred, Dynamic Client Registration available); mcp_url takes an AI access key (opat_) or any bearer credential and, with none, offers the agent signup tools.",
    "change_set_commands: every command type POST /change_sets accepts. A document command compiles into the configuration document and may share a change set with other document commands; an operation command runs one direct operation and is the only command of its change set. required_scopes per runtime class: document commands need config:write, plus rules:publish in production when the change set publishes (publish true, the default); operation commands need config:write and their direct route scopes."
  ],
  "rest_operations": [
    {
      "operation_id": "create_agent_claim_code",
      "method": "POST",
      "path": "/agent/claim_codes",
      "summary": "Replace the claim link of an unclaimed project (agent token only)",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "pat"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "access"
      }
    },
    {
      "operation_id": "create_agent_signup_challenge",
      "method": "POST",
      "path": "/agent/signup_challenges",
      "summary": "Get a proof-of-work challenge for agent signup",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [],
      "scopes": [],
      "authorization": [],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "auth_handshake",
          "detail": "Anonymous agent signup; served by the MCP onboarding tools without a credential."
        }
      }
    },
    {
      "operation_id": "create_agent_signup",
      "method": "POST",
      "path": "/agent/signups",
      "summary": "Agent signup: create a project with sandbox and production environments, keys, allowed origins, an agent token and a claim link, with no browser and no person",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [],
      "scopes": [],
      "authorization": [],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "auth_handshake",
          "detail": "Anonymous agent signup; served by the MCP onboarding tools without a credential."
        }
      }
    },
    {
      "operation_id": "get_ai_rule_drafts",
      "method": "GET",
      "path": "/ai/rule_drafts",
      "summary": "Recent drafts in this environment (newest first)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_ai_rule_drafts",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_ai_rule_drafts",
      "method": "POST",
      "path": "/ai/rule_drafts",
      "summary": "Draft rules from a plain-English request: validated against the environment, stored, never published",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "configuration"
      }
    },
    {
      "operation_id": "get_ai_rule_drafts_id",
      "method": "GET",
      "path": "/ai/rule_drafts/{id}",
      "summary": "One draft with its rules, assumptions, errors and the rule it became",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_ai_rule_drafts_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_analytics_activity",
      "method": "GET",
      "path": "/analytics/activity",
      "summary": "Active customers per day with 7 and 30 day rolling actives and new customers",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "analytics:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "analytics:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "analytics:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_analytics_activity",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_analytics_build",
      "method": "POST",
      "path": "/analytics/builds",
      "summary": "Build analytics for this environment now (bounded; at most one every 10 seconds)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "keyed_resume",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "analytics:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "analytics:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "analytics:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "get_analytics_retention",
      "method": "GET",
      "path": "/analytics/retention",
      "summary": "Day-N retention by first-active cohort (UTC days), daily or by ISO week",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "analytics:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "analytics:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "analytics:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_analytics_retention",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_analytics_status",
      "method": "GET",
      "path": "/analytics/status",
      "summary": "When analytics were last built for this environment and whether they are stale",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "analytics:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "analytics:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "analytics:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_analytics_status",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "delete_api_keys_id",
      "method": "DELETE",
      "path": "/api_keys/{id}",
      "summary": "Revoke a key",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "environments:read",
        "environments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "resource_bound",
          "scopes": [
            "environments:read",
            "environments:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "resource_bound",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "organization"
      }
    },
    {
      "operation_id": "get_assets",
      "method": "GET",
      "path": "/assets",
      "summary": "List immutable asset metadata",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "assets:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "assets:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session",
            "staff"
          ],
          "environment": "selected",
          "scopes": [
            "assets:read"
          ]
        }
      ],
      "tool": "get_assets",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_assets",
      "method": "POST",
      "path": "/assets",
      "summary": "Upload an immutable normalized image",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "assets:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "assets:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session",
            "staff"
          ],
          "environment": "selected",
          "scopes": [
            "assets:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "setup"
      }
    },
    {
      "operation_id": "get_assets_id",
      "method": "GET",
      "path": "/assets/{id}",
      "summary": "Read immutable asset metadata",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "assets:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "assets:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session",
            "staff"
          ],
          "environment": "selected",
          "scopes": [
            "assets:read"
          ]
        }
      ],
      "tool": "get_assets_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_assistant_conversations",
      "method": "GET",
      "path": "/assistant/conversations",
      "summary": "The caller's conversations; owners and admins see the environment's",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session"
      ],
      "scopes": [
        "assistant:use"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "assistant:use"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "recursive_assistant",
          "detail": "The dashboard assistant's own conversations."
        }
      }
    },
    {
      "operation_id": "create_assistant_conversation",
      "method": "POST",
      "path": "/assistant/conversations",
      "summary": "Start an assistant conversation in the selected environment",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "session"
      ],
      "scopes": [
        "assistant:use"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "assistant:use"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "recursive_assistant",
          "detail": "Starting an assistant conversation from an agent would run a model inside a model."
        }
      }
    },
    {
      "operation_id": "get_assistant_conversation",
      "method": "GET",
      "path": "/assistant/conversations/{id}",
      "summary": "One conversation with its turns, re-authorized on every read",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session"
      ],
      "scopes": [
        "assistant:use"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "assistant:use"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "recursive_assistant",
          "detail": "The dashboard assistant's own conversations (a member's chat history)."
        }
      }
    },
    {
      "operation_id": "create_assistant_turn",
      "method": "POST",
      "path": "/assistant/conversations/{id}/turns",
      "summary": "Send a message; the turn runs after the 202 and is polled",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "session"
      ],
      "scopes": [
        "assistant:use"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "assistant:use"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "recursive_assistant",
          "detail": "A turn runs the assistant model and its tools; agents call the tools directly."
        }
      }
    },
    {
      "operation_id": "get_assistant_turn",
      "method": "GET",
      "path": "/assistant/conversations/{id}/turns/{turn_id}",
      "summary": "Poll one turn: status, final text, proposals and recorded tool calls",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session"
      ],
      "scopes": [
        "assistant:use"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "assistant:use"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "recursive_assistant",
          "detail": "The dashboard assistant's own turns."
        }
      }
    },
    {
      "operation_id": "get_assistant_usage",
      "method": "GET",
      "path": "/assistant/usage",
      "summary": "This month's AI budget of the organization (assistant and drafting): used, limit, reset, calls and tokens",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session"
      ],
      "scopes": [
        "assistant:use"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "assistant:use"
          ]
        }
      ],
      "tool": "get_assistant_usage",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_attribute_definitions",
      "method": "GET",
      "path": "/attribute_definitions",
      "summary": "Declared customer attributes with types and PII flags",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_attribute_definitions",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_attribute_definitions",
      "method": "POST",
      "path": "/attribute_definitions",
      "summary": "Declare or update an attribute definition by key; Location reads the collection",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "access"
      }
    },
    {
      "operation_id": "post_auth_signup",
      "method": "POST",
      "path": "/auth/signup",
      "summary": "Create a user, an organization with a default project and two environments, and a first token",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [],
      "scopes": [],
      "authorization": [],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "auth_handshake",
          "detail": "A person's CLI signup; an agent signs up without a credential through the MCP onboarding tools (orishare_signup_start, orishare_signup_complete)."
        }
      }
    },
    {
      "operation_id": "get_auth_tokens",
      "method": "GET",
      "path": "/auth/tokens",
      "summary": "List the caller's tokens",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": []
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": "get_auth_tokens",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_auth_tokens",
      "method": "POST",
      "path": "/auth/tokens",
      "summary": "Issue a personal access token with scopes, or an AI access key (purpose ai_access) narrowed to an organization, environments and a default environment",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "session"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "organization"
      }
    },
    {
      "operation_id": "delete_auth_tokens_id",
      "method": "DELETE",
      "path": "/auth/tokens/{id}",
      "summary": "Revoke a token (the current one included)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": []
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "organization"
      }
    },
    {
      "operation_id": "get_autonomy_policy",
      "method": "GET",
      "path": "/autonomy_policy",
      "summary": "Read how this environment applies change sets: on request, on request within limits, or only by dashboard confirmation",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        }
      ],
      "tool": "get_autonomy_policy",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_autonomy_policy",
      "method": "PATCH",
      "path": "/autonomy_policy",
      "summary": "Change the autonomy mode or limits of a production environment (signed-in dashboard owner or admin only)",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "session"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "dashboard_confirmation",
          "detail": "Only an owner or admin in the dashboard changes the autonomy policy (ADR 0060 1)."
        }
      }
    },
    {
      "operation_id": "list_badges",
      "method": "GET",
      "path": "/badges",
      "summary": "List badge programs",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_badges",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_badge",
      "method": "GET",
      "path": "/badges/{id}",
      "summary": "Read a badge program",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_badge",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_badge_backfill",
      "method": "POST",
      "path": "/badges/{id}/backfills",
      "summary": "Queue recognition-only badge backfill",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "create_badge_contribution",
      "method": "POST",
      "path": "/badges/{id}/contributions",
      "summary": "Contribute to a badge",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "create_badge_correction",
      "method": "POST",
      "path": "/badges/{id}/corrections",
      "summary": "Correct a retained badge contribution",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "create_badge_grant",
      "method": "POST",
      "path": "/badges/{id}/grants",
      "summary": "Grant a badge rank",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "list_badge_participations",
      "method": "GET",
      "path": "/badges/{id}/participations",
      "summary": "List retained badge participations",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_badge_participations",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_badge_participation",
      "method": "GET",
      "path": "/badges/{id}/participations/{participation_id}",
      "summary": "Read a retained badge participation",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_badge_participation",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_badge_grants",
      "method": "GET",
      "path": "/badges/{id}/participations/{participation_id}/grants",
      "summary": "List the grants of a badge participation",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_badge_grants",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_badge_revocations",
      "method": "GET",
      "path": "/badges/{id}/participations/{participation_id}/revocations",
      "summary": "List the revocations of a badge participation",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_badge_revocations",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_badge_restore",
      "method": "POST",
      "path": "/badges/{id}/restores",
      "summary": "Restore a revoked badge",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "create_badge_revocation",
      "method": "POST",
      "path": "/badges/{id}/revocations",
      "summary": "Revoke a badge for fraud",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_battle_passes",
      "method": "GET",
      "path": "/battle_passes",
      "summary": "List battle passes",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_battle_passes",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_battle_pass",
      "method": "GET",
      "path": "/battle_passes/{id}",
      "summary": "Read a battle pass and its active version by id or key",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_battle_pass",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_bulk_operation_run",
      "method": "POST",
      "path": "/bulk_operation_runs",
      "summary": "Start a committed bulk operation (pass 1), or resume one paused because authority was revoked",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "customers:write",
        "ledger:write",
        "programs:write",
        "segments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "segments:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "list_bulk_operations",
      "method": "GET",
      "path": "/bulk_operations",
      "summary": "List bulk operations (newest first)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        }
      ],
      "tool": "list_bulk_operations",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_bulk_operation",
      "method": "POST",
      "path": "/bulk_operations",
      "summary": "Propose a bulk operation: freeze the selection into items, pin dependencies and store a change set for dashboard confirmation",
      "exposure": "propose",
      "proposal": true,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "customers:write",
        "ledger:write",
        "programs:write",
        "segments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "segments:write"
          ]
        }
      ],
      "tool": "create_bulk_operation",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_bulk_operation",
      "method": "GET",
      "path": "/bulk_operations/{id}",
      "summary": "Read a bulk operation: counts by status, a sample of errors, its passes and change set",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        }
      ],
      "tool": "get_bulk_operation",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_bulk_operation_cancellation",
      "method": "POST",
      "path": "/bulk_operations/{id}/cancellations",
      "summary": "Cancel a running or paused bulk operation; claimed items finish, no new item starts",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "customers:write",
        "ledger:write",
        "programs:write",
        "segments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "segments:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "configuration"
      }
    },
    {
      "operation_id": "list_bulk_operation_items",
      "method": "GET",
      "path": "/bulk_operations/{id}/items",
      "summary": "List the frozen items of a bulk operation with their status and error",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        }
      ],
      "tool": "list_bulk_operation_items",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_bulk_operation_retry",
      "method": "POST",
      "path": "/bulk_operations/{id}/retries",
      "summary": "Retry the failed items of a completed bulk operation in a new pass",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "customers:write",
        "ledger:write",
        "programs:write",
        "segments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "segments:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "create_bulk_operation_undo_proposal",
      "method": "POST",
      "path": "/bulk_operations/{id}/undo_proposals",
      "summary": "Propose the undo of a bulk operation: an inverse operation of its succeeded items, classified now",
      "exposure": "propose",
      "proposal": true,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "customers:write",
        "ledger:write",
        "programs:write",
        "segments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "segments:write"
          ]
        }
      ],
      "tool": "create_bulk_operation_undo_proposal",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_campaigns",
      "method": "GET",
      "path": "/campaigns",
      "summary": "List campaigns",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "campaigns:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "campaigns:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "campaigns:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_campaigns",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_campaigns",
      "method": "POST",
      "path": "/campaigns",
      "summary": "Create a campaign",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "campaigns:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "campaigns:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "campaigns:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_campaigns_id",
      "method": "GET",
      "path": "/campaigns/{id}",
      "summary": "One campaign with budget usage",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "campaigns:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "campaigns:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "campaigns:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_campaigns_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_campaigns_id",
      "method": "PATCH",
      "path": "/campaigns/{id}",
      "summary": "Update schedule, priority, stacking, budget, audience or status",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "campaigns:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "campaigns:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "campaigns:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "delete_campaigns_id",
      "method": "DELETE",
      "path": "/campaigns/{id}",
      "summary": "Delete a draft or ended campaign with no rules",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "campaigns:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "campaigns:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "campaigns:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "get_capabilities",
      "method": "GET",
      "path": "/capabilities",
      "summary": "Read recognized rule actions and installed execution capabilities",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_capabilities",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_challenges",
      "method": "GET",
      "path": "/challenges",
      "summary": "List challenges",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_challenges",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_challenges",
      "method": "POST",
      "path": "/challenges",
      "summary": "Create a challenge (validated qualifying conditions and completion actions)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_challenges_id",
      "method": "GET",
      "path": "/challenges/{id}",
      "summary": "One challenge",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_challenges_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_challenges_id",
      "method": "PATCH",
      "path": "/challenges/{id}",
      "summary": "Edit a challenge; changes apply to the next evaluation",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "delete_challenges_id",
      "method": "DELETE",
      "path": "/challenges/{id}",
      "summary": "Delete a draft or ended challenge",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "get_challenges_id_enrollments",
      "method": "GET",
      "path": "/challenges/{id}/enrollments",
      "summary": "Explicit enrollments",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_challenges_id_enrollments",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_challenges_id_enrollments",
      "method": "POST",
      "path": "/challenges/{id}/enrollments",
      "summary": "Enroll a customer (idempotent)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "delete_challenges_id_enrollments_customer_id",
      "method": "DELETE",
      "path": "/challenges/{id}/enrollments/{customer_id}",
      "summary": "Remove an enrollment (progress rows stay)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "get_challenges_id_progress",
      "method": "GET",
      "path": "/challenges/{id}/progress",
      "summary": "Progress rows, optionally for one customer",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_challenges_id_progress",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_challenges_id_progress_revoke",
      "method": "POST",
      "path": "/challenges/{id}/progress/revoke",
      "summary": "Operator revoke of one contribution; the row is recomputed from its set",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "post_challenges_id_reevaluate",
      "method": "POST",
      "path": "/challenges/{id}/reevaluate",
      "summary": "Complete active rows already at the target now (after lowering it or before ends_at); on an ended challenge, only completions that were deferred while it ran",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "create_change_set_application",
      "method": "POST",
      "path": "/change_set_applications",
      "summary": "Apply a proposed change set under the environment autonomy policy, without a dashboard confirmation: always in a sandbox; in production when GET /autonomy_policy says auto, or limits and the plan is inside them. A policy refusal is confirmation_required with details.reasons and details.review_url, and the change set stays pending for a person",
      "exposure": "apply",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        }
      ],
      "tool": "create_change_set_application",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_change_set_commit",
      "method": "POST",
      "path": "/change_set_commits",
      "summary": "Commit a reviewed change set (signed-in dashboard confirmation only)",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "session"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "commit_requires_confirmation",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "dashboard_confirmation",
          "detail": "The dashboard confirmation of a change set (cookie session, origin and CSRF token). An agent applies a change set under the autonomy policy with create_change_set_application."
        }
      }
    },
    {
      "operation_id": "create_change_set_undo",
      "method": "POST",
      "path": "/change_set_undos",
      "summary": "Undo a committed change set: propose a change set that restores what it changed (what it created is archived or deactivated, never deleted) and apply it under the autonomy policy when the policy allows; otherwise application is null and the undo waits for a dashboard confirmation. invalid_state when it has no undo: not committed, already undone, bulk or playbook (their own undo), an operation command, an irreversible change, a deletion or creation the configuration document cannot reverse, or an item changed again since",
      "exposure": "apply",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        }
      ],
      "tool": "create_change_set_undo",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_change_sets",
      "method": "GET",
      "path": "/change_sets",
      "summary": "List change sets",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        }
      ],
      "tool": "list_change_sets",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_change_set",
      "method": "POST",
      "path": "/change_sets",
      "summary": "Propose a change set: plan it without applying and store the plan for review",
      "exposure": "propose",
      "proposal": true,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        }
      ],
      "tool": "create_change_set",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_change_set",
      "method": "GET",
      "path": "/change_sets/{id}",
      "summary": "Read a change set with its stored plan",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        }
      ],
      "tool": "get_change_set",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_change_set_cancellation",
      "method": "POST",
      "path": "/change_sets/{id}/cancellations",
      "summary": "Cancel a pending change set",
      "exposure": "propose",
      "proposal": true,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        }
      ],
      "tool": "create_change_set_cancellation",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_client_configuration",
      "method": "GET",
      "path": "/client_configuration",
      "summary": "Read client origins, grant policy and admission limits",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "client_configurations:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "client_configurations:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "client_configurations:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_client_configuration",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_client_configuration",
      "method": "PATCH",
      "path": "/client_configuration",
      "summary": "Configure client origins and lower admission limits",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "client_configurations:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "client_configurations:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "client_configurations:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "access"
      }
    },
    {
      "operation_id": "post_config_apply",
      "method": "POST",
      "path": "/config/apply",
      "summary": "Preview or apply a configuration document to this environment atomically",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_config_export",
      "method": "GET",
      "path": "/config/export",
      "summary": "Whole environment configuration as one JSON document (names as references, no secrets)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_config_export",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_connectors",
      "method": "GET",
      "path": "/connectors",
      "summary": "List connector installations (newest first)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_connectors",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_connector",
      "method": "POST",
      "path": "/connectors",
      "summary": "Install a Shopify, Stripe or Klaviyo connector (secrets are stored encrypted, never returned)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "access"
      }
    },
    {
      "operation_id": "get_connector",
      "method": "GET",
      "path": "/connectors/{id}",
      "summary": "One connector installation",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_connector",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "update_connector",
      "method": "PATCH",
      "path": "/connectors/{id}",
      "summary": "Change a connector: config, status, or replace its credentials or webhook secret",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "delete_connector",
      "method": "DELETE",
      "path": "/connectors/{id}",
      "summary": "Disable a connector and erase its stored credentials and webhook secret",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "resync_klaviyo_connector",
      "method": "POST",
      "path": "/connectors/{id}/klaviyo/resync",
      "summary": "Queue a full Klaviyo resync: every customer profile is pushed once more (a pending resync is kept)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "get_klaviyo_connector_status",
      "method": "GET",
      "path": "/connectors/{id}/klaviyo/status",
      "summary": "Klaviyo sync counts (synced, pending, skipped without email, failed), last run and last error",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_klaviyo_connector_status",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_connector_receipts",
      "method": "GET",
      "path": "/connectors/{id}/receipts",
      "summary": "Recent webhook deliveries of a connector and what became of each",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_connector_receipts",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_shopify_discount_code",
      "method": "POST",
      "path": "/connectors/{id}/shopify/discount_codes",
      "summary": "Issue a fixed amount Shopify discount code through the connector",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "redeem_store_credit_for_shopify_code",
      "method": "POST",
      "path": "/connectors/{id}/shopify/redemptions",
      "summary": "Turn store credit into a single-use Shopify discount code (the credit is held until the order is paid)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "expire_shopify_redemptions",
      "method": "POST",
      "path": "/connectors/{id}/shopify/redemptions/expire",
      "summary": "End expired redemption holds: deactivate each code, return credit only once non-use is confirmed, keep used ones for the paid order",
      "exposure": "mutation",
      "proposal": false,
      "retry": "keyed_resume",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "reconcile_shopify_redemption",
      "method": "POST",
      "path": "/connectors/{id}/shopify/redemptions/{code}/reconcile",
      "summary": "Settle a redemption whose discount code outcome was unknown: confirm the code, or return the credit",
      "exposure": "mutation",
      "proposal": false,
      "retry": "keyed_resume",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "receive_connector_webhook",
      "method": "POST",
      "path": "/connectors/{provider}/{installation_id}/webhook",
      "summary": "Inbound provider webhook, verified by its signature over the raw request bytes",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [],
      "scopes": [],
      "authorization": [],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "inbound_callback",
          "detail": "Shopify or Klaviyo calls it with its own HMAC over the exact bytes."
        }
      }
    },
    {
      "operation_id": "get_context",
      "method": "GET",
      "path": "/context",
      "summary": "Read environment context and project presentation. ETag targets context.version; Presentation-ETag targets presentation_revision.",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "context:read"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "context:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "context:read"
          ]
        }
      ],
      "tool": "get_context",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_context",
      "method": "PATCH",
      "path": "/context",
      "summary": "Patch legacy environment context with optional If-Match against version, or project presentation with required If-Match against presentation_revision. Mixed targets are rejected; presentation responses use that revision as ETag. Null removes an override. Updates and audit commit atomically. There is no HTTP response cache: repeating the committed If-Match yields stale_write.",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "context:write"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "context:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "context:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "configuration"
      }
    },
    {
      "operation_id": "list_context_presets",
      "method": "GET",
      "path": "/context/presets",
      "summary": "List the business types with the terminology and mechanic modes each one starts from. Static: the same for every caller, no ETag.",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "context:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "context:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "context:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": "list_context_presets",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_counter_definitions",
      "method": "GET",
      "path": "/counter_definitions",
      "summary": "List counter definitions with readiness",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_counter_definitions",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_counter_definitions",
      "method": "POST",
      "path": "/counter_definitions",
      "summary": "Register a historical counter; backfilling until history is counted",
      "exposure": "mutation",
      "proposal": false,
      "retry": "keyed_resume",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_counter_definitions_id",
      "method": "GET",
      "path": "/counter_definitions/{id}",
      "summary": "One definition with backfill status",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_counter_definitions_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "delete_counter_definitions_id",
      "method": "DELETE",
      "path": "/counter_definitions/{id}",
      "summary": "Delete a definition and its counts (refused while rules read it)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "post_counter_definitions_id_accept_coverage",
      "method": "POST",
      "path": "/counter_definitions/{id}/accept_coverage",
      "summary": "Accept the bounded coverage of a finished, incomplete backfill and mark the counter ready",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "post_counter_definitions_id_backfill",
      "method": "POST",
      "path": "/counter_definitions/{id}/backfill",
      "summary": "Count history: inline for small histories, queued for the job otherwise",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_counter_definitions_id_customers_customer_id",
      "method": "GET",
      "path": "/counter_definitions/{id}/customers/{customer_id}",
      "summary": "Counts per window for one customer",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_counter_definitions_id_customers_customer_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_counter_definitions_id_rebuild",
      "method": "POST",
      "path": "/counter_definitions/{id}/rebuild",
      "summary": "Reset a counter and recount it from stored events (rules skip it until the scan finishes)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_currencies",
      "method": "GET",
      "path": "/currencies",
      "summary": "List currencies",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "currencies:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "currencies:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "currencies:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_currencies",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_currencies",
      "method": "POST",
      "path": "/currencies",
      "summary": "Create a currency",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "currencies:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "currencies:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "currencies:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_currencies_id",
      "method": "GET",
      "path": "/currencies/{id}",
      "summary": "One currency by id or code",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "currencies:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "currencies:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "currencies:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_currencies_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_currencies_id",
      "method": "PATCH",
      "path": "/currencies/{id}",
      "summary": "Rename, change expiration policy or negative-balance policy",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "currencies:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "currencies:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "currencies:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "delete_currencies_id",
      "method": "DELETE",
      "path": "/currencies/{id}",
      "summary": "Delete an unused currency (409 when referenced)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "currencies:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "currencies:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "currencies:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "get_currency_transfer_limits",
      "method": "GET",
      "path": "/currencies/{id}/transfer_limits",
      "summary": "Transfer limits of a currency, and whether customers may transfer it",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "currencies:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "currencies:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "currencies:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_currency_transfer_limits",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "put_currency_transfer_limits",
      "method": "POST",
      "path": "/currencies/{id}/transfer_limits",
      "summary": "Set the transfer limits of a currency (omitted fields keep their value)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "currencies:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "currencies:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "currencies:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_customer_activity",
      "method": "GET",
      "path": "/customer/activity",
      "summary": "List customer activity",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_badges",
      "method": "GET",
      "path": "/customer/badges",
      "summary": "Read customer badges",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_balances",
      "method": "GET",
      "path": "/customer/balances",
      "summary": "List customer balances",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_battle_pass_claims",
      "method": "POST",
      "path": "/customer/battle_pass_claims",
      "summary": "Claim a battle pass tier track, or every claimable one",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_battle_passes",
      "method": "GET",
      "path": "/customer/battle_passes",
      "summary": "Read every active battle pass as the signed-in player's group sees it now",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "list_customer_blocks_self",
      "method": "GET",
      "path": "/customer/blocks",
      "summary": "List the players this player blocked, newest first, each by a handle that only works for this player",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "create_customer_block",
      "method": "POST",
      "path": "/customer/blocks",
      "summary": "Block the player with this friend code: ends the friendship and every shared friend quest or streak; safe to repeat",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "delete_customer_block",
      "method": "DELETE",
      "path": "/customer/blocks/{handle}",
      "summary": "Lift a block by its handle from the block list (404 once lifted), or by the blocked player's friend code (safe to repeat)",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_boosts",
      "method": "GET",
      "path": "/customer/boosts",
      "summary": "Read the signed-in player's running boosts",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_catalogue_cancellations",
      "method": "POST",
      "path": "/customer/catalogue_cancellations",
      "summary": "Create a catalogue cancellation",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_catalogue_offers",
      "method": "GET",
      "path": "/customer/catalogue_offers",
      "summary": "Read customer catalogue offers",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_catalogue_redemptions",
      "method": "GET",
      "path": "/customer/catalogue_redemptions",
      "summary": "Read customer catalogue redemptions",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_catalogue_redemptions",
      "method": "POST",
      "path": "/customer/catalogue_redemptions",
      "summary": "Create a catalogue redemption",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_catalogue_redemptions_id_code_disclosures",
      "method": "POST",
      "path": "/customer/catalogue_redemptions/{id}/code_disclosures",
      "summary": "Read a privately delivered reward code",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_coupon_entitlements",
      "method": "GET",
      "path": "/customer/coupon_entitlements",
      "summary": "Read customer coupon entitlements",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_dates",
      "method": "GET",
      "path": "/customer/dates",
      "summary": "Read the dates of the signed-in customer",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_dates_key",
      "method": "POST",
      "path": "/customer/dates/{key}",
      "summary": "Set or change a date of the signed-in customer, within the edit limits",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_embed_session_retirements",
      "method": "POST",
      "path": "/customer/embed_session_retirements",
      "summary": "Revoke this family's embed sessions of one portal by acquisition id (portal origin only)",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_embed_sessions",
      "method": "POST",
      "path": "/customer/embed_sessions",
      "summary": "Exchange the parent page session for a short-lived portal-bound embed session (portal origin only)",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer_sessions:exchange"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer_sessions:exchange"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_energy",
      "method": "GET",
      "path": "/customer/energy",
      "summary": "Read the signed-in player's energy now",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_energy_spends",
      "method": "POST",
      "path": "/customer/energy_spends",
      "summary": "Spend energy, all or nothing",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_event_receipts_id",
      "method": "GET",
      "path": "/customer/event_receipts/{id}",
      "summary": "Read a customer event receipt",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_events",
      "method": "POST",
      "path": "/customer/events",
      "summary": "Admit customer events",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "events:write_client"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "events:write_client"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_experiments",
      "method": "GET",
      "path": "/customer/experiments",
      "summary": "Read the customer's variant in every running experiment",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_friend_code_self",
      "method": "GET",
      "path": "/customer/friend_code",
      "summary": "Read the player's friend code (created on first read) to share with friends",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "rotate_customer_friend_code",
      "method": "POST",
      "path": "/customer/friend_code",
      "summary": "Replace the friend code; the old one stops working at once",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "list_customer_friend_quests_self",
      "method": "GET",
      "path": "/customer/friend_quests",
      "summary": "Read the customer's friend quest of the current period in every active friend quest",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "start_customer_friend_quest",
      "method": "POST",
      "path": "/customer/friend_quests",
      "summary": "Pair up with a friend (by the friend's code) for the current period of a friend quest; safe to repeat",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "create_customer_friend_request",
      "method": "POST",
      "path": "/customer/friend_requests",
      "summary": "Ask the player with this friend code to be friends (accepts theirs if they asked first); safe to repeat",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "accept_customer_friend_request_self",
      "method": "POST",
      "path": "/customer/friend_requests/{friend}/accept",
      "summary": "Accept the friend request of the player with this friend code; safe to repeat",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "decline_customer_friend_request_self",
      "method": "POST",
      "path": "/customer/friend_requests/{friend}/decline",
      "summary": "Decline the friend request of the player with this friend code; safe to repeat",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "list_customer_friend_streaks_self",
      "method": "GET",
      "path": "/customer/friend_streaks",
      "summary": "Read the customer's streaks with each friend, the friend by display name only",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "list_customer_friends_self",
      "method": "GET",
      "path": "/customer/friends",
      "summary": "List the player's friends, or their incoming or outgoing friend requests",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "delete_customer_friend_self",
      "method": "DELETE",
      "path": "/customer/friends/{code}",
      "summary": "Remove a friend, or withdraw or drop a friend request; safe to repeat",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "create_customer_high_five",
      "method": "POST",
      "path": "/customer/high_fives",
      "summary": "Give a friend a high five (once a day per friend; a repeat returns the first)",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_inventory",
      "method": "GET",
      "path": "/customer/inventory",
      "summary": "Read the signed-in player's inventory",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_inventory_consumptions",
      "method": "POST",
      "path": "/customer/inventory_consumptions",
      "summary": "Consume held items",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_inventory_equips",
      "method": "POST",
      "path": "/customer/inventory_equips",
      "summary": "Equip or unequip a held item",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_leaderboard_positions",
      "method": "GET",
      "path": "/customer/leaderboard_positions",
      "summary": "Read customer leaderboard positions",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_leaderboard_profiles",
      "method": "POST",
      "path": "/customer/leaderboard_profiles",
      "summary": "Update a customer leaderboard profile",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_leaderboards_id_boards_board_id_standings",
      "method": "GET",
      "path": "/customer/leaderboards/{id}/boards/{board_id}/standings",
      "summary": "Read customer leaderboard standings",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_leaderboard_friend_standings_self",
      "method": "GET",
      "path": "/customer/leaderboards/{id}/friend_standings",
      "summary": "Rank the player and their friends on the leaderboard's current board",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "list_customer_leagues_self",
      "method": "GET",
      "path": "/customer/leagues",
      "summary": "Read the customer's tier, rank, zone and last result in every active league",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_league_friend_standings_self",
      "method": "GET",
      "path": "/customer/leagues/{id}/friend_standings",
      "summary": "Rank the player and their friends by this week's league score, across every cohort",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_league_standings_self",
      "method": "GET",
      "path": "/customer/leagues/{id}/standings",
      "summary": "Read the standings of the customer's own cohort (null before their first score of the period)",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_levels",
      "method": "GET",
      "path": "/customer/levels",
      "summary": "Read customer levels",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_loot_odds",
      "method": "GET",
      "path": "/customer/loot_odds",
      "summary": "Read the published odds of a chest item's loot table",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_merges",
      "method": "POST",
      "path": "/customer/merges",
      "summary": "Merge a proven anonymous account into the current known customer",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_notification_contact_self",
      "method": "GET",
      "path": "/customer/notification_contact",
      "summary": "Read the customer's own address, locale and consent",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "update_customer_notification_contact_self",
      "method": "PATCH",
      "path": "/customer/notification_contact",
      "summary": "Set the customer's own email address, locale or consent",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "list_customer_notification_devices_self",
      "method": "GET",
      "path": "/customer/notification_devices",
      "summary": "List the customer's registered push devices (never the tokens)",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "register_customer_notification_device",
      "method": "POST",
      "path": "/customer/notification_devices",
      "summary": "Register the push token of this device (web push subscription, FCM or APNs); safe to repeat",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "revoke_customer_notification_device",
      "method": "DELETE",
      "path": "/customer/notification_devices/{id}",
      "summary": "Stop sending push messages to one of the customer's devices",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_notification_preferences_self",
      "method": "GET",
      "path": "/customer/notification_preferences",
      "summary": "Read what the customer receives, per message type and channel",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "update_customer_notification_preferences_self",
      "method": "PATCH",
      "path": "/customer/notification_preferences",
      "summary": "Opt out of or back in to message types, channels or everything",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "create_customer_nudge",
      "method": "POST",
      "path": "/customer/nudges",
      "summary": "Nudge a friend to come back and play (once a day per friend; a repeat returns the first)",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_program_enrollments",
      "method": "POST",
      "path": "/customer/program_enrollments",
      "summary": "Enroll in an available customer quest",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_program_enrollments_id",
      "method": "GET",
      "path": "/customer/program_enrollments/{id}",
      "summary": "Read a customer program enrollment",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_quest_claims",
      "method": "POST",
      "path": "/customer/quest_claims",
      "summary": "Claim a qualified quest",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_quests",
      "method": "GET",
      "path": "/customer/quests",
      "summary": "List customer quests",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "list_customer_reactions_self",
      "method": "GET",
      "path": "/customer/reactions",
      "summary": "List the nudges and high fives the player received and sent, newest first",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_redemption_quotes",
      "method": "POST",
      "path": "/customer/redemption_quotes",
      "summary": "Create a catalogue quote",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "read_like",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_redemptions",
      "method": "GET",
      "path": "/customer/redemptions",
      "summary": "List customer redemptions",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_redemptions",
      "method": "POST",
      "path": "/customer/redemptions",
      "summary": "Redeem an owned reward issuance",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_referral_claims",
      "method": "POST",
      "path": "/customer/referral_claims",
      "summary": "Claim a referral code",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_referral_codes",
      "method": "GET",
      "path": "/customer/referral_codes",
      "summary": "Read customer referral share codes",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_referral_codes",
      "method": "POST",
      "path": "/customer/referral_codes",
      "summary": "Create the signed-in customer's own referral share code",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_referrals",
      "method": "GET",
      "path": "/customer/referrals",
      "summary": "Read customer referrals",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_reward_offers",
      "method": "GET",
      "path": "/customer/reward_offers",
      "summary": "List customer reward offers",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_session_family_revocations",
      "method": "POST",
      "path": "/customer/session_family_revocations",
      "summary": "Revoke this session family",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_session_renewals",
      "method": "POST",
      "path": "/customer/session_renewals",
      "summary": "Renew a live session within its original authority and family lifetime",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer_sessions:exchange"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer_sessions:exchange"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_session_revocations",
      "method": "POST",
      "path": "/customer/session_revocations",
      "summary": "Revoke this session",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_shop_offers",
      "method": "GET",
      "path": "/customer/shop_offers",
      "summary": "List the shop offers the player can buy now",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_shop_purchases",
      "method": "POST",
      "path": "/customer/shop_purchases",
      "summary": "Buy a shop offer",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_social_profile_self",
      "method": "GET",
      "path": "/customer/social_profile",
      "summary": "Read the display name, avatar and visibility the customer shows to other players",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "update_customer_social_profile_self",
      "method": "PATCH",
      "path": "/customer/social_profile",
      "summary": "Choose the display name, avatar and visibility other players see (not for anonymous sessions)",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_state",
      "method": "GET",
      "path": "/customer/state",
      "summary": "Read current customer state",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_state_changes",
      "method": "GET",
      "path": "/customer/state_changes",
      "summary": "Receive bounded customer state invalidations",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "non_json_transport",
          "detail": "A customer's server-sent change stream; read the customer state reads instead."
        }
      }
    },
    {
      "operation_id": "get_customer_streaks",
      "method": "GET",
      "path": "/customer/streaks",
      "summary": "Read customer streaks",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_streaks_freeze_cancellations",
      "method": "POST",
      "path": "/customer/streaks/freeze_cancellations",
      "summary": "Cancel an unconsumed freeze purchase",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_streaks_freeze_purchases",
      "method": "POST",
      "path": "/customer/streaks/freeze_purchases",
      "summary": "Purchase streak freezes",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_streaks_repairs",
      "method": "POST",
      "path": "/customer/streaks/repairs",
      "summary": "Repair a broken streak",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_streaks_participation_id_freeze_purchases",
      "method": "GET",
      "path": "/customer/streaks/{participation_id}/freeze_purchases",
      "summary": "List the freeze purchases of a streak participation and its predecessors",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_team_self",
      "method": "GET",
      "path": "/customer/team",
      "summary": "Read the customer's team, their role and the members (null when in no team)",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "update_customer_team",
      "method": "PATCH",
      "path": "/customer/team",
      "summary": "Change the team's name, description, join policy or capacity (owner and admins)",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "rotate_customer_team_invite_code",
      "method": "POST",
      "path": "/customer/team/invite_codes",
      "summary": "Replace the invite code; the old one stops working at once (owner and admins)",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "kick_customer_team_member",
      "method": "POST",
      "path": "/customer/team/members/{handle}/kick",
      "summary": "Remove a member (the owner removes admins and members, an admin only members)",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "set_customer_team_member_role",
      "method": "POST",
      "path": "/customer/team/members/{handle}/role",
      "summary": "Change a member's role: the owner sets admin or member, or hands over ownership; an admin promotes members",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "list_customer_team_quests",
      "method": "GET",
      "path": "/customer/team/quests",
      "summary": "Read the team's quests of the current period: progress, the customer's part and reward, each member's part",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "leave_customer_team",
      "method": "DELETE",
      "path": "/customer/team_membership",
      "summary": "Leave the team (an owner hands over to the longest-standing admin, else member; the last member disbands it)",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "join_customer_team",
      "method": "POST",
      "path": "/customer/team_memberships",
      "summary": "Join an open team by id, or an invite team by its code; joining your own team again changes nothing",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_team_quest_board",
      "method": "GET",
      "path": "/customer/team_quest_boards/{definition}",
      "summary": "Rank the teams of a team quest's current period by progress, with the customer's own team",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "list_customer_teams",
      "method": "GET",
      "path": "/customer/teams",
      "summary": "Find open teams to join, newest first, searchable by name prefix",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "create_customer_team",
      "method": "POST",
      "path": "/customer/teams",
      "summary": "Start a team and become its owner (not for anonymous sessions or team members)",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_tiers",
      "method": "GET",
      "path": "/customer/tiers",
      "summary": "List customer tiers",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:read"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "post_customer_transfers",
      "method": "POST",
      "path": "/customer/transfers",
      "summary": "Transfer points to another customer, by their external id or referral code",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "customer_session"
      ],
      "scopes": [
        "customer:write"
      ],
      "authorization": [
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive",
        "runs_as_customer": true
      }
    },
    {
      "operation_id": "get_customer_identity_bindings",
      "method": "GET",
      "path": "/customer_identity_bindings",
      "summary": "List customer identity bindings without provider subjects",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customer_identity_bindings:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer_identity_bindings:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customer_identity_bindings:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_customer_identity_bindings",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_customer_identity_bindings_id",
      "method": "GET",
      "path": "/customer_identity_bindings/{id}",
      "summary": "Read customer identity binding security state",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customer_identity_bindings:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer_identity_bindings:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customer_identity_bindings:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_customer_identity_bindings_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_customer_identity_bindings_id",
      "method": "PATCH",
      "path": "/customer_identity_bindings/{id}",
      "summary": "Suspend a binding or raise its provider proof cutoff",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customer_identity_bindings:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer_identity_bindings:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customer_identity_bindings:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "post_customer_merges_backend",
      "method": "POST",
      "path": "/customer_merges",
      "summary": "Merge an anonymous account using trusted backend authority",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "secret_key"
      ],
      "scopes": [
        "customers:merge"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:merge"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "post_customer_sessions",
      "method": "POST",
      "path": "/customer_sessions",
      "summary": "Exchange provider proof, backend authority or anonymous admission for a customer session",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "publishable_key",
        "secret_key"
      ],
      "scopes": [
        "customer_sessions:exchange",
        "customer_sessions:write"
      ],
      "authorization": [
        {
          "credentials": [
            "publishable_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer_sessions:exchange"
          ]
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer_sessions:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "get_customers",
      "method": "GET",
      "path": "/customers",
      "summary": "List customers (newest first)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_customers",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_customers",
      "method": "POST",
      "path": "/customers",
      "summary": "Create or update a customer by external id (201 created, 200 updated)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "get_customers_id",
      "method": "GET",
      "path": "/customers/{id}",
      "summary": "One customer by id or external id",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_customers_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_customers_id",
      "method": "PATCH",
      "path": "/customers/{id}",
      "summary": "Merge-patch attributes (null removes a key)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "delete_customers_id",
      "method": "DELETE",
      "path": "/customers/{id}",
      "summary": "Delete: redact attributes and events, remove aliases, keep ledger history",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "post_customers_id_aliases",
      "method": "POST",
      "path": "/customers/{id}/aliases",
      "summary": "Identify an alias; active account movement additionally requires a secret key with customers:merge",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "get_customers_id_balances",
      "method": "GET",
      "path": "/customers/{id}/balances",
      "summary": "Balances per currency",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_customers_id_balances",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_battle_pass_claim",
      "method": "POST",
      "path": "/customers/{id}/battle_pass_claims",
      "summary": "Claim a battle pass tier track, or every claimable one, for a customer",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "set_battle_pass_premium",
      "method": "POST",
      "path": "/customers/{id}/battle_pass_premium",
      "summary": "Set or revoke a customer's battle pass premium",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "list_customer_battle_passes",
      "method": "GET",
      "path": "/customers/{id}/battle_passes",
      "summary": "Read every active battle pass as a customer's group sees it now",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_customer_battle_passes",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_customer_blocks",
      "method": "GET",
      "path": "/customers/{id}/blocks",
      "summary": "List the players a customer has blocked",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_customer_blocks",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_customer_active_boosts",
      "method": "GET",
      "path": "/customers/{id}/boosts",
      "summary": "Read a customer's running boosts",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_customer_active_boosts",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_customer_challenge_progress",
      "method": "GET",
      "path": "/customers/{id}/challenge_progress",
      "summary": "All challenge progress for a customer",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_customer_challenge_progress",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_customers_id_client_token",
      "method": "POST",
      "path": "/customers/{id}/client_token",
      "summary": "Mint the token a browser must present to send events as this customer",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "secret_key"
      ],
      "scopes": [
        "customers:client_token"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:client_token"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "access"
      }
    },
    {
      "operation_id": "get_customers_id_dates_key",
      "method": "GET",
      "path": "/customers/{id}/dates/{key}",
      "summary": "One date of a customer (birthday, anniversary, a custom key or signup)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_customers_id_dates_key",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_customers_id_dates_key",
      "method": "POST",
      "path": "/customers/{id}/dates/{key}",
      "summary": "Set or change a date of a customer",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "delete_customers_id_dates_key",
      "method": "DELETE",
      "path": "/customers/{id}/dates/{key}",
      "summary": "Remove a date of a customer",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_customer_energy",
      "method": "GET",
      "path": "/customers/{id}/energy",
      "summary": "Read a customer's energy at the server's now",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_customer_energy",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_energy_entitlement",
      "method": "POST",
      "path": "/customers/{id}/energy_entitlements",
      "summary": "Set or end unlimited energy until an instant",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "create_energy_refill",
      "method": "POST",
      "path": "/customers/{id}/energy_refills",
      "summary": "Refill a customer's energy by an amount or to full",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "create_energy_spend",
      "method": "POST",
      "path": "/customers/{id}/energy_spends",
      "summary": "Spend a customer's energy, all or nothing",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_customer_experiments",
      "method": "GET",
      "path": "/customers/{id}/experiments",
      "summary": "A customer's variant in every running experiment",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "analytics:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "analytics:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "analytics:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_customer_experiments",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_customers_id_export",
      "method": "GET",
      "path": "/customers/{id}/export",
      "summary": "Complete data export: profile plus the first page of every history section (events, ledger, programs, streaks, badges, quests, levels, leaderboards, referrals, commerce, identity, merges); continue a section on /customers/{id}/export/{section}",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_customers_id_export",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_customer_export_section",
      "method": "GET",
      "path": "/customers/{id}/export/{section}",
      "summary": "One page of one customer export section; follow next_cursor until it is null to read the section completely",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_customer_export_section",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_customer_friends",
      "method": "GET",
      "path": "/customers/{id}/friends",
      "summary": "List a customer's friends, or their incoming or outgoing friend requests",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_customer_friends",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "import_customer_friendship",
      "method": "POST",
      "path": "/customers/{id}/friendships",
      "summary": "Make two customers friends at once (import an existing friend graph; no request, no notification)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "delete_customer_friendship",
      "method": "DELETE",
      "path": "/customers/{id}/friendships/{other}",
      "summary": "End a friendship or drop a pending friend request between two customers",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_customer_inventory",
      "method": "GET",
      "path": "/customers/{id}/inventory",
      "summary": "Read a customer's inventory",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_customer_inventory",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_inventory_consumption",
      "method": "POST",
      "path": "/customers/{id}/inventory_consumptions",
      "summary": "Consume items from a customer's inventory",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_customer_inventory_entries",
      "method": "GET",
      "path": "/customers/{id}/inventory_entries",
      "summary": "List a customer's inventory ledger entries, newest first",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_customer_inventory_entries",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_inventory_equip",
      "method": "POST",
      "path": "/customers/{id}/inventory_equips",
      "summary": "Equip or unequip a held item",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "create_inventory_grant",
      "method": "POST",
      "path": "/customers/{id}/inventory_grants",
      "summary": "Grant items to a customer",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "create_inventory_revocation",
      "method": "POST",
      "path": "/customers/{id}/inventory_revocations",
      "summary": "Take held items back from a customer",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_customer_leagues",
      "method": "GET",
      "path": "/customers/{id}/leagues",
      "summary": "Read a customer's tier, rank and last result in every active league",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_customer_leagues",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_customer_notification_contact",
      "method": "GET",
      "path": "/customers/{id}/notification_contact",
      "summary": "Read a customer's address, locale, consent and reachability",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_customer_notification_contact",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "put_customer_notification_contact",
      "method": "POST",
      "path": "/customers/{id}/notification_contact",
      "summary": "Set a customer's email address, locale or consent",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "list_customer_notification_devices",
      "method": "GET",
      "path": "/customers/{id}/notification_devices",
      "summary": "List a customer's push devices (never the tokens)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_customer_notification_devices",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_customer_notification_preferences",
      "method": "GET",
      "path": "/customers/{id}/notification_preferences",
      "summary": "Read what a customer has opted out of, per message type and channel",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_customer_notification_preferences",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "set_customer_notification_preferences",
      "method": "POST",
      "path": "/customers/{id}/notification_preferences",
      "summary": "Record a customer's opt-outs or opt-ins on their behalf",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "list_customer_participations",
      "method": "GET",
      "path": "/customers/{id}/participations",
      "summary": "List a customer's program participations",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_customer_participations",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_customers_id_session_revocations",
      "method": "POST",
      "path": "/customers/{id}/session_revocations",
      "summary": "Revoke every customer session by advancing its authentication epoch",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customer_sessions:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customer_sessions:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customer_sessions:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "create_shop_purchase_refund",
      "method": "POST",
      "path": "/customers/{id}/shop_purchase_refunds",
      "summary": "Refund an unused shop purchase",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "create_shop_purchase",
      "method": "POST",
      "path": "/customers/{id}/shop_purchases",
      "summary": "Buy a shop offer for a customer",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "get_customer_social_profile",
      "method": "GET",
      "path": "/customers/{id}/social_profile",
      "summary": "Read the display name, avatar and visibility a customer shows to other customers",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_customer_social_profile",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "moderate_customer_social_profile",
      "method": "POST",
      "path": "/customers/{id}/social_profile_moderations",
      "summary": "Hide a customer's chosen name and avatar from other customers, or show them again",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_customers_id_state",
      "method": "GET",
      "path": "/customers/{id}/state",
      "summary": "Balances, tiers, segments, counters, challenge progress, issuances and aliases",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_customers_id_state",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_customer_store_credit",
      "method": "GET",
      "path": "/customers/{id}/store_credit",
      "summary": "A customer's store credit per wallet, with the amount held by open orders",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_customer_store_credit",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "quote_store_credit",
      "method": "GET",
      "path": "/customers/{id}/store_credit/quote",
      "summary": "Preview how much store credit an order total can take (changes nothing)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "quote_store_credit",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_customers_id_tiers",
      "method": "GET",
      "path": "/customers/{id}/tiers",
      "summary": "Current tier per program",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_customers_id_tiers",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_customers_id_tiers",
      "method": "POST",
      "path": "/customers/{id}/tiers",
      "summary": "Operator tier set (either direction, audited, source manual)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "list_customer_points_transfers",
      "method": "GET",
      "path": "/customers/{id}/transfers",
      "summary": "Transfers a customer sent or received (newest first)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_customer_points_transfers",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_points_transfer",
      "method": "POST",
      "path": "/customers/{id}/transfers",
      "summary": "Transfer points from this customer to another customer",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_energy_definitions",
      "method": "GET",
      "path": "/energy_definitions",
      "summary": "List energy definitions",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_energy_definitions",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_energy_definition",
      "method": "GET",
      "path": "/energy_definitions/{id}",
      "summary": "Read an energy definition by id or key",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_energy_definition",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_environments_id",
      "method": "GET",
      "path": "/environments/{id}",
      "summary": "One environment",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "environments:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "none",
          "scopes": []
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "environments:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": "get_environments_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_environments_id",
      "method": "PATCH",
      "path": "/environments/{id}",
      "summary": "Update name, timezone, or the rules kill switch (the kind never changes)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "environments:read",
        "environments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "environments:read",
            "environments:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "organization"
      }
    },
    {
      "operation_id": "get_environments_id_api_keys",
      "method": "GET",
      "path": "/environments/{id}/api_keys",
      "summary": "List keys (hashes never returned)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "environments:read"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "resource_bound",
          "scopes": [
            "environments:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "resource_bound",
          "scopes": []
        }
      ],
      "tool": "get_environments_id_api_keys",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_environments_id_api_keys",
      "method": "POST",
      "path": "/environments/{id}/api_keys",
      "summary": "Create a secret or publishable key; the token is returned once",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "environments:read",
        "environments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "resource_bound",
          "scopes": [
            "environments:read",
            "environments:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "resource_bound",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "access"
      }
    },
    {
      "operation_id": "resetTestEnvironment",
      "method": "POST",
      "path": "/environments/{id}/reset",
      "summary": "Reset a test environment: delete every test player and their runtime state, keep the configuration",
      "exposure": "mutation",
      "proposal": false,
      "retry": "keyed_resume",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "environments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "environments:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "getTestPlayers",
      "method": "GET",
      "path": "/environments/{id}/test_players",
      "summary": "Test players used and the limit of a test environment",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "environments:read"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "environments:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": "getTestPlayers",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_environments_id_usage",
      "method": "GET",
      "path": "/environments/{id}/usage",
      "summary": "Metered usage per calendar month",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "environments:read",
        "usage:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": []
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "resource_bound",
          "scopes": [
            "environments:read",
            "usage:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "resource_bound",
          "scopes": []
        }
      ],
      "tool": "get_environments_id_usage",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_event_definitions",
      "method": "GET",
      "path": "/event_definitions",
      "summary": "Observed event names with property types and samples",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "events:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "events:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "events:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_event_definitions",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_event_definitions_id",
      "method": "GET",
      "path": "/event_definitions/{id}",
      "summary": "One event definition, with its schema enforcement mode and warn count",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "events:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "events:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "events:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_event_definitions_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_event_definitions_id",
      "method": "PATCH",
      "path": "/event_definitions/{id}",
      "summary": "Describe an event, confirm its schema, set schema enforcement, or allow it from publishable keys",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "events:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "events:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "events:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_events",
      "method": "GET",
      "path": "/events",
      "summary": "List events (newest first)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "events:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "events:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "events:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_events",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_events",
      "method": "POST",
      "path": "/events",
      "summary": "Send one event or a batch; async by default, `mode: sync` evaluates inline (secret keys)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "customer_session",
        "publishable_key",
        "secret_key"
      ],
      "scopes": [
        "events:write",
        "events:write_client"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "events:write"
          ]
        },
        {
          "credentials": [
            "customer_session"
          ],
          "environment": "credential_bound",
          "scopes": [
            "events:write_client"
          ]
        },
        {
          "credentials": [
            "publishable_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "events:write_client"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "get_events_id",
      "method": "GET",
      "path": "/events/{id}",
      "summary": "One event with its evaluation status",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "events:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "events:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "events:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_events_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_events_id_execution",
      "method": "GET",
      "path": "/events/{id}/execution",
      "summary": "Plan and trace of an evaluated event",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "events:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "events:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "events:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_events_id_execution",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_events_id_retry",
      "method": "POST",
      "path": "/events/{id}/retry",
      "summary": "Re-run an accepted, failed or poison event with its original identity",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "events:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "events:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "events:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "list_experiment_templates",
      "method": "GET",
      "path": "/experiment_templates",
      "summary": "Experiment templates for common goals (streak lift, day 7 retention, purchase conversion): what each measures and which targets to pick",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "analytics:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "analytics:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "analytics:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_experiment_templates",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_experiments",
      "method": "GET",
      "path": "/experiments",
      "summary": "List experiments, newest first",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "analytics:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "analytics:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "analytics:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_experiments",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_experiment",
      "method": "POST",
      "path": "/experiments",
      "summary": "Create a draft experiment from explicit variants or the holdout template (a target key is the rule id, the campaign id or the program key)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "analytics:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "analytics:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "analytics:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_experiment",
      "method": "GET",
      "path": "/experiments/{id}",
      "summary": "One experiment by id or key",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "analytics:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "analytics:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "analytics:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_experiment",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "update_experiment",
      "method": "PATCH",
      "path": "/experiments/{id}",
      "summary": "Change a draft experiment (same fields as create; targets by rule id, campaign id or program key)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "analytics:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "analytics:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "analytics:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "delete_experiment",
      "method": "DELETE",
      "path": "/experiments/{id}",
      "summary": "Delete a draft experiment",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "analytics:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "analytics:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "analytics:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "end_experiment",
      "method": "POST",
      "path": "/experiments/{id}/end",
      "summary": "End a running experiment, optionally naming the winning variant",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "analytics:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "analytics:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "analytics:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_experiment_results",
      "method": "GET",
      "path": "/experiments/{id}/results",
      "summary": "Per-variant results with intervals and lift against the control (first variant)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "analytics:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "analytics:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "analytics:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_experiment_results",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "start_experiment",
      "method": "POST",
      "path": "/experiments/{id}/start",
      "summary": "Start a draft experiment: its targets are delivered by variant from now on",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "analytics:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "analytics:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "analytics:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "list_friend_quest_definitions",
      "method": "GET",
      "path": "/friend_quest_definitions",
      "summary": "List friend quest definitions, newest first",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_friend_quest_definitions",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_friend_quest_definition",
      "method": "POST",
      "path": "/friend_quest_definitions",
      "summary": "Create a draft friend quest definition",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_friend_quest_definition",
      "method": "GET",
      "path": "/friend_quest_definitions/{id}",
      "summary": "Read one friend quest definition by id or key",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_friend_quest_definition",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "update_friend_quest_definition",
      "method": "PATCH",
      "path": "/friend_quest_definitions/{id}",
      "summary": "Change the name or the configuration of a friend quest definition (If-Match)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "activate_friend_quest_definition",
      "method": "POST",
      "path": "/friend_quest_definitions/{id}/activate",
      "summary": "Start a draft friend quest",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "archive_friend_quest_definition",
      "method": "POST",
      "path": "/friend_quest_definitions/{id}/archive",
      "summary": "Archive a friend quest for good",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "create_friend_quest_contribution",
      "method": "POST",
      "path": "/friend_quest_definitions/{id}/contributions",
      "summary": "Add to (or correct) a customer's side of their current friend quest; completes it at the target",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "pause_friend_quest_definition",
      "method": "POST",
      "path": "/friend_quest_definitions/{id}/pause",
      "summary": "Pause a friend quest: no new progress",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "list_friend_quests",
      "method": "GET",
      "path": "/friend_quest_definitions/{id}/quests",
      "summary": "List the quests of a friend quest definition, newest first, with customer ids",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_friend_quests",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "resume_friend_quest_definition",
      "method": "POST",
      "path": "/friend_quest_definitions/{id}/resume",
      "summary": "Resume a paused friend quest",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "list_friend_streak_definitions",
      "method": "GET",
      "path": "/friend_streak_definitions",
      "summary": "List friend streak definitions, newest first",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_friend_streak_definitions",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_friend_streak_definition",
      "method": "POST",
      "path": "/friend_streak_definitions",
      "summary": "Create a draft friend streak definition",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_friend_streak_definition",
      "method": "GET",
      "path": "/friend_streak_definitions/{id}",
      "summary": "Read one friend streak definition by id or key",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_friend_streak_definition",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "update_friend_streak_definition",
      "method": "PATCH",
      "path": "/friend_streak_definitions/{id}",
      "summary": "Change the name or the configuration of a friend streak definition (If-Match)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "activate_friend_streak_definition",
      "method": "POST",
      "path": "/friend_streak_definitions/{id}/activate",
      "summary": "Start a draft friend streak",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "create_friend_streak_activity",
      "method": "POST",
      "path": "/friend_streak_definitions/{id}/activities",
      "summary": "Record that a customer was active today (or yesterday); extends the streak with every friend active that day",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "archive_friend_streak_definition",
      "method": "POST",
      "path": "/friend_streak_definitions/{id}/archive",
      "summary": "Archive a friend streak for good",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "pause_friend_streak_definition",
      "method": "POST",
      "path": "/friend_streak_definitions/{id}/pause",
      "summary": "Pause a friend streak: no new progress",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "resume_friend_streak_definition",
      "method": "POST",
      "path": "/friend_streak_definitions/{id}/resume",
      "summary": "Resume a paused friend streak",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "commerce_list_fulfillments",
      "method": "GET",
      "path": "/fulfillments",
      "summary": "List fulfillments",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "fulfillments:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "fulfillments:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "fulfillments:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "commerce_list_fulfillments",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "commerce_read_fulfillments",
      "method": "GET",
      "path": "/fulfillments/{id}",
      "summary": "Read fulfillments",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "fulfillments:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "fulfillments:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "fulfillments:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "commerce_read_fulfillments",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "commerce_reconcile",
      "method": "POST",
      "path": "/fulfillments/{id}/reconciliations",
      "summary": "Create a commerce reconciliation",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "fulfillments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "fulfillments:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "fulfillments:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "get_identity_connections",
      "method": "GET",
      "path": "/identity_connections",
      "summary": "List identity connections",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "identity_connections:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "identity_connections:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "identity_connections:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_identity_connections",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_identity_connections",
      "method": "POST",
      "path": "/identity_connections",
      "summary": "Create a fixed identity verification connection",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "identity_connections:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "identity_connections:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "identity_connections:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "access"
      }
    },
    {
      "operation_id": "get_identity_connections_id",
      "method": "GET",
      "path": "/identity_connections/{id}",
      "summary": "Read an identity connection",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "identity_connections:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "identity_connections:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "identity_connections:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_identity_connections_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_identity_connections_id",
      "method": "PATCH",
      "path": "/identity_connections/{id}",
      "summary": "Update verification policy and invalidate old connection generations",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "identity_connections:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "identity_connections:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "identity_connections:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "post_identity_connections_id_disable",
      "method": "POST",
      "path": "/identity_connections/{id}/disable",
      "summary": "Disable exchange and sessions issued through this connection",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "identity_connections:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "identity_connections:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "identity_connections:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_imports",
      "method": "GET",
      "path": "/imports",
      "summary": "List imports (newest first)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_imports",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_import",
      "method": "POST",
      "path": "/imports",
      "summary": "Start an import of customers and balances from another loyalty program",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "setup"
      }
    },
    {
      "operation_id": "get_import",
      "method": "GET",
      "path": "/imports/{id}",
      "summary": "One import: status, counts, totals and the dry run report",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_import",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "append_import_chunk",
      "method": "POST",
      "path": "/imports/{id}/chunks",
      "summary": "Append the next part of the CSV file (numbered from 0)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "setup"
      }
    },
    {
      "operation_id": "dry_run_import",
      "method": "POST",
      "path": "/imports/{id}/dry_run",
      "summary": "Check the file, match customers and compute totals without importing anything",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "read_like"
      }
    },
    {
      "operation_id": "purge_import_content",
      "method": "POST",
      "path": "/imports/{id}/purge_content",
      "summary": "Delete the uploaded file text of a completed import (rows and report stay)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "get_import_report",
      "method": "GET",
      "path": "/imports/{id}/report",
      "summary": "Reconciliation: the totals of the file against the ledger entries of the import",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_import_report",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_import_rows",
      "method": "GET",
      "path": "/imports/{id}/rows",
      "summary": "The rows of an import in file order, optionally by status",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_import_rows",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "run_import",
      "method": "POST",
      "path": "/imports/{id}/run",
      "summary": "Import the next rows (call again while has_more is true)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "keyed_resume",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "post_invitations_id_accept",
      "method": "POST",
      "path": "/invitations/{id}/accept",
      "summary": "Accept an invitation with its token; creates the user when needed and returns a first token (existing users sign in instead)",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [],
      "scopes": [],
      "authorization": [],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "auth_handshake",
          "detail": "The invitee accepts with the invitation token sent to their email address."
        }
      }
    },
    {
      "operation_id": "list_items",
      "method": "GET",
      "path": "/items",
      "summary": "List item definitions",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_items",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_item",
      "method": "GET",
      "path": "/items/{id}",
      "summary": "Read an item definition by id or key",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_item",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_leaderboards",
      "method": "GET",
      "path": "/leaderboards",
      "summary": "List leaderboard programs",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_leaderboards",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_leaderboard",
      "method": "GET",
      "path": "/leaderboards/{id}",
      "summary": "Read a leaderboard program",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_leaderboard",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_leaderboard_boards",
      "method": "GET",
      "path": "/leaderboards/{id}/boards",
      "summary": "List leaderboard seasons and scopes",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_leaderboard_boards",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_leaderboard_correction_generation",
      "method": "POST",
      "path": "/leaderboards/{id}/boards/{board_id}/correction_generations",
      "summary": "Fence a leaderboard correction generation",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_leaderboard_entries",
      "method": "GET",
      "path": "/leaderboards/{id}/boards/{board_id}/entries",
      "summary": "Read a board's entries, or one customer's entry",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_leaderboard_entries",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_leaderboard_standing_build",
      "method": "POST",
      "path": "/leaderboards/{id}/boards/{board_id}/standing_builds",
      "summary": "Start a leaderboard standing build",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "list_leaderboard_standings",
      "method": "GET",
      "path": "/leaderboards/{id}/boards/{board_id}/standings",
      "summary": "Read leaderboard standings",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_leaderboard_standings",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_leaderboard_contribution",
      "method": "POST",
      "path": "/leaderboards/{id}/contributions",
      "summary": "Contribute an authenticated leaderboard score",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "create_leaderboard_correction",
      "method": "POST",
      "path": "/leaderboards/{id}/corrections",
      "summary": "Correct a verified leaderboard contribution",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "get_league_cohort_standings",
      "method": "GET",
      "path": "/league_cohorts/{id}/standings",
      "summary": "Read the ranked standings of one cohort, with customer ids",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_league_cohort_standings",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_league_cohorts",
      "method": "GET",
      "path": "/league_periods/{id}/cohorts",
      "summary": "List the cohorts (groups of about 30) of a league period",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_league_cohorts",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_leagues",
      "method": "GET",
      "path": "/leagues",
      "summary": "List leagues, newest first",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_leagues",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_league",
      "method": "POST",
      "path": "/leagues",
      "summary": "Create a draft league: tiers, promotion and demotion counts, cohort size, rewards",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_league",
      "method": "GET",
      "path": "/leagues/{id}",
      "summary": "Read one league by id or key",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_league",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "update_league",
      "method": "PATCH",
      "path": "/leagues/{id}",
      "summary": "Change the name or the configuration (If-Match); a new configuration applies from the next period",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "activate_league",
      "method": "POST",
      "path": "/leagues/{id}/activate",
      "summary": "Start a draft league: periods open and scores count",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "archive_league",
      "method": "POST",
      "path": "/leagues/{id}/archive",
      "summary": "Archive a league for good",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "create_league_contribution",
      "method": "POST",
      "path": "/leagues/{id}/contributions",
      "summary": "Add to (or correct) a customer's score in the current period of a direct-source league",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "list_league_members",
      "method": "GET",
      "path": "/leagues/{id}/members",
      "summary": "List the members of a league and the tier each one holds",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_league_members",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "set_league_member_status",
      "method": "POST",
      "path": "/leagues/{id}/members",
      "summary": "Take a customer out of a league (left) or let them back in (active)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "pause_league",
      "method": "POST",
      "path": "/leagues/{id}/pause",
      "summary": "Pause a league: no new scores; open periods still settle",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "list_league_periods",
      "method": "GET",
      "path": "/leagues/{id}/periods",
      "summary": "List the periods of a league, newest first, with the configuration each one pinned",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_league_periods",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "resume_league",
      "method": "POST",
      "path": "/leagues/{id}/resume",
      "summary": "Resume a paused league",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_ledger_entries",
      "method": "GET",
      "path": "/ledger_entries",
      "summary": "List entries (newest first)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_ledger_entries",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_ledger_entries",
      "method": "POST",
      "path": "/ledger_entries",
      "summary": "Manual adjustment (positive credits a lot, negative spends FIFO)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "get_ledger_entries_id",
      "method": "GET",
      "path": "/ledger_entries/{id}",
      "summary": "One entry",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_ledger_entries_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_levels",
      "method": "GET",
      "path": "/levels",
      "summary": "List level programs",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_levels",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_level",
      "method": "GET",
      "path": "/levels/{id}",
      "summary": "Read a level program",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_level",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_level_enrollment",
      "method": "POST",
      "path": "/levels/{id}/enrollments",
      "summary": "Enroll in a level program",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "create_level_evaluation",
      "method": "POST",
      "path": "/levels/{id}/evaluations",
      "summary": "Evaluate current level qualification",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "list_level_participations",
      "method": "GET",
      "path": "/levels/{id}/participations",
      "summary": "List retained level participations",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_level_participations",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_level_participation",
      "method": "GET",
      "path": "/levels/{id}/participations/{participation_id}",
      "summary": "Read a retained level participation",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_level_participation",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_level_prestige",
      "method": "POST",
      "path": "/levels/{id}/prestiges",
      "summary": "Start an explicit prestige occurrence",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_loot_tables",
      "method": "GET",
      "path": "/loot_tables",
      "summary": "List loot tables",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_loot_tables",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_loot_table",
      "method": "GET",
      "path": "/loot_tables/{id}",
      "summary": "Read a loot table and its active version by id or key",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_loot_table",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_loot_table_odds",
      "method": "GET",
      "path": "/loot_tables/{id}/odds",
      "summary": "Read the published odds of a loot table, or of one of its versions",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_loot_table_odds",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_loyalty_reporting_settings",
      "method": "GET",
      "path": "/loyalty/reporting_settings",
      "summary": "Which events are orders, and what a point is worth, for the ROI report",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_loyalty_reporting_settings",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "put_loyalty_reporting_settings",
      "method": "POST",
      "path": "/loyalty/reporting_settings",
      "summary": "Set the order events and point values the ROI report uses",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "currencies:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "currencies:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "currencies:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "configuration"
      }
    },
    {
      "operation_id": "get_loyalty_roi",
      "method": "GET",
      "path": "/loyalty/roi",
      "summary": "Revenue from members and non-members, reward cost, liability and ROI for a period, per ISO currency",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_loyalty_roi",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_match_profiles",
      "method": "GET",
      "path": "/match_profiles",
      "summary": "List match profiles",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_match_profiles",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_match_profile",
      "method": "GET",
      "path": "/match_profiles/{id}",
      "summary": "Read a match profile by id or key",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_match_profile",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_match_result_review",
      "method": "POST",
      "path": "/match_result_players/{id}/reviews",
      "summary": "Admit or reject a held player result",
      "exposure": "mutation",
      "proposal": false,
      "retry": "keyed_resume",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_match_results",
      "method": "GET",
      "path": "/match_results",
      "summary": "List reported matches, oldest first; status=held is the review queue",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "events:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "events:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "events:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_match_results",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_match_result",
      "method": "POST",
      "path": "/match_results",
      "summary": "Report a finished match from an authoritative game server",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "secret_key"
      ],
      "scopes": [
        "events:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "events:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "get_match_result",
      "method": "GET",
      "path": "/match_results/{id}",
      "summary": "Read a reported match by id or by your match_id",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "events:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "events:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "events:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_match_result",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_notification_catalog",
      "method": "GET",
      "path": "/notification_catalog",
      "summary": "List the message types Orishare knows, their triggers, variables and default copy",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_notification_catalog",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_notification_connectors",
      "method": "GET",
      "path": "/notification_connectors",
      "summary": "List the connectors to the customer's own messaging tools (never the credentials)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_notification_connectors",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_notification_connector",
      "method": "POST",
      "path": "/notification_connectors",
      "summary": "Connect Klaviyo, Braze, OneSignal or Firebase Cloud Messaging (credentials are sealed and never shown again)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "access"
      }
    },
    {
      "operation_id": "get_notification_connector",
      "method": "GET",
      "path": "/notification_connectors/{id}",
      "summary": "Read one connector (never the credentials)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_notification_connector",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "update_notification_connector",
      "method": "PATCH",
      "path": "/notification_connectors/{id}",
      "summary": "Rename a connector or replace its credentials (If-Match)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "disable_notification_connector",
      "method": "POST",
      "path": "/notification_connectors/{id}/disable",
      "summary": "Stop sending through a connector",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "enable_notification_connector",
      "method": "POST",
      "path": "/notification_connectors/{id}/enable",
      "summary": "Use a disabled connector again",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "access"
      }
    },
    {
      "operation_id": "get_notification_message_stats",
      "method": "GET",
      "path": "/notification_message_stats",
      "summary": "Count messages by type, channel, status and reason (default: the last 7 days)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_notification_message_stats",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_notification_message_types",
      "method": "GET",
      "path": "/notification_message_types",
      "summary": "List the message types this environment sends",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_notification_message_types",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_notification_message_type",
      "method": "POST",
      "path": "/notification_message_types",
      "summary": "Send a message for an event type: pick the trigger and the delivery routes",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "configuration"
      }
    },
    {
      "operation_id": "get_notification_message_type",
      "method": "GET",
      "path": "/notification_message_types/{id}",
      "summary": "Read one message type by id or key",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_notification_message_type",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "update_notification_message_type",
      "method": "PATCH",
      "path": "/notification_message_types/{id}",
      "summary": "Change the routes, caps, class or triggers of a message type (If-Match)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "configuration"
      }
    },
    {
      "operation_id": "pause_notification_message_type",
      "method": "POST",
      "path": "/notification_message_types/{id}/pause",
      "summary": "Stop sending a message type (events still go to webhooks)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "configuration"
      }
    },
    {
      "operation_id": "resume_notification_message_type",
      "method": "POST",
      "path": "/notification_message_types/{id}/resume",
      "summary": "Resume a paused message type",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "configuration"
      }
    },
    {
      "operation_id": "list_notification_templates",
      "method": "GET",
      "path": "/notification_message_types/{id}/templates",
      "summary": "List the templates of a message type, per channel and locale",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_notification_templates",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "put_notification_template",
      "method": "POST",
      "path": "/notification_message_types/{id}/templates",
      "summary": "Save the template of one channel and locale (creates or replaces it)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "configuration"
      }
    },
    {
      "operation_id": "delete_notification_template",
      "method": "DELETE",
      "path": "/notification_message_types/{id}/templates/{channel}/{locale}",
      "summary": "Delete the template of one channel and locale",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_notification_messages",
      "method": "GET",
      "path": "/notification_messages",
      "summary": "List recorded messages and their delivery status, newest first",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_notification_messages",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_notification_message",
      "method": "GET",
      "path": "/notification_messages/{id}",
      "summary": "Read one recorded message",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_notification_message",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_resend_notification_provider_event",
      "method": "POST",
      "path": "/notification_provider_events/resend",
      "summary": "Receive a Resend email event (Svix signed): bounces and complaints mark the address and the message",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [],
      "scopes": [],
      "authorization": [],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "inbound_callback",
          "detail": "The email provider reports deliveries, signed with its Svix secret."
        }
      }
    },
    {
      "operation_id": "get_notification_settings",
      "method": "GET",
      "path": "/notification_settings",
      "summary": "Read quiet hours, frequency caps, consent mode and sender identity",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_notification_settings",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "update_notification_settings",
      "method": "PATCH",
      "path": "/notification_settings",
      "summary": "Change quiet hours, caps, consent mode or sender identity (If-Match: the revision)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "notifications:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "notifications:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "configuration"
      }
    },
    {
      "operation_id": "get_notification_preferences_link",
      "method": "GET",
      "path": "/notifications/preferences",
      "summary": "Read the preferences a signed preferences link refers to (changes nothing)",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [],
      "scopes": [],
      "authorization": [],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "end_user_link",
          "detail": "Signed preferences link a customer opens from an email."
        }
      }
    },
    {
      "operation_id": "get_notification_unsubscribe",
      "method": "GET",
      "path": "/notifications/unsubscribe",
      "summary": "Read what an unsubscribe or preferences link refers to (changes nothing)",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [],
      "scopes": [],
      "authorization": [],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "end_user_link",
          "detail": "Signed unsubscribe link a customer opens from an email."
        }
      }
    },
    {
      "operation_id": "post_notification_unsubscribe",
      "method": "POST",
      "path": "/notifications/unsubscribe",
      "summary": "Unsubscribe with a signed link (one click, RFC 8058); safe to repeat",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [],
      "scopes": [],
      "authorization": [],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "end_user_link",
          "detail": "Signed one-click unsubscribe a mail client sends for a customer."
        }
      }
    },
    {
      "operation_id": "get_oauth_authorization_request",
      "method": "GET",
      "path": "/oauth/authorization_requests/{id}",
      "summary": "An AI app is asking to connect: what the consent page shows (the app is unverified)",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "session"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "session"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "dashboard_confirmation",
          "detail": "The consent screen of an AI app asking to connect, shown to the signed-in person."
        }
      }
    },
    {
      "operation_id": "decide_oauth_authorization_request",
      "method": "POST",
      "path": "/oauth/authorization_requests/{id}/decision",
      "summary": "Allow or deny an AI app: allow grants it one organization, chosen environments and an access level",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "session"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "session"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "dashboard_confirmation",
          "detail": "Only the person allows or denies an AI app on the dashboard consent screen."
        }
      }
    },
    {
      "operation_id": "list_oauth_grants",
      "method": "GET",
      "path": "/oauth/grants",
      "summary": "Connected apps: the AI apps the signed-in person allowed, newest first",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "session"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "session"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "dashboard_confirmation",
          "detail": "The person's connected AI apps, in Settings, AI connections."
        }
      }
    },
    {
      "operation_id": "delete_oauth_grant",
      "method": "DELETE",
      "path": "/oauth/grants/{id}",
      "summary": "Disconnect an AI app: revokes its access and every token at once",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "session"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "session"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "dashboard_confirmation",
          "detail": "Only the person disconnects an AI app, in Settings, AI connections."
        }
      }
    },
    {
      "operation_id": "get_organizations",
      "method": "GET",
      "path": "/organizations",
      "summary": "Organizations the caller belongs to",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": []
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": "get_organizations",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_organizations",
      "method": "POST",
      "path": "/organizations",
      "summary": "Create another organization owned by the caller, with a default project and two environments",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "session"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "organization"
      }
    },
    {
      "operation_id": "get_organizations_id",
      "method": "GET",
      "path": "/organizations/{id}",
      "summary": "One organization",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "organizations:read"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "organizations:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": "get_organizations_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_organizations_id",
      "method": "PATCH",
      "path": "/organizations/{id}",
      "summary": "Rename an organization or flip the AI drafting kill switch (If-Match for safe edits)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "organizations:read",
        "organizations:write"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "organizations:read",
            "organizations:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "organization"
      }
    },
    {
      "operation_id": "get_organizations_id_audit_logs",
      "method": "GET",
      "path": "/organizations/{id}/audit_logs",
      "summary": "Audit trail for an organization (filters by environment, action prefix, resource, actor, time)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "audit:read"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "resource_bound",
          "scopes": [
            "audit:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "resource_bound",
          "scopes": []
        }
      ],
      "tool": "get_organizations_id_audit_logs",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_organization_billing",
      "method": "GET",
      "path": "/organizations/{id}/billing",
      "summary": "Billing status: payment method, this month’s actions against the free 10,000, estimate and unbilled balance",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "session"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "session"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "dashboard_confirmation",
          "detail": "The organization's payment status and unbilled balance, in Settings, Billing."
        }
      }
    },
    {
      "operation_id": "create_organization_billing_checkout",
      "method": "POST",
      "path": "/organizations/{id}/billing/checkout",
      "summary": "Add a payment method: a Stripe Checkout session for usage billing (owner or admin)",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "session"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "session"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "dashboard_confirmation",
          "detail": "Only an owner or admin adds a payment method, through Stripe Checkout in the dashboard."
        }
      }
    },
    {
      "operation_id": "create_organization_billing_portal",
      "method": "POST",
      "path": "/organizations/{id}/billing/portal",
      "summary": "Manage billing: a Stripe Customer Portal session (owner or admin)",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "session"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "session"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "dashboard_confirmation",
          "detail": "Only an owner or admin manages billing, through the Stripe Customer Portal."
        }
      }
    },
    {
      "operation_id": "post_organizations_id_invitations",
      "method": "POST",
      "path": "/organizations/{id}/invitations",
      "summary": "Invite a user by email with a role",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "organizations:read",
        "organizations:write"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "organizations:read",
            "organizations:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "others_secrets",
          "detail": "The answer carries the invitation token meant for the invitee; a person invites teammates in the dashboard."
        }
      }
    },
    {
      "operation_id": "get_organizations_id_memberships",
      "method": "GET",
      "path": "/organizations/{id}/memberships",
      "summary": "List members",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "organizations:read"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "organizations:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": "get_organizations_id_memberships",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_organizations_id_memberships_user_id",
      "method": "PATCH",
      "path": "/organizations/{id}/memberships/{user_id}",
      "summary": "Change a member's role",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "organizations:write"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "organizations:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "organization"
      }
    },
    {
      "operation_id": "delete_organizations_id_memberships_user_id",
      "method": "DELETE",
      "path": "/organizations/{id}/memberships/{user_id}",
      "summary": "Remove a member (never the last owner)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "organizations:write"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "organizations:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "organization"
      }
    },
    {
      "operation_id": "get_organization_pricing",
      "method": "GET",
      "path": "/organizations/{id}/pricing",
      "summary": "The organization’s agreement: assignment in force, group, terms and next change",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session"
      ],
      "scopes": [
        "organizations:read"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "organizations:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "update_organization_spend_settings",
      "method": "PATCH",
      "path": "/organizations/{id}/spend_settings",
      "summary": "Set the spend ceiling and alerts (owner or admin; If-Match the settings revision, 0 when unset)",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "session"
      ],
      "scopes": [
        "organizations:write"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "organizations:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "organization"
      }
    },
    {
      "operation_id": "post_organizations_id_transfer_ownership",
      "method": "POST",
      "path": "/organizations/{id}/transfer_ownership",
      "summary": "Transfer ownership to another member; the caller becomes admin",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "organizations:write"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "organizations:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "organization"
      }
    },
    {
      "operation_id": "get_organization_usage",
      "method": "GET",
      "path": "/organizations/{id}/usage",
      "summary": "Usage for a period: production meters, legacy counters, accrued estimate and forecast",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session"
      ],
      "scopes": [
        "usage:read"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "usage:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_organization_allowance_alerts",
      "method": "GET",
      "path": "/organizations/{id}/usage/alerts",
      "summary": "Free allowance alerts (80 % and 100 % of the included actions, grace started and ended), newest first",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session"
      ],
      "scopes": [
        "usage:read"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "usage:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_organization_usage_statements",
      "method": "GET",
      "path": "/organizations/{id}/usage/statements",
      "summary": "Closed usage statements with their adjustments, newest first",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session"
      ],
      "scopes": [
        "usage:read"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "usage:read"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_pending_action_approval",
      "method": "POST",
      "path": "/pending_action_approvals",
      "summary": "Approve a pending action and run its exact request once (signed-in dashboard owner or admin only)",
      "exposure": "none",
      "proposal": false,
      "retry": "keyed_resume",
      "credentials": [
        "session"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "dashboard_confirmation",
          "detail": "A person approves a pending action in the dashboard; an agent can only request one."
        }
      }
    },
    {
      "operation_id": "create_pending_action_decline",
      "method": "POST",
      "path": "/pending_action_declines",
      "summary": "Decline a pending action; it never runs (signed-in dashboard owner or admin only)",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "session"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "dashboard_confirmation",
          "detail": "A person declines a pending action in the dashboard."
        }
      }
    },
    {
      "operation_id": "list_pending_actions",
      "method": "GET",
      "path": "/pending_actions",
      "summary": "List the requests waiting for, or decided by, a person (newest first)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        }
      ],
      "tool": "list_pending_actions",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_pending_action",
      "method": "POST",
      "path": "/pending_actions",
      "summary": "Ask a person to approve one exact request that the production gate held: it runs, exactly as recorded, when an owner or admin approves it in the dashboard",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": []
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "request"
      }
    },
    {
      "operation_id": "get_pending_action",
      "method": "GET",
      "path": "/pending_actions/{id}",
      "summary": "Read one pending action: the exact request, its status and, once it ran, its answer",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        }
      ],
      "tool": "get_pending_action",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_playbook_installations",
      "method": "GET",
      "path": "/playbook_installations",
      "summary": "List playbook installations with the drift of every owned resource",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        }
      ],
      "tool": "list_playbook_installations",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_playbook_installation",
      "method": "GET",
      "path": "/playbook_installations/{id}",
      "summary": "Read a playbook installation with its owned resources and their drift",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        }
      ],
      "tool": "get_playbook_installation",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_playbook_preview",
      "method": "POST",
      "path": "/playbook_previews",
      "summary": "Preview a playbook install: compile it into a change set (source playbook) for dashboard confirmation, or a structured refusal",
      "exposure": "propose",
      "proposal": true,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        }
      ],
      "tool": "create_playbook_preview",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_playbook_uninstall_preview",
      "method": "POST",
      "path": "/playbook_uninstall_previews",
      "summary": "Preview a playbook uninstall: archive, revoke, disable or stop what it owns and release ownership; balances and history stay",
      "exposure": "propose",
      "proposal": true,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        }
      ],
      "tool": "create_playbook_uninstall_preview",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_playbook_upgrade_preview",
      "method": "POST",
      "path": "/playbook_upgrade_previews",
      "summary": "Preview a three-way playbook upgrade: a change set (source upgrade), or the conflicts that need resolutions",
      "exposure": "propose",
      "proposal": true,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:write"
          ]
        }
      ],
      "tool": "create_playbook_upgrade_preview",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_playbooks",
      "method": "GET",
      "path": "/playbooks",
      "summary": "List the first-party playbooks with their versions and requirements",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        }
      ],
      "tool": "list_playbooks",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_playbook",
      "method": "GET",
      "path": "/playbooks/{id}",
      "summary": "Read one playbook manifest (the latest version, or ?version=)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session"
      ],
      "scopes": [
        "config:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "config:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "config:read"
          ]
        }
      ],
      "tool": "get_playbook",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_points_transfer",
      "method": "GET",
      "path": "/points_transfers/{id}",
      "summary": "One points transfer",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_points_transfer",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_poison_events",
      "method": "GET",
      "path": "/poison_events",
      "summary": "Events parked after repeated evaluator failures",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "events:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "events:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "events:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_poison_events",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_poison_events_id_discard",
      "method": "POST",
      "path": "/poison_events/{id}/discard",
      "summary": "Give up on a parked event (audited); it stays failed and never re-runs",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "events:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "events:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "events:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_portal_configurations",
      "method": "GET",
      "path": "/portal_configurations",
      "summary": "List the portal configurations of the environment",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "portal_configurations:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "portal_configurations:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "portal_configurations:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_portal_configurations",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_portal_configuration",
      "method": "POST",
      "path": "/portal_configurations",
      "summary": "Create a portal configuration (at most 10 per environment)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "portal_configurations:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "portal_configurations:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "portal_configurations:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "setup"
      }
    },
    {
      "operation_id": "get_portal_configuration",
      "method": "GET",
      "path": "/portal_configurations/{id}",
      "summary": "Read a portal configuration with its draft, active version and readiness",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "portal_configurations:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "portal_configurations:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "portal_configurations:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_portal_configuration",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "update_portal_configuration",
      "method": "PATCH",
      "path": "/portal_configurations/{id}",
      "summary": "Save the name or the draft (If-Match: the revision)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "portal_configurations:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "portal_configurations:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "portal_configurations:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "setup"
      }
    },
    {
      "operation_id": "activate_portal_configuration_version",
      "method": "POST",
      "path": "/portal_configurations/{id}/activations",
      "summary": "Make an existing version active (rollback or roll forward)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "portal_configurations:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "portal_configurations:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "portal_configurations:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "setup"
      }
    },
    {
      "operation_id": "disable_portal_configuration",
      "method": "POST",
      "path": "/portal_configurations/{id}/disable",
      "summary": "Disable a portal: new loads and every embed token end",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "portal_configurations:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "portal_configurations:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "portal_configurations:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "enable_portal_configuration",
      "method": "POST",
      "path": "/portal_configurations/{id}/enable",
      "summary": "Enable a disabled portal (earlier embed tokens stay refused)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "portal_configurations:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "portal_configurations:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "portal_configurations:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "setup"
      }
    },
    {
      "operation_id": "list_portal_configuration_versions",
      "method": "GET",
      "path": "/portal_configurations/{id}/versions",
      "summary": "List the immutable versions of a portal configuration, newest first",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "portal_configurations:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "portal_configurations:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "portal_configurations:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_portal_configuration_versions",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "publish_portal_configuration",
      "method": "POST",
      "path": "/portal_configurations/{id}/versions",
      "summary": "Publish the draft as the next immutable version and make it active",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "portal_configurations:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "portal_configurations:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "portal_configurations:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "setup"
      }
    },
    {
      "operation_id": "get_principal",
      "method": "GET",
      "path": "/principal",
      "summary": "The calling credential and the scopes it holds in its environment now",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": []
        },
        {
          "credentials": [
            "pat",
            "session",
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": "get_principal",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "activate_program",
      "method": "POST",
      "path": "/program_activations",
      "summary": "Activate or pause a published program",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:publish",
        "rules:publish_sandbox",
        "rules:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:publish",
            "rules:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:publish_sandbox",
            "rules:write"
          ],
          "runtime_class": "sandbox"
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:publish",
            "rules:write"
          ],
          "runtime_class": "production"
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "archive_program",
      "method": "POST",
      "path": "/program_archivals",
      "summary": "Archive a program and retain its history",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "create_program_correction",
      "method": "POST",
      "path": "/program_corrections",
      "summary": "Correct a permanent program contribution",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "get_program_correction",
      "method": "GET",
      "path": "/program_corrections/{id}",
      "summary": "Read a permanent correction command result",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_program_correction",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_program_enrollment",
      "method": "POST",
      "path": "/program_enrollments",
      "summary": "Enroll a customer with a permanent command identity",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "get_program_enrollment",
      "method": "GET",
      "path": "/program_enrollments/{id}",
      "summary": "Read a permanent enrollment command result",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_program_enrollment",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_participation_contributions",
      "method": "GET",
      "path": "/program_participations/{id}/contributions",
      "summary": "List a participation's contributions",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_participation_contributions",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_program_correction_alias",
      "method": "POST",
      "path": "/program_participations/{id}/corrections",
      "summary": "Correct a contribution through its participation",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "create_program_succession_alias",
      "method": "POST",
      "path": "/program_participations/{id}/successions",
      "summary": "Create a successor through its participation",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "create_program_succession",
      "method": "POST",
      "path": "/program_successions",
      "summary": "Create an explicit participation successor",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "get_program_succession",
      "method": "GET",
      "path": "/program_successions/{id}",
      "summary": "Read a permanent succession command result",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_program_succession",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_programs",
      "method": "GET",
      "path": "/programs",
      "summary": "List programs",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_programs",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_program",
      "method": "POST",
      "path": "/programs",
      "summary": "Create a program draft",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_program",
      "method": "GET",
      "path": "/programs/{id}",
      "summary": "Read a program",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_program",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "delete_program",
      "method": "DELETE",
      "path": "/programs/{id}",
      "summary": "Programs retain permanent history; use archive",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "create_program_enrollment_alias",
      "method": "POST",
      "path": "/programs/{id}/enrollments",
      "summary": "Enroll a customer through the program alias",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "list_program_versions",
      "method": "GET",
      "path": "/programs/{id}/versions",
      "summary": "List immutable program versions",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_program_versions",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "publish_program_version",
      "method": "POST",
      "path": "/programs/{id}/versions",
      "summary": "Publish and activate an immutable program version",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:publish",
        "rules:publish_sandbox",
        "rules:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:publish",
            "rules:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:publish_sandbox",
            "rules:write"
          ],
          "runtime_class": "sandbox"
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:publish",
            "rules:write"
          ],
          "runtime_class": "production"
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_program_version",
      "method": "GET",
      "path": "/programs/{id}/versions/{version_id}",
      "summary": "Read an immutable program version",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_program_version",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_project_claim_preview",
      "method": "POST",
      "path": "/project_claim_previews",
      "summary": "What a claim link claims, for the claim page (public)",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [],
      "scopes": [],
      "authorization": [],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "auth_handshake",
          "detail": "The person claiming an agent project previews it from the claim link (ADR 0060 5)."
        }
      }
    },
    {
      "operation_id": "create_project_claim",
      "method": "POST",
      "path": "/project_claims",
      "summary": "Claim a project an agent created: the signed-in person with a verified email becomes its owner",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "session"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "session"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "auth_handshake",
          "detail": "Claiming a project is a signed-in person taking ownership (ADR 0060 5); an agent rotates the claim code with create_agent_claim_code instead."
        }
      }
    },
    {
      "operation_id": "get_projects",
      "method": "GET",
      "path": "/projects",
      "summary": "Projects of an organization",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "projects:read"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "projects:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": "get_projects",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_projects",
      "method": "POST",
      "path": "/projects",
      "summary": "Create a project with a test environment and a live environment",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "projects:write"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "projects:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "organization"
      }
    },
    {
      "operation_id": "get_projects_id",
      "method": "GET",
      "path": "/projects/{id}",
      "summary": "One project",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "projects:read"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "projects:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": "get_projects_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_projects_id",
      "method": "PATCH",
      "path": "/projects/{id}",
      "summary": "Rename a project",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "projects:read",
        "projects:write"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "projects:read",
            "projects:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "organization"
      }
    },
    {
      "operation_id": "get_projects_id_environments",
      "method": "GET",
      "path": "/projects/{id}/environments",
      "summary": "Environments of a project",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "projects:read"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "projects:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": "get_projects_id_environments",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "createEnvironment",
      "method": "POST",
      "path": "/projects/{id}/environments",
      "summary": "Add a test or live environment to a project",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [
        "environments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": [
            "environments:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "organization"
      }
    },
    {
      "operation_id": "create_public_estimate",
      "method": "POST",
      "path": "/public/estimates",
      "summary": "Estimate a bill with the pricing calculator over the current public offer",
      "exposure": "none",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [],
      "scopes": [],
      "authorization": [],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true,
        "gate_class": "read_like"
      }
    },
    {
      "operation_id": "get_current_public_offer",
      "method": "GET",
      "path": "/public/offers/current",
      "summary": "The current public offer: published public terms only, cacheable by anyone",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [],
      "scopes": [],
      "authorization": [],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_public_portal",
      "method": "GET",
      "path": "/public/portals/{portal_id}",
      "summary": "The render configuration of a portal's active version, for the portal server",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [],
      "scopes": [],
      "authorization": [],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_public_asset",
      "method": "GET",
      "path": "/public_assets/{id}/{digest}",
      "summary": "Read immutable normalized image bytes",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [],
      "scopes": [],
      "authorization": [],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "non_json_transport",
          "detail": "Public image bytes; the asset reads (get_assets_id) describe them."
        }
      }
    },
    {
      "operation_id": "list_quests",
      "method": "GET",
      "path": "/quests",
      "summary": "List quest programs",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_quests",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_quest",
      "method": "GET",
      "path": "/quests/{id}",
      "summary": "Read a quest program",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_quest",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_quest_claim",
      "method": "POST",
      "path": "/quests/{id}/claims",
      "summary": "Claim a qualified quest completion",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "create_quest_contribution",
      "method": "POST",
      "path": "/quests/{id}/contributions",
      "summary": "Contribute to a quest step",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "create_quest_correction",
      "method": "POST",
      "path": "/quests/{id}/corrections",
      "summary": "Correct a retained quest contribution",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "create_quest_enrollment",
      "method": "POST",
      "path": "/quests/{id}/enrollments",
      "summary": "Enroll in a quest",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "list_quest_participations",
      "method": "GET",
      "path": "/quests/{id}/participations",
      "summary": "List retained quest participations",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_quest_participations",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_quest_participation",
      "method": "GET",
      "path": "/quests/{id}/participations/{participation_id}",
      "summary": "Read a retained quest participation",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_quest_participation",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_quest_run",
      "method": "POST",
      "path": "/quests/{id}/runs",
      "summary": "Start a new quest run",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "create_referral_code",
      "method": "POST",
      "path": "/referral_codes",
      "summary": "Create a referral share code",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "revoke_referral_code",
      "method": "POST",
      "path": "/referral_codes/{id}/revocations",
      "summary": "Revoke future claims of a referral code",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "correct_referral_settlement",
      "method": "POST",
      "path": "/referral_settlements/{id}/corrections",
      "summary": "Correct the qualifying value of a referral settlement",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "referrals:review"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "referrals:review"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "referrals:review"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "review_referral_settlement",
      "method": "POST",
      "path": "/referral_settlements/{id}/reviews",
      "summary": "Review a referral settlement",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "referrals:review"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "referrals:review"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "referrals:review"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_referrals",
      "method": "GET",
      "path": "/referrals",
      "summary": "List referral programs",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_referrals",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_referral",
      "method": "GET",
      "path": "/referrals/{id}",
      "summary": "Read a referral program. ETag is the program version.",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_referral",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_referral_codes",
      "method": "GET",
      "path": "/referrals/{id}/codes",
      "summary": "List the share codes of a referral program",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_referral_codes",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_referral_settlements",
      "method": "GET",
      "path": "/referrals/{id}/settlements",
      "summary": "List the settlements of a referral program with their status and review state. Risk decisions and correction details are never returned.",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_referral_settlements",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_referral_settlement",
      "method": "GET",
      "path": "/referrals/{id}/settlements/{settlement_id}",
      "summary": "Read a referral settlement with its status and review state",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_referral_settlement",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "commerce_list_reward_catalogues",
      "method": "GET",
      "path": "/reward_catalogues",
      "summary": "List reward catalogues",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "commerce_list_reward_catalogues",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "commerce_catalogue",
      "method": "POST",
      "path": "/reward_catalogues",
      "summary": "Create a commerce catalogue",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "commerce_read_reward_catalogues",
      "method": "GET",
      "path": "/reward_catalogues/{id}",
      "summary": "Read reward catalogues",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "commerce_read_reward_catalogues",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "commerce_offer",
      "method": "POST",
      "path": "/reward_catalogues/{id}/offer_versions",
      "summary": "Create a commerce offer",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "commerce_catalogue_revision",
      "method": "POST",
      "path": "/reward_catalogues/{id}/revisions",
      "summary": "Create a commerce catalogue_revision",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "commerce_list_reward_code_pools",
      "method": "GET",
      "path": "/reward_code_pools",
      "summary": "List reward code pools",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "commerce_list_reward_code_pools",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "commerce_pool",
      "method": "POST",
      "path": "/reward_code_pools",
      "summary": "Create a commerce pool",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "commerce_read_reward_code_pools",
      "method": "GET",
      "path": "/reward_code_pools/{id}",
      "summary": "Read reward code pools",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "commerce_read_reward_code_pools",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "commerce_import",
      "method": "POST",
      "path": "/reward_code_pools/{id}/imports",
      "summary": "Create a commerce import",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "commerce_list_reward_inventory",
      "method": "GET",
      "path": "/reward_inventory",
      "summary": "List reward inventory",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "commerce_list_reward_inventory",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "commerce_inventory",
      "method": "POST",
      "path": "/reward_inventory",
      "summary": "Create a commerce inventory",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "commerce_read_reward_inventory",
      "method": "GET",
      "path": "/reward_inventory/{id}",
      "summary": "Read reward inventory",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "commerce_read_reward_inventory",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "commerce_supply",
      "method": "POST",
      "path": "/reward_inventory/{id}/movements",
      "summary": "Create a commerce supply",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_reward_issuances",
      "method": "GET",
      "path": "/reward_issuances",
      "summary": "List issuances",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_reward_issuances",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_reward_issuances",
      "method": "POST",
      "path": "/reward_issuances",
      "summary": "Issue a reward to a customer manually (counts against availability)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "get_reward_issuances_id",
      "method": "GET",
      "path": "/reward_issuances/{id}",
      "summary": "One issuance",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_reward_issuances_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_reward_issuances_id_cancel",
      "method": "POST",
      "path": "/reward_issuances/{id}/cancel",
      "summary": "Cancel: refunds a spent cost by reversal and releases availability",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "post_reward_issuances_id_redeem",
      "method": "POST",
      "path": "/reward_issuances/{id}/redeem",
      "summary": "Redeem: issued → redeemed, spending the reward cost in the same transaction",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "commerce_list_reward_offer_versions",
      "method": "GET",
      "path": "/reward_offer_versions",
      "summary": "List reward offer versions",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "commerce_list_reward_offer_versions",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "commerce_read_reward_offer_versions",
      "method": "GET",
      "path": "/reward_offer_versions/{id}",
      "summary": "Read reward offer versions",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "commerce_read_reward_offer_versions",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "commerce_offer_revocation",
      "method": "POST",
      "path": "/reward_offer_versions/{id}/revocations",
      "summary": "Create a commerce offer_revocation",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_reward_suppliers",
      "method": "GET",
      "path": "/reward_suppliers",
      "summary": "List reward suppliers (newest first)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_reward_suppliers",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_reward_supplier",
      "method": "POST",
      "path": "/reward_suppliers",
      "summary": "Register a reward supplier: a gift-card supplier or a brand partner (credentials are stored encrypted, never returned)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_reward_supplier",
      "method": "GET",
      "path": "/reward_suppliers/{id}",
      "summary": "One reward supplier",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_reward_supplier",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "update_reward_supplier",
      "method": "PATCH",
      "path": "/reward_suppliers/{id}",
      "summary": "Change a supplier: name, status, config, or replace (null erases) its credentials",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "delete_reward_supplier",
      "method": "DELETE",
      "path": "/reward_suppliers/{id}",
      "summary": "Disable a supplier and erase its stored credentials (its orders and links remain)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_supplier_catalogue_items",
      "method": "GET",
      "path": "/reward_suppliers/{id}/catalogue_items",
      "summary": "List a supplier's catalogue items (newest first)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_supplier_catalogue_items",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_supplier_catalogue_item",
      "method": "POST",
      "path": "/reward_suppliers/{id}/catalogue_items",
      "summary": "Add an item to a supplier's catalogue: SKU, brand, face value and cost",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "update_supplier_catalogue_item",
      "method": "PATCH",
      "path": "/reward_suppliers/{id}/catalogue_items/{item_id}",
      "summary": "Change a catalogue item: brand, title, face value, cost or status (orders keep the values they were placed with)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "delete_supplier_catalogue_item",
      "method": "DELETE",
      "path": "/reward_suppliers/{id}/catalogue_items/{item_id}",
      "summary": "Disable a catalogue item (no new orders; existing orders remain)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_reward_supplier_links",
      "method": "GET",
      "path": "/reward_suppliers/{id}/links",
      "summary": "List a supplier's links, open and closed (newest first)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_reward_supplier_links",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_reward_supplier_link",
      "method": "POST",
      "path": "/reward_suppliers/{id}/links",
      "summary": "Supply an offer version or a reward through a catalogue item, with the share the partner funds (replaces the open link from now on)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "list_supplier_orders",
      "method": "GET",
      "path": "/reward_suppliers/{id}/orders",
      "summary": "List the orders placed with a supplier for redemptions (newest first)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_supplier_orders",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "reconcile_supplier_order",
      "method": "POST",
      "path": "/reward_suppliers/{id}/orders/{order_id}/reconcile",
      "summary": "Settle a pending supplier order: ask the supplier (or record the outcome a manual partner reports) and finish the redemption waiting on it",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_supplier_orders_needing_attention",
      "method": "GET",
      "path": "/reward_suppliers/{id}/reconciliation",
      "summary": "Orders that need an operator decision: delivered after the redemption was cancelled, cancelled but possibly held by the supplier, or with an unknown outcome",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_supplier_orders_needing_attention",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_supplier_settlement",
      "method": "GET",
      "path": "/reward_suppliers/{id}/settlement",
      "summary": "Settlement for a supplier and period: orders, face value, cost, partner and merchant funded amounts per item and in total; format=csv adds CSV text",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rewards:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rewards:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_supplier_settlement",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_rewards",
      "method": "GET",
      "path": "/rewards",
      "summary": "List rewards with issued counts",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_rewards",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_rewards",
      "method": "POST",
      "path": "/rewards",
      "summary": "Create a reward",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_rewards_id",
      "method": "GET",
      "path": "/rewards/{id}",
      "summary": "One reward",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_rewards_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_rewards_id",
      "method": "PATCH",
      "path": "/rewards/{id}",
      "summary": "Edit or archive a reward (availability cannot drop below issued)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "delete_rewards_id",
      "method": "DELETE",
      "path": "/rewards/{id}",
      "summary": "Delete a never-issued, unreferenced reward",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "get_rules",
      "method": "GET",
      "path": "/rules",
      "summary": "List rules",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_rules",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_rules",
      "method": "POST",
      "path": "/rules",
      "summary": "Create a draft rule (validated, not yet published)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "configuration"
      }
    },
    {
      "operation_id": "get_rules_id",
      "method": "GET",
      "path": "/rules/{id}",
      "summary": "One rule with its active version and draft",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_rules_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_rules_id",
      "method": "PATCH",
      "path": "/rules/{id}",
      "summary": "Edit the draft, name, priority or campaign",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "post_rules_id_archive",
      "method": "POST",
      "path": "/rules/{id}/archive",
      "summary": "Archive a rule (history stays readable)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "post_rules_id_pause",
      "method": "POST",
      "path": "/rules/{id}/pause",
      "summary": "Pause a published rule",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "post_rules_id_publish",
      "method": "POST",
      "path": "/rules/{id}/publish",
      "summary": "Publish the draft as a new immutable version",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:publish",
        "rules:publish_sandbox",
        "rules:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:publish_sandbox"
          ],
          "runtime_class": "sandbox"
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:publish_sandbox",
            "rules:read"
          ],
          "runtime_class": "sandbox"
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": [],
          "runtime_class": "sandbox"
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:publish"
          ],
          "runtime_class": "production"
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:publish",
            "rules:read"
          ],
          "runtime_class": "production"
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": [],
          "runtime_class": "production"
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "post_rules_id_resume",
      "method": "POST",
      "path": "/rules/{id}/resume",
      "summary": "Resume a paused rule",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "post_rules_id_rollback",
      "method": "POST",
      "path": "/rules/{id}/rollback",
      "summary": "Publish an older version's definition as a new version",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:publish",
        "rules:publish_sandbox",
        "rules:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:publish_sandbox"
          ],
          "runtime_class": "sandbox"
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:publish_sandbox",
            "rules:read"
          ],
          "runtime_class": "sandbox"
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": [],
          "runtime_class": "sandbox"
        },
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:publish"
          ],
          "runtime_class": "production"
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:publish",
            "rules:read"
          ],
          "runtime_class": "production"
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": [],
          "runtime_class": "production"
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "post_rules_id_simulate",
      "method": "POST",
      "path": "/rules/{id}/simulate",
      "summary": "Preview a rule using a synthetic input or an authenticated commerce event",
      "exposure": "read",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "post_rules_id_simulate",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_rules_id_versions",
      "method": "GET",
      "path": "/rules/{id}/versions",
      "summary": "Immutable versions, newest first",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "rules:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "rules:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_rules_id_versions",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_seasons",
      "method": "GET",
      "path": "/seasons",
      "summary": "List seasons",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_seasons",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_season",
      "method": "POST",
      "path": "/seasons",
      "summary": "Create a season",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_season",
      "method": "GET",
      "path": "/seasons/{id}",
      "summary": "Read a season",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_season",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_season_occurrences",
      "method": "GET",
      "path": "/seasons/{id}/occurrences",
      "summary": "List season occurrences",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_season_occurrences",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "materialize_season_occurrence",
      "method": "POST",
      "path": "/seasons/{id}/occurrences",
      "summary": "Materialize a pinned season occurrence",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "get_season_occurrence",
      "method": "GET",
      "path": "/seasons/{id}/occurrences/{occurrence_id}",
      "summary": "Read a season occurrence",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_season_occurrence",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_season_versions",
      "method": "GET",
      "path": "/seasons/{id}/versions",
      "summary": "List immutable season versions",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_season_versions",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "publish_season_version",
      "method": "POST",
      "path": "/seasons/{id}/versions",
      "summary": "Publish an immutable season version",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_season_version",
      "method": "GET",
      "path": "/seasons/{id}/versions/{version_id}",
      "summary": "Read an immutable season version",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_season_version",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_segments",
      "method": "GET",
      "path": "/segments",
      "summary": "List segments",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "segments:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "segments:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "segments:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_segments",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_segments",
      "method": "POST",
      "path": "/segments",
      "summary": "Create a static or dynamic segment (attributes, balances, tiers, account age, event activity)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "segments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_segments_id",
      "method": "GET",
      "path": "/segments/{id}",
      "summary": "One segment by id or name",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "segments:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "segments:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "segments:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_segments_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_segments_id",
      "method": "PATCH",
      "path": "/segments/{id}",
      "summary": "Rename (when unreferenced) or change a dynamic definition",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "segments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "delete_segments_id",
      "method": "DELETE",
      "path": "/segments/{id}",
      "summary": "Delete an unreferenced segment",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "segments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "get_segments_id_eligibility_customer_id",
      "method": "GET",
      "path": "/segments/{id}/eligibility/{customer_id}",
      "summary": "Is this customer in the segment right now (dynamic ones are evaluated for this customer)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "segments:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "segments:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "segments:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_segments_id_eligibility_customer_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_segments_id_members",
      "method": "GET",
      "path": "/segments/{id}/members",
      "summary": "Members: static ones, or the materialised members of a dynamic segment",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "segments:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "segments:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "segments:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_segments_id_members",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_segments_id_members",
      "method": "POST",
      "path": "/segments/{id}/members",
      "summary": "Add static members (idempotent, up to 500 per call)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "segments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "delete_segments_id_members_customer_id",
      "method": "DELETE",
      "path": "/segments/{id}/members/{customer_id}",
      "summary": "Remove a static member",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "segments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "refresh_segment",
      "method": "POST",
      "path": "/segments/{id}/refresh",
      "summary": "Recompute the members of a dynamic segment now",
      "exposure": "mutation",
      "proposal": false,
      "retry": "keyed_resume",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "segments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "segments:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "list_shop_offers",
      "method": "GET",
      "path": "/shop_offers",
      "summary": "List shop offers",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_shop_offers",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_shop_offer",
      "method": "GET",
      "path": "/shop_offers/{id}",
      "summary": "Read a shop offer by id or key",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_shop_offer",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_store_credit_applications",
      "method": "GET",
      "path": "/store_credit/applications",
      "summary": "List store credit applications (newest first)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_store_credit_applications",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "apply_store_credit",
      "method": "POST",
      "path": "/store_credit/applications",
      "summary": "Apply store credit to an order (debits the wallet now)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "get_store_credit_application",
      "method": "GET",
      "path": "/store_credit/applications/{id}",
      "summary": "One store credit application",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_store_credit_application",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "capture_store_credit",
      "method": "POST",
      "path": "/store_credit/applications/{id}/capture",
      "summary": "The order was paid: settle the applied credit, returning any part the order did not use",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "refund_store_credit",
      "method": "POST",
      "path": "/store_credit/applications/{id}/refunds",
      "summary": "Refund captured store credit, once per refund reference",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "void_store_credit",
      "method": "POST",
      "path": "/store_credit/applications/{id}/void",
      "summary": "The order was abandoned before payment: return all applied credit",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "get_store_credit_reconciliation",
      "method": "GET",
      "path": "/store_credit/reconciliation",
      "summary": "Issued, held, captured, returned, refunded and outstanding credit per wallet",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_store_credit_reconciliation",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "release_stale_store_credit",
      "method": "POST",
      "path": "/store_credit/release_stale",
      "summary": "Void holds older than their wallet hold period and return the credit",
      "exposure": "mutation",
      "proposal": false,
      "retry": "keyed_resume",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "ledger:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "ledger:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "list_store_credit_wallets",
      "method": "GET",
      "path": "/store_credit/wallets",
      "summary": "List store credit wallets (money valued currencies)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "currencies:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "currencies:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "currencies:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_store_credit_wallets",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "put_store_credit_wallet",
      "method": "POST",
      "path": "/store_credit/wallets",
      "summary": "Make a currency a store credit wallet with an ISO currency and minor unit",
      "exposure": "mutation",
      "proposal": false,
      "retry": "keyed_resume",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "currencies:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "currencies:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "currencies:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "list_streaks",
      "method": "GET",
      "path": "/streaks",
      "summary": "List streak programs",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_streaks",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_streak",
      "method": "GET",
      "path": "/streaks/{id}",
      "summary": "Read a streak program",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_streak",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_streak_correction",
      "method": "POST",
      "path": "/streaks/{id}/corrections",
      "summary": "Correct a retained streak contribution",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "create_streak_freeze_cancellation",
      "method": "POST",
      "path": "/streaks/{id}/freeze_cancellations",
      "summary": "Cancel unconsumed purchased streak freezes",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "create_streak_freeze_grant",
      "method": "POST",
      "path": "/streaks/{id}/freeze_grants",
      "summary": "Grant freezes to a streak",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "create_streak_freeze_return",
      "method": "POST",
      "path": "/streaks/{id}/freeze_returns",
      "summary": "Return a consumed streak freeze",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "list_streak_participations",
      "method": "GET",
      "path": "/streaks/{id}/participations",
      "summary": "List retained streak participations",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_streak_participations",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_streak_participation",
      "method": "GET",
      "path": "/streaks/{id}/participations/{participation_id}",
      "summary": "Read a retained streak participation",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_streak_participation",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_streak_freezes",
      "method": "GET",
      "path": "/streaks/{id}/participations/{participation_id}/freezes",
      "summary": "List the freeze entries of a streak participation",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_streak_freezes",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_streak_repair",
      "method": "POST",
      "path": "/streaks/{id}/repairs",
      "summary": "Repair a broken streak for a customer",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "get_support_organizations",
      "method": "GET",
      "path": "/support/organizations",
      "summary": "Find organizations by name, slug, id or member email (staff)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "staff"
      ],
      "scopes": [
        "staff:*"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": [
            "staff:*"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "no_operator_credential",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "staff_only",
          "detail": "Staff support search across every organization."
        }
      }
    },
    {
      "operation_id": "get_support_organizations_id",
      "method": "GET",
      "path": "/support/organizations/{id}",
      "summary": "Organization overview with projects and environments (staff)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "staff"
      ],
      "scopes": [
        "staff:*"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": [
            "staff:*"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "no_operator_credential",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "staff_only",
          "detail": "Staff support view of one organization."
        }
      }
    },
    {
      "operation_id": "create_pricing_draft",
      "method": "POST",
      "path": "/support/pricing/drafts",
      "summary": "Create a draft plan version, optionally cloned from a version (staff; changes no price)",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "staff"
      ],
      "scopes": [
        "staff:*"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": [
            "staff:*"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "staff_only",
          "detail": "Staff pricing administration (console only, IAP staff token)."
        }
      }
    },
    {
      "operation_id": "update_pricing_draft",
      "method": "PATCH",
      "path": "/support/pricing/drafts/{plan_id}/{version}",
      "summary": "Edit a draft plan version under its revision (staff; If-Match)",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "staff"
      ],
      "scopes": [
        "staff:*"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": [
            "staff:*"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "staff_only",
          "detail": "Staff pricing administration (console only, IAP staff token)."
        }
      }
    },
    {
      "operation_id": "list_pricing_groups",
      "method": "GET",
      "path": "/support/pricing/groups",
      "summary": "Pricing groups with their defaults and member counts (staff, entitlement pricing)",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "staff"
      ],
      "scopes": [
        "staff:*"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": [
            "staff:*"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "staff_only",
          "detail": "Staff pricing administration (console only, IAP staff token)."
        }
      }
    },
    {
      "operation_id": "create_pricing_group",
      "method": "POST",
      "path": "/support/pricing/groups",
      "summary": "Create a pricing group (staff; a label, never a price change)",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "staff"
      ],
      "scopes": [
        "staff:*"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": [
            "staff:*"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "staff_only",
          "detail": "Staff pricing administration (console only, IAP staff token)."
        }
      }
    },
    {
      "operation_id": "update_pricing_group",
      "method": "PATCH",
      "path": "/support/pricing/groups/{id}",
      "summary": "Edit a pricing group’s label, notes or enrollment (staff; If-Match; no assignment moves)",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "staff"
      ],
      "scopes": [
        "staff:*"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": [
            "staff:*"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "staff_only",
          "detail": "Staff pricing administration (console only, IAP staff token)."
        }
      }
    },
    {
      "operation_id": "list_pricing_organizations",
      "method": "GET",
      "path": "/support/pricing/organizations",
      "summary": "Organizations with the assignment in force; search by id or name prefix, filter by group or plan version (staff)",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "staff"
      ],
      "scopes": [
        "staff:*"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": [
            "staff:*"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "staff_only",
          "detail": "Staff pricing administration (console only, IAP staff token)."
        }
      }
    },
    {
      "operation_id": "get_pricing_organization",
      "method": "GET",
      "path": "/support/pricing/organizations/{id}",
      "summary": "One organization’s agreement, history, next change, spend settings, current usage and statements (staff)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "staff"
      ],
      "scopes": [
        "staff:*"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": [
            "staff:*"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "no_operator_credential",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "staff_only",
          "detail": "Staff pricing administration (console only, IAP staff token)."
        }
      }
    },
    {
      "operation_id": "create_pricing_proposal_commit",
      "method": "POST",
      "path": "/support/pricing/proposal_commits",
      "summary": "Commit a reviewed pricing proposal (staff token from the console, with the entitlement)",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "staff"
      ],
      "scopes": [
        "staff:*"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": [
            "staff:*"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "staff_only",
          "detail": "Staff pricing administration (console only, IAP staff token)."
        }
      }
    },
    {
      "operation_id": "list_pricing_proposals",
      "method": "GET",
      "path": "/support/pricing/proposals",
      "summary": "Pricing proposals newest first, optionally of one status (staff)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "staff"
      ],
      "scopes": [
        "staff:*"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": [
            "staff:*"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "no_operator_credential",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "staff_only",
          "detail": "Staff pricing administration (console only, IAP staff token)."
        }
      }
    },
    {
      "operation_id": "create_pricing_proposal",
      "method": "POST",
      "path": "/support/pricing/proposals",
      "summary": "Propose pricing commands: plan them with before/after and sample bills, apply nothing",
      "exposure": "none",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "staff"
      ],
      "scopes": [
        "staff:*"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": [
            "staff:*"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "staff_only",
          "detail": "Staff pricing administration (console only, IAP staff token)."
        }
      }
    },
    {
      "operation_id": "get_pricing_proposal",
      "method": "GET",
      "path": "/support/pricing/proposals/{id}",
      "summary": "A pricing proposal with its plan, frozen items and commit evidence (staff)",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "staff"
      ],
      "scopes": [
        "staff:*"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": [
            "staff:*"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "staff_only",
          "detail": "Staff pricing administration (console only, IAP staff token)."
        }
      }
    },
    {
      "operation_id": "cancel_pricing_proposal",
      "method": "POST",
      "path": "/support/pricing/proposals/{id}/cancellations",
      "summary": "Cancel a pending pricing proposal so it can never be committed (staff; idempotent; not a scheduled assignment)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "staff"
      ],
      "scopes": [
        "staff:*"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": [
            "staff:*"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "staff_only",
          "detail": "Staff pricing administration (console only, IAP staff token)."
        }
      }
    },
    {
      "operation_id": "list_pricing_versions",
      "method": "GET",
      "path": "/support/pricing/versions",
      "summary": "Every plan version with its terms, public and private, draft and published (staff)",
      "exposure": "none",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "staff"
      ],
      "scopes": [
        "staff:*"
      ],
      "authorization": [
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": [
            "staff:*"
          ]
        }
      ],
      "tool": null,
      "no_tool_reason": "not_exposed",
      "call_action": {
        "reachable": false,
        "held_back": {
          "reason": "staff_only",
          "detail": "Staff pricing administration (console only, IAP staff token)."
        }
      }
    },
    {
      "operation_id": "list_team_quest_definitions",
      "method": "GET",
      "path": "/team_quest_definitions",
      "summary": "List team quest definitions, newest first",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_team_quest_definitions",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_team_quest_definition",
      "method": "POST",
      "path": "/team_quest_definitions",
      "summary": "Create a draft team quest: period, target, reward per member, minimum contribution",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_team_quest_definition",
      "method": "GET",
      "path": "/team_quest_definitions/{id}",
      "summary": "Read one team quest definition by id or key",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_team_quest_definition",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "update_team_quest_definition",
      "method": "PATCH",
      "path": "/team_quest_definitions/{id}",
      "summary": "Change the name or the configuration (If-Match); quests already started keep their configuration",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "activate_team_quest_definition",
      "method": "POST",
      "path": "/team_quest_definitions/{id}/activate",
      "summary": "Start a draft team quest: contributions count from now",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "archive_team_quest_definition",
      "method": "POST",
      "path": "/team_quest_definitions/{id}/archive",
      "summary": "Archive a team quest for good",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "get_team_quest_board",
      "method": "GET",
      "path": "/team_quest_definitions/{id}/board",
      "summary": "Rank the teams of a period by progress (ties: earlier completion); the current period by default",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_team_quest_board",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "create_team_quest_contribution",
      "method": "POST",
      "path": "/team_quest_definitions/{id}/contributions",
      "summary": "Add to (or correct) the progress of the customer's team in the current period of a team quest",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "pause_team_quest_definition",
      "method": "POST",
      "path": "/team_quest_definitions/{id}/pause",
      "summary": "Pause a team quest: no new contributions; owed rewards are still granted",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "resume_team_quest_definition",
      "method": "POST",
      "path": "/team_quest_definitions/{id}/resume",
      "summary": "Resume a paused team quest",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_team_quest_contributions",
      "method": "GET",
      "path": "/team_quests/{id}/contributions",
      "summary": "Read a team quest with what each member and past contributor did and their reward state",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_team_quest_contributions",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "list_teams",
      "method": "GET",
      "path": "/teams",
      "summary": "List teams, newest first; filter by status or search by name prefix",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_teams",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_team",
      "method": "GET",
      "path": "/teams/{id}",
      "summary": "Read one team with its owner, invite code and moderation state",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_team",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "remove_team_member",
      "method": "POST",
      "path": "/teams/{id}/member_removals",
      "summary": "Remove a customer from a team (an owner hands over to an admin or member; the last member disbands it)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "list_team_members",
      "method": "GET",
      "path": "/teams/{id}/members",
      "summary": "List the members of a team with their roles and customer ids",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "list_team_members",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "moderate_team",
      "method": "POST",
      "path": "/teams/{id}/moderations",
      "summary": "Hide a team's chosen name and description from customers, or show them again",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "customers:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "customers:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_tier_programs",
      "method": "GET",
      "path": "/tier_programs",
      "summary": "List tier programs with levels",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_tier_programs",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_tier_programs",
      "method": "POST",
      "path": "/tier_programs",
      "summary": "Create a tier program (first level threshold 0, increasing thresholds)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_tier_programs_id",
      "method": "GET",
      "path": "/tier_programs/{id}",
      "summary": "One tier program",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_tier_programs_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_tier_programs_id",
      "method": "PATCH",
      "path": "/tier_programs/{id}",
      "summary": "Edit a program; removing a held level needs reassign_to, changing basis needs reevaluate",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "delete_tier_programs_id",
      "method": "DELETE",
      "path": "/tier_programs/{id}",
      "summary": "Delete an unreferenced program",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "post_tier_programs_id_evaluate",
      "method": "POST",
      "path": "/tier_programs/{id}/evaluate",
      "summary": "Run the upgrade-only tier evaluation for one customer now",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "post_tier_programs_id_reevaluate",
      "method": "POST",
      "path": "/tier_programs/{id}/reevaluate",
      "summary": "Finish the pending pass over customers, or start one at the current version; call again until completed",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "programs:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "programs:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_grant"
      }
    },
    {
      "operation_id": "getTrustPolicy",
      "method": "GET",
      "path": "/trust_policy",
      "summary": "Read the environment trust policy",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "environments:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "environments:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "environments:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "getTrustPolicy",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "updateTrustPolicy",
      "method": "PATCH",
      "path": "/trust_policy",
      "summary": "Requires If-Match against the environment revision. The policy and audit commit together. Repeating the same Idempotency-Key and body returns the committed response; a new key with an old revision returns stale_write. Existing cap consumption is retained.",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "environments:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "environments:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "environments:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "value_configuration"
      }
    },
    {
      "operation_id": "get_users_me",
      "method": "GET",
      "path": "/users/me",
      "summary": "The caller and their memberships",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "session",
        "staff"
      ],
      "scopes": [],
      "authorization": [
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "none",
          "scopes": []
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "none",
          "scopes": []
        }
      ],
      "tool": "get_users_me",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "get_webhook_deliveries",
      "method": "GET",
      "path": "/webhook_deliveries",
      "summary": "List deliveries (newest first)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "webhooks:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "webhooks:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "webhooks:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_webhook_deliveries",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_webhook_deliveries",
      "method": "POST",
      "path": "/webhook_deliveries",
      "summary": "Send a webhook.test ping to one endpoint now",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "webhooks:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "webhooks:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "webhooks:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "post_webhook_deliveries_fan_out",
      "method": "POST",
      "path": "/webhook_deliveries/fan_out",
      "summary": "Materialize deliveries for one outbox payload (relay hook; local and tests)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "webhooks:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "webhooks:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "webhooks:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "get_webhook_deliveries_id",
      "method": "GET",
      "path": "/webhook_deliveries/{id}",
      "summary": "One delivery with its envelope and attempt history",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "webhooks:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "webhooks:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "webhooks:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_webhook_deliveries_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_webhook_deliveries_id_replay",
      "method": "POST",
      "path": "/webhook_deliveries/{id}/replay",
      "summary": "Replay: a new delivery of the same envelope, queued for the dispatcher",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "webhooks:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "webhooks:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "webhooks:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "runtime"
      }
    },
    {
      "operation_id": "get_webhook_endpoints",
      "method": "GET",
      "path": "/webhook_endpoints",
      "summary": "List endpoints (secrets never shown)",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "webhooks:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "webhooks:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "webhooks:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_webhook_endpoints",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "post_webhook_endpoints",
      "method": "POST",
      "path": "/webhook_endpoints",
      "summary": "Create an endpoint; the signing secret is returned once",
      "exposure": "mutation",
      "proposal": false,
      "retry": "atomic_replay",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "webhooks:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "webhooks:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "webhooks:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "access"
      }
    },
    {
      "operation_id": "get_webhook_endpoints_id",
      "method": "GET",
      "path": "/webhook_endpoints/{id}",
      "summary": "One endpoint",
      "exposure": "read",
      "proposal": false,
      "retry": "read",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "webhooks:read"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "webhooks:read"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "webhooks:read"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": "get_webhook_endpoints_id",
      "call_action": {
        "reachable": true
      }
    },
    {
      "operation_id": "patch_webhook_endpoints_id",
      "method": "PATCH",
      "path": "/webhook_endpoints/{id}",
      "summary": "Change url, subscriptions, or re-enable a disabled endpoint",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "webhooks:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "webhooks:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "webhooks:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "delete_webhook_endpoints_id",
      "method": "DELETE",
      "path": "/webhook_endpoints/{id}",
      "summary": "Delete an endpoint and its delivery history",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "webhooks:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "webhooks:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "webhooks:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    },
    {
      "operation_id": "post_webhook_endpoints_id_secrets",
      "method": "POST",
      "path": "/webhook_endpoints/{id}/secrets",
      "summary": "Rotate the signing secret (returned once; the previous one verifies for 24 h)",
      "exposure": "mutation",
      "proposal": false,
      "retry": "outcome_unknown",
      "credentials": [
        "pat",
        "secret_key",
        "session",
        "staff"
      ],
      "scopes": [
        "webhooks:write"
      ],
      "authorization": [
        {
          "credentials": [
            "secret_key"
          ],
          "environment": "credential_bound",
          "scopes": [
            "webhooks:write"
          ]
        },
        {
          "credentials": [
            "pat",
            "session"
          ],
          "environment": "selected",
          "scopes": [
            "webhooks:write"
          ]
        },
        {
          "credentials": [
            "staff"
          ],
          "environment": "selected",
          "scopes": []
        }
      ],
      "tool": null,
      "no_tool_reason": "mutation",
      "call_action": {
        "reachable": true,
        "gate_class": "destructive"
      }
    }
  ],
  "rule_actions": [
    "points.award",
    "points.deduct",
    "points.reverse",
    "reward.issue",
    "tier.evaluate",
    "attribute.set",
    "webhook.emit",
    "counter.release",
    "item.grant",
    "quest.contribute",
    "quest.enroll",
    "program.reverse_contribution",
    "friend_streak.activity",
    "friend_quest.contribute",
    "team_quest.contribute",
    "streak.contribute",
    "streak.freeze_grant",
    "badge.contribute",
    "badge.grant",
    "leaderboard.contribute",
    "coupon.issue",
    "discount.quote"
  ],
  "tools": [
    {
      "name": "commerce_list_fulfillments",
      "kind": "operation",
      "description": "List fulfillments",
      "operation_id": "commerce_list_fulfillments",
      "method": "GET",
      "path": "/fulfillments",
      "exposure": "read"
    },
    {
      "name": "commerce_list_reward_catalogues",
      "kind": "operation",
      "description": "List reward catalogues",
      "operation_id": "commerce_list_reward_catalogues",
      "method": "GET",
      "path": "/reward_catalogues",
      "exposure": "read"
    },
    {
      "name": "commerce_list_reward_code_pools",
      "kind": "operation",
      "description": "List reward code pools",
      "operation_id": "commerce_list_reward_code_pools",
      "method": "GET",
      "path": "/reward_code_pools",
      "exposure": "read"
    },
    {
      "name": "commerce_list_reward_inventory",
      "kind": "operation",
      "description": "List reward inventory",
      "operation_id": "commerce_list_reward_inventory",
      "method": "GET",
      "path": "/reward_inventory",
      "exposure": "read"
    },
    {
      "name": "commerce_list_reward_offer_versions",
      "kind": "operation",
      "description": "List reward offer versions",
      "operation_id": "commerce_list_reward_offer_versions",
      "method": "GET",
      "path": "/reward_offer_versions",
      "exposure": "read"
    },
    {
      "name": "commerce_read_fulfillments",
      "kind": "operation",
      "description": "Read fulfillments",
      "operation_id": "commerce_read_fulfillments",
      "method": "GET",
      "path": "/fulfillments/{id}",
      "exposure": "read"
    },
    {
      "name": "commerce_read_reward_catalogues",
      "kind": "operation",
      "description": "Read reward catalogues",
      "operation_id": "commerce_read_reward_catalogues",
      "method": "GET",
      "path": "/reward_catalogues/{id}",
      "exposure": "read"
    },
    {
      "name": "commerce_read_reward_code_pools",
      "kind": "operation",
      "description": "Read reward code pools",
      "operation_id": "commerce_read_reward_code_pools",
      "method": "GET",
      "path": "/reward_code_pools/{id}",
      "exposure": "read"
    },
    {
      "name": "commerce_read_reward_inventory",
      "kind": "operation",
      "description": "Read reward inventory",
      "operation_id": "commerce_read_reward_inventory",
      "method": "GET",
      "path": "/reward_inventory/{id}",
      "exposure": "read"
    },
    {
      "name": "commerce_read_reward_offer_versions",
      "kind": "operation",
      "description": "Read reward offer versions",
      "operation_id": "commerce_read_reward_offer_versions",
      "method": "GET",
      "path": "/reward_offer_versions/{id}",
      "exposure": "read"
    },
    {
      "name": "create_bulk_operation",
      "kind": "operation",
      "description": "Propose a bulk operation: freeze the selection into items, pin dependencies and store a change set for dashboard confirmation",
      "operation_id": "create_bulk_operation",
      "method": "POST",
      "path": "/bulk_operations",
      "exposure": "propose"
    },
    {
      "name": "create_bulk_operation_undo_proposal",
      "kind": "operation",
      "description": "Propose the undo of a bulk operation: an inverse operation of its succeeded items, classified now",
      "operation_id": "create_bulk_operation_undo_proposal",
      "method": "POST",
      "path": "/bulk_operations/{id}/undo_proposals",
      "exposure": "propose"
    },
    {
      "name": "create_change_set",
      "kind": "operation",
      "description": "Propose a change set: plan it without applying and store the plan for review",
      "operation_id": "create_change_set",
      "method": "POST",
      "path": "/change_sets",
      "exposure": "propose"
    },
    {
      "name": "create_change_set_application",
      "kind": "operation",
      "description": "Apply a proposed change set under the environment autonomy policy, without a dashboard confirmation: always in a sandbox; in production when GET /autonomy_policy says auto, or limits and the plan is inside them. A policy refusal is confirmation_required with details.reasons and details.review_url, and the change set stays pending for a person",
      "operation_id": "create_change_set_application",
      "method": "POST",
      "path": "/change_set_applications",
      "exposure": "apply"
    },
    {
      "name": "create_change_set_cancellation",
      "kind": "operation",
      "description": "Cancel a pending change set",
      "operation_id": "create_change_set_cancellation",
      "method": "POST",
      "path": "/change_sets/{id}/cancellations",
      "exposure": "propose"
    },
    {
      "name": "create_change_set_undo",
      "kind": "operation",
      "description": "Undo a committed change set: propose a change set that restores what it changed (what it created is archived or deactivated, never deleted) and apply it under the autonomy policy when the policy allows; otherwise application is null and the undo waits for a dashboard confirmation. invalid_state when it has no undo: not committed, already undone, bulk or playbook (their own undo), an operation command, an irreversible change, a deletion or creation the configuration document cannot reverse, or an item changed again since",
      "operation_id": "create_change_set_undo",
      "method": "POST",
      "path": "/change_set_undos",
      "exposure": "apply"
    },
    {
      "name": "create_playbook_preview",
      "kind": "operation",
      "description": "Preview a playbook install: compile it into a change set (source playbook) for dashboard confirmation, or a structured refusal",
      "operation_id": "create_playbook_preview",
      "method": "POST",
      "path": "/playbook_previews",
      "exposure": "propose"
    },
    {
      "name": "create_playbook_uninstall_preview",
      "kind": "operation",
      "description": "Preview a playbook uninstall: archive, revoke, disable or stop what it owns and release ownership; balances and history stay",
      "operation_id": "create_playbook_uninstall_preview",
      "method": "POST",
      "path": "/playbook_uninstall_previews",
      "exposure": "propose"
    },
    {
      "name": "create_playbook_upgrade_preview",
      "kind": "operation",
      "description": "Preview a three-way playbook upgrade: a change set (source upgrade), or the conflicts that need resolutions",
      "operation_id": "create_playbook_upgrade_preview",
      "method": "POST",
      "path": "/playbook_upgrade_previews",
      "exposure": "propose"
    },
    {
      "name": "discover_capabilities",
      "kind": "composite",
      "description": "What this environment supports (get_capabilities) and the names of every tool this credential may call.",
      "steps": [
        "get_capabilities"
      ]
    },
    {
      "name": "explain_execution",
      "kind": "composite",
      "description": "Why an event did or did not award: the recorded execution of one event (get_events_id_execution).",
      "steps": [
        "get_events_id_execution"
      ]
    },
    {
      "name": "getTestPlayers",
      "kind": "operation",
      "description": "Test players used and the limit of a test environment",
      "operation_id": "getTestPlayers",
      "method": "GET",
      "path": "/environments/{id}/test_players",
      "exposure": "read"
    },
    {
      "name": "getTrustPolicy",
      "kind": "operation",
      "description": "Read the environment trust policy",
      "operation_id": "getTrustPolicy",
      "method": "GET",
      "path": "/trust_policy",
      "exposure": "read"
    },
    {
      "name": "get_ai_rule_drafts",
      "kind": "operation",
      "description": "Recent drafts in this environment (newest first)",
      "operation_id": "get_ai_rule_drafts",
      "method": "GET",
      "path": "/ai/rule_drafts",
      "exposure": "read"
    },
    {
      "name": "get_ai_rule_drafts_id",
      "kind": "operation",
      "description": "One draft with its rules, assumptions, errors and the rule it became",
      "operation_id": "get_ai_rule_drafts_id",
      "method": "GET",
      "path": "/ai/rule_drafts/{id}",
      "exposure": "read"
    },
    {
      "name": "get_analytics_activity",
      "kind": "operation",
      "description": "Active customers per day with 7 and 30 day rolling actives and new customers",
      "operation_id": "get_analytics_activity",
      "method": "GET",
      "path": "/analytics/activity",
      "exposure": "read"
    },
    {
      "name": "get_analytics_retention",
      "kind": "operation",
      "description": "Day-N retention by first-active cohort (UTC days), daily or by ISO week",
      "operation_id": "get_analytics_retention",
      "method": "GET",
      "path": "/analytics/retention",
      "exposure": "read"
    },
    {
      "name": "get_analytics_status",
      "kind": "operation",
      "description": "When analytics were last built for this environment and whether they are stale",
      "operation_id": "get_analytics_status",
      "method": "GET",
      "path": "/analytics/status",
      "exposure": "read"
    },
    {
      "name": "get_assets",
      "kind": "operation",
      "description": "List immutable asset metadata",
      "operation_id": "get_assets",
      "method": "GET",
      "path": "/assets",
      "exposure": "read"
    },
    {
      "name": "get_assets_id",
      "kind": "operation",
      "description": "Read immutable asset metadata",
      "operation_id": "get_assets_id",
      "method": "GET",
      "path": "/assets/{id}",
      "exposure": "read"
    },
    {
      "name": "get_assistant_usage",
      "kind": "operation",
      "description": "This month's AI budget of the organization (assistant and drafting): used, limit, reset, calls and tokens",
      "operation_id": "get_assistant_usage",
      "method": "GET",
      "path": "/assistant/usage",
      "exposure": "read"
    },
    {
      "name": "get_attribute_definitions",
      "kind": "operation",
      "description": "Declared customer attributes with types and PII flags",
      "operation_id": "get_attribute_definitions",
      "method": "GET",
      "path": "/attribute_definitions",
      "exposure": "read"
    },
    {
      "name": "get_auth_tokens",
      "kind": "operation",
      "description": "List the caller's tokens",
      "operation_id": "get_auth_tokens",
      "method": "GET",
      "path": "/auth/tokens",
      "exposure": "read"
    },
    {
      "name": "get_autonomy_policy",
      "kind": "operation",
      "description": "Read how this environment applies change sets: on request, on request within limits, or only by dashboard confirmation",
      "operation_id": "get_autonomy_policy",
      "method": "GET",
      "path": "/autonomy_policy",
      "exposure": "read"
    },
    {
      "name": "get_badge",
      "kind": "operation",
      "description": "Read a badge program",
      "operation_id": "get_badge",
      "method": "GET",
      "path": "/badges/{id}",
      "exposure": "read"
    },
    {
      "name": "get_badge_participation",
      "kind": "operation",
      "description": "Read a retained badge participation",
      "operation_id": "get_badge_participation",
      "method": "GET",
      "path": "/badges/{id}/participations/{participation_id}",
      "exposure": "read"
    },
    {
      "name": "get_battle_pass",
      "kind": "operation",
      "description": "Read a battle pass and its active version by id or key",
      "operation_id": "get_battle_pass",
      "method": "GET",
      "path": "/battle_passes/{id}",
      "exposure": "read"
    },
    {
      "name": "get_bulk_operation",
      "kind": "operation",
      "description": "Read a bulk operation: counts by status, a sample of errors, its passes and change set",
      "operation_id": "get_bulk_operation",
      "method": "GET",
      "path": "/bulk_operations/{id}",
      "exposure": "read"
    },
    {
      "name": "get_campaigns",
      "kind": "operation",
      "description": "List campaigns",
      "operation_id": "get_campaigns",
      "method": "GET",
      "path": "/campaigns",
      "exposure": "read"
    },
    {
      "name": "get_campaigns_id",
      "kind": "operation",
      "description": "One campaign with budget usage",
      "operation_id": "get_campaigns_id",
      "method": "GET",
      "path": "/campaigns/{id}",
      "exposure": "read"
    },
    {
      "name": "get_capabilities",
      "kind": "operation",
      "description": "Read recognized rule actions and installed execution capabilities",
      "operation_id": "get_capabilities",
      "method": "GET",
      "path": "/capabilities",
      "exposure": "read"
    },
    {
      "name": "get_challenges",
      "kind": "operation",
      "description": "List challenges",
      "operation_id": "get_challenges",
      "method": "GET",
      "path": "/challenges",
      "exposure": "read"
    },
    {
      "name": "get_challenges_id",
      "kind": "operation",
      "description": "One challenge",
      "operation_id": "get_challenges_id",
      "method": "GET",
      "path": "/challenges/{id}",
      "exposure": "read"
    },
    {
      "name": "get_challenges_id_enrollments",
      "kind": "operation",
      "description": "Explicit enrollments",
      "operation_id": "get_challenges_id_enrollments",
      "method": "GET",
      "path": "/challenges/{id}/enrollments",
      "exposure": "read"
    },
    {
      "name": "get_challenges_id_progress",
      "kind": "operation",
      "description": "Progress rows, optionally for one customer",
      "operation_id": "get_challenges_id_progress",
      "method": "GET",
      "path": "/challenges/{id}/progress",
      "exposure": "read"
    },
    {
      "name": "get_change_set",
      "kind": "operation",
      "description": "Read a change set with its stored plan",
      "operation_id": "get_change_set",
      "method": "GET",
      "path": "/change_sets/{id}",
      "exposure": "read"
    },
    {
      "name": "get_client_configuration",
      "kind": "operation",
      "description": "Read client origins, grant policy and admission limits",
      "operation_id": "get_client_configuration",
      "method": "GET",
      "path": "/client_configuration",
      "exposure": "read"
    },
    {
      "name": "get_config_export",
      "kind": "operation",
      "description": "Whole environment configuration as one JSON document (names as references, no secrets)",
      "operation_id": "get_config_export",
      "method": "GET",
      "path": "/config/export",
      "exposure": "read"
    },
    {
      "name": "get_connector",
      "kind": "operation",
      "description": "One connector installation",
      "operation_id": "get_connector",
      "method": "GET",
      "path": "/connectors/{id}",
      "exposure": "read"
    },
    {
      "name": "get_context",
      "kind": "operation",
      "description": "Read environment context and project presentation. ETag targets context.version; Presentation-ETag targets presentation_revision.",
      "operation_id": "get_context",
      "method": "GET",
      "path": "/context",
      "exposure": "read"
    },
    {
      "name": "get_counter_definitions",
      "kind": "operation",
      "description": "List counter definitions with readiness",
      "operation_id": "get_counter_definitions",
      "method": "GET",
      "path": "/counter_definitions",
      "exposure": "read"
    },
    {
      "name": "get_counter_definitions_id",
      "kind": "operation",
      "description": "One definition with backfill status",
      "operation_id": "get_counter_definitions_id",
      "method": "GET",
      "path": "/counter_definitions/{id}",
      "exposure": "read"
    },
    {
      "name": "get_counter_definitions_id_customers_customer_id",
      "kind": "operation",
      "description": "Counts per window for one customer",
      "operation_id": "get_counter_definitions_id_customers_customer_id",
      "method": "GET",
      "path": "/counter_definitions/{id}/customers/{customer_id}",
      "exposure": "read"
    },
    {
      "name": "get_currencies",
      "kind": "operation",
      "description": "List currencies",
      "operation_id": "get_currencies",
      "method": "GET",
      "path": "/currencies",
      "exposure": "read"
    },
    {
      "name": "get_currencies_id",
      "kind": "operation",
      "description": "One currency by id or code",
      "operation_id": "get_currencies_id",
      "method": "GET",
      "path": "/currencies/{id}",
      "exposure": "read"
    },
    {
      "name": "get_currency_transfer_limits",
      "kind": "operation",
      "description": "Transfer limits of a currency, and whether customers may transfer it",
      "operation_id": "get_currency_transfer_limits",
      "method": "GET",
      "path": "/currencies/{id}/transfer_limits",
      "exposure": "read"
    },
    {
      "name": "get_customer_active_boosts",
      "kind": "operation",
      "description": "Read a customer's running boosts",
      "operation_id": "get_customer_active_boosts",
      "method": "GET",
      "path": "/customers/{id}/boosts",
      "exposure": "read"
    },
    {
      "name": "get_customer_challenge_progress",
      "kind": "operation",
      "description": "All challenge progress for a customer",
      "operation_id": "get_customer_challenge_progress",
      "method": "GET",
      "path": "/customers/{id}/challenge_progress",
      "exposure": "read"
    },
    {
      "name": "get_customer_identity_bindings",
      "kind": "operation",
      "description": "List customer identity bindings without provider subjects",
      "operation_id": "get_customer_identity_bindings",
      "method": "GET",
      "path": "/customer_identity_bindings",
      "exposure": "read"
    },
    {
      "name": "get_customer_identity_bindings_id",
      "kind": "operation",
      "description": "Read customer identity binding security state",
      "operation_id": "get_customer_identity_bindings_id",
      "method": "GET",
      "path": "/customer_identity_bindings/{id}",
      "exposure": "read"
    },
    {
      "name": "get_customer_notification_contact",
      "kind": "operation",
      "description": "Read a customer's address, locale, consent and reachability",
      "operation_id": "get_customer_notification_contact",
      "method": "GET",
      "path": "/customers/{id}/notification_contact",
      "exposure": "read"
    },
    {
      "name": "get_customer_notification_preferences",
      "kind": "operation",
      "description": "Read what a customer has opted out of, per message type and channel",
      "operation_id": "get_customer_notification_preferences",
      "method": "GET",
      "path": "/customers/{id}/notification_preferences",
      "exposure": "read"
    },
    {
      "name": "get_customer_social_profile",
      "kind": "operation",
      "description": "Read the display name, avatar and visibility a customer shows to other customers",
      "operation_id": "get_customer_social_profile",
      "method": "GET",
      "path": "/customers/{id}/social_profile",
      "exposure": "read"
    },
    {
      "name": "get_customers",
      "kind": "operation",
      "description": "List customers (newest first)",
      "operation_id": "get_customers",
      "method": "GET",
      "path": "/customers",
      "exposure": "read"
    },
    {
      "name": "get_customers_id",
      "kind": "operation",
      "description": "One customer by id or external id",
      "operation_id": "get_customers_id",
      "method": "GET",
      "path": "/customers/{id}",
      "exposure": "read"
    },
    {
      "name": "get_customers_id_balances",
      "kind": "operation",
      "description": "Balances per currency",
      "operation_id": "get_customers_id_balances",
      "method": "GET",
      "path": "/customers/{id}/balances",
      "exposure": "read"
    },
    {
      "name": "get_customers_id_dates_key",
      "kind": "operation",
      "description": "One date of a customer (birthday, anniversary, a custom key or signup)",
      "operation_id": "get_customers_id_dates_key",
      "method": "GET",
      "path": "/customers/{id}/dates/{key}",
      "exposure": "read"
    },
    {
      "name": "get_customers_id_export",
      "kind": "operation",
      "description": "Complete data export: profile plus the first page of every history section (events, ledger, programs, streaks, badges, quests, levels, leaderboards, referrals, commerce, identity, merges); continue a section on /customers/{id}/export/{section}",
      "operation_id": "get_customers_id_export",
      "method": "GET",
      "path": "/customers/{id}/export",
      "exposure": "read"
    },
    {
      "name": "get_customers_id_state",
      "kind": "operation",
      "description": "Balances, tiers, segments, counters, challenge progress, issuances and aliases",
      "operation_id": "get_customers_id_state",
      "method": "GET",
      "path": "/customers/{id}/state",
      "exposure": "read"
    },
    {
      "name": "get_customers_id_tiers",
      "kind": "operation",
      "description": "Current tier per program",
      "operation_id": "get_customers_id_tiers",
      "method": "GET",
      "path": "/customers/{id}/tiers",
      "exposure": "read"
    },
    {
      "name": "get_energy_definition",
      "kind": "operation",
      "description": "Read an energy definition by id or key",
      "operation_id": "get_energy_definition",
      "method": "GET",
      "path": "/energy_definitions/{id}",
      "exposure": "read"
    },
    {
      "name": "get_environments_id",
      "kind": "operation",
      "description": "One environment",
      "operation_id": "get_environments_id",
      "method": "GET",
      "path": "/environments/{id}",
      "exposure": "read"
    },
    {
      "name": "get_environments_id_api_keys",
      "kind": "operation",
      "description": "List keys (hashes never returned)",
      "operation_id": "get_environments_id_api_keys",
      "method": "GET",
      "path": "/environments/{id}/api_keys",
      "exposure": "read"
    },
    {
      "name": "get_environments_id_usage",
      "kind": "operation",
      "description": "Metered usage per calendar month",
      "operation_id": "get_environments_id_usage",
      "method": "GET",
      "path": "/environments/{id}/usage",
      "exposure": "read"
    },
    {
      "name": "get_event_definitions",
      "kind": "operation",
      "description": "Observed event names with property types and samples",
      "operation_id": "get_event_definitions",
      "method": "GET",
      "path": "/event_definitions",
      "exposure": "read"
    },
    {
      "name": "get_event_definitions_id",
      "kind": "operation",
      "description": "One event definition, with its schema enforcement mode and warn count",
      "operation_id": "get_event_definitions_id",
      "method": "GET",
      "path": "/event_definitions/{id}",
      "exposure": "read"
    },
    {
      "name": "get_events",
      "kind": "operation",
      "description": "List events (newest first)",
      "operation_id": "get_events",
      "method": "GET",
      "path": "/events",
      "exposure": "read"
    },
    {
      "name": "get_events_id",
      "kind": "operation",
      "description": "One event with its evaluation status",
      "operation_id": "get_events_id",
      "method": "GET",
      "path": "/events/{id}",
      "exposure": "read"
    },
    {
      "name": "get_events_id_execution",
      "kind": "operation",
      "description": "Plan and trace of an evaluated event",
      "operation_id": "get_events_id_execution",
      "method": "GET",
      "path": "/events/{id}/execution",
      "exposure": "read"
    },
    {
      "name": "get_experiment",
      "kind": "operation",
      "description": "One experiment by id or key",
      "operation_id": "get_experiment",
      "method": "GET",
      "path": "/experiments/{id}",
      "exposure": "read"
    },
    {
      "name": "get_experiment_results",
      "kind": "operation",
      "description": "Per-variant results with intervals and lift against the control (first variant)",
      "operation_id": "get_experiment_results",
      "method": "GET",
      "path": "/experiments/{id}/results",
      "exposure": "read"
    },
    {
      "name": "get_friend_quest_definition",
      "kind": "operation",
      "description": "Read one friend quest definition by id or key",
      "operation_id": "get_friend_quest_definition",
      "method": "GET",
      "path": "/friend_quest_definitions/{id}",
      "exposure": "read"
    },
    {
      "name": "get_friend_streak_definition",
      "kind": "operation",
      "description": "Read one friend streak definition by id or key",
      "operation_id": "get_friend_streak_definition",
      "method": "GET",
      "path": "/friend_streak_definitions/{id}",
      "exposure": "read"
    },
    {
      "name": "get_identity_connections",
      "kind": "operation",
      "description": "List identity connections",
      "operation_id": "get_identity_connections",
      "method": "GET",
      "path": "/identity_connections",
      "exposure": "read"
    },
    {
      "name": "get_identity_connections_id",
      "kind": "operation",
      "description": "Read an identity connection",
      "operation_id": "get_identity_connections_id",
      "method": "GET",
      "path": "/identity_connections/{id}",
      "exposure": "read"
    },
    {
      "name": "get_import",
      "kind": "operation",
      "description": "One import: status, counts, totals and the dry run report",
      "operation_id": "get_import",
      "method": "GET",
      "path": "/imports/{id}",
      "exposure": "read"
    },
    {
      "name": "get_import_report",
      "kind": "operation",
      "description": "Reconciliation: the totals of the file against the ledger entries of the import",
      "operation_id": "get_import_report",
      "method": "GET",
      "path": "/imports/{id}/report",
      "exposure": "read"
    },
    {
      "name": "get_item",
      "kind": "operation",
      "description": "Read an item definition by id or key",
      "operation_id": "get_item",
      "method": "GET",
      "path": "/items/{id}",
      "exposure": "read"
    },
    {
      "name": "get_klaviyo_connector_status",
      "kind": "operation",
      "description": "Klaviyo sync counts (synced, pending, skipped without email, failed), last run and last error",
      "operation_id": "get_klaviyo_connector_status",
      "method": "GET",
      "path": "/connectors/{id}/klaviyo/status",
      "exposure": "read"
    },
    {
      "name": "get_leaderboard",
      "kind": "operation",
      "description": "Read a leaderboard program",
      "operation_id": "get_leaderboard",
      "method": "GET",
      "path": "/leaderboards/{id}",
      "exposure": "read"
    },
    {
      "name": "get_league",
      "kind": "operation",
      "description": "Read one league by id or key",
      "operation_id": "get_league",
      "method": "GET",
      "path": "/leagues/{id}",
      "exposure": "read"
    },
    {
      "name": "get_league_cohort_standings",
      "kind": "operation",
      "description": "Read the ranked standings of one cohort, with customer ids",
      "operation_id": "get_league_cohort_standings",
      "method": "GET",
      "path": "/league_cohorts/{id}/standings",
      "exposure": "read"
    },
    {
      "name": "get_ledger_entries",
      "kind": "operation",
      "description": "List entries (newest first)",
      "operation_id": "get_ledger_entries",
      "method": "GET",
      "path": "/ledger_entries",
      "exposure": "read"
    },
    {
      "name": "get_ledger_entries_id",
      "kind": "operation",
      "description": "One entry",
      "operation_id": "get_ledger_entries_id",
      "method": "GET",
      "path": "/ledger_entries/{id}",
      "exposure": "read"
    },
    {
      "name": "get_level",
      "kind": "operation",
      "description": "Read a level program",
      "operation_id": "get_level",
      "method": "GET",
      "path": "/levels/{id}",
      "exposure": "read"
    },
    {
      "name": "get_level_participation",
      "kind": "operation",
      "description": "Read a retained level participation",
      "operation_id": "get_level_participation",
      "method": "GET",
      "path": "/levels/{id}/participations/{participation_id}",
      "exposure": "read"
    },
    {
      "name": "get_loot_table",
      "kind": "operation",
      "description": "Read a loot table and its active version by id or key",
      "operation_id": "get_loot_table",
      "method": "GET",
      "path": "/loot_tables/{id}",
      "exposure": "read"
    },
    {
      "name": "get_loot_table_odds",
      "kind": "operation",
      "description": "Read the published odds of a loot table, or of one of its versions",
      "operation_id": "get_loot_table_odds",
      "method": "GET",
      "path": "/loot_tables/{id}/odds",
      "exposure": "read"
    },
    {
      "name": "get_loyalty_reporting_settings",
      "kind": "operation",
      "description": "Which events are orders, and what a point is worth, for the ROI report",
      "operation_id": "get_loyalty_reporting_settings",
      "method": "GET",
      "path": "/loyalty/reporting_settings",
      "exposure": "read"
    },
    {
      "name": "get_loyalty_roi",
      "kind": "operation",
      "description": "Revenue from members and non-members, reward cost, liability and ROI for a period, per ISO currency",
      "operation_id": "get_loyalty_roi",
      "method": "GET",
      "path": "/loyalty/roi",
      "exposure": "read"
    },
    {
      "name": "get_match_profile",
      "kind": "operation",
      "description": "Read a match profile by id or key",
      "operation_id": "get_match_profile",
      "method": "GET",
      "path": "/match_profiles/{id}",
      "exposure": "read"
    },
    {
      "name": "get_match_result",
      "kind": "operation",
      "description": "Read a reported match by id or by your match_id",
      "operation_id": "get_match_result",
      "method": "GET",
      "path": "/match_results/{id}",
      "exposure": "read"
    },
    {
      "name": "get_notification_connector",
      "kind": "operation",
      "description": "Read one connector (never the credentials)",
      "operation_id": "get_notification_connector",
      "method": "GET",
      "path": "/notification_connectors/{id}",
      "exposure": "read"
    },
    {
      "name": "get_notification_message",
      "kind": "operation",
      "description": "Read one recorded message",
      "operation_id": "get_notification_message",
      "method": "GET",
      "path": "/notification_messages/{id}",
      "exposure": "read"
    },
    {
      "name": "get_notification_message_stats",
      "kind": "operation",
      "description": "Count messages by type, channel, status and reason (default: the last 7 days)",
      "operation_id": "get_notification_message_stats",
      "method": "GET",
      "path": "/notification_message_stats",
      "exposure": "read"
    },
    {
      "name": "get_notification_message_type",
      "kind": "operation",
      "description": "Read one message type by id or key",
      "operation_id": "get_notification_message_type",
      "method": "GET",
      "path": "/notification_message_types/{id}",
      "exposure": "read"
    },
    {
      "name": "get_notification_settings",
      "kind": "operation",
      "description": "Read quiet hours, frequency caps, consent mode and sender identity",
      "operation_id": "get_notification_settings",
      "method": "GET",
      "path": "/notification_settings",
      "exposure": "read"
    },
    {
      "name": "get_organizations",
      "kind": "operation",
      "description": "Organizations the caller belongs to",
      "operation_id": "get_organizations",
      "method": "GET",
      "path": "/organizations",
      "exposure": "read"
    },
    {
      "name": "get_organizations_id",
      "kind": "operation",
      "description": "One organization",
      "operation_id": "get_organizations_id",
      "method": "GET",
      "path": "/organizations/{id}",
      "exposure": "read"
    },
    {
      "name": "get_organizations_id_audit_logs",
      "kind": "operation",
      "description": "Audit trail for an organization (filters by environment, action prefix, resource, actor, time)",
      "operation_id": "get_organizations_id_audit_logs",
      "method": "GET",
      "path": "/organizations/{id}/audit_logs",
      "exposure": "read"
    },
    {
      "name": "get_organizations_id_memberships",
      "kind": "operation",
      "description": "List members",
      "operation_id": "get_organizations_id_memberships",
      "method": "GET",
      "path": "/organizations/{id}/memberships",
      "exposure": "read"
    },
    {
      "name": "get_pending_action",
      "kind": "operation",
      "description": "Read one pending action: the exact request, its status and, once it ran, its answer",
      "operation_id": "get_pending_action",
      "method": "GET",
      "path": "/pending_actions/{id}",
      "exposure": "read"
    },
    {
      "name": "get_playbook",
      "kind": "operation",
      "description": "Read one playbook manifest (the latest version, or ?version=)",
      "operation_id": "get_playbook",
      "method": "GET",
      "path": "/playbooks/{id}",
      "exposure": "read"
    },
    {
      "name": "get_playbook_installation",
      "kind": "operation",
      "description": "Read a playbook installation with its owned resources and their drift",
      "operation_id": "get_playbook_installation",
      "method": "GET",
      "path": "/playbook_installations/{id}",
      "exposure": "read"
    },
    {
      "name": "get_points_transfer",
      "kind": "operation",
      "description": "One points transfer",
      "operation_id": "get_points_transfer",
      "method": "GET",
      "path": "/points_transfers/{id}",
      "exposure": "read"
    },
    {
      "name": "get_poison_events",
      "kind": "operation",
      "description": "Events parked after repeated evaluator failures",
      "operation_id": "get_poison_events",
      "method": "GET",
      "path": "/poison_events",
      "exposure": "read"
    },
    {
      "name": "get_portal_configuration",
      "kind": "operation",
      "description": "Read a portal configuration with its draft, active version and readiness",
      "operation_id": "get_portal_configuration",
      "method": "GET",
      "path": "/portal_configurations/{id}",
      "exposure": "read"
    },
    {
      "name": "get_principal",
      "kind": "operation",
      "description": "The calling credential and the scopes it holds in its environment now",
      "operation_id": "get_principal",
      "method": "GET",
      "path": "/principal",
      "exposure": "read"
    },
    {
      "name": "get_program",
      "kind": "operation",
      "description": "Read a program",
      "operation_id": "get_program",
      "method": "GET",
      "path": "/programs/{id}",
      "exposure": "read"
    },
    {
      "name": "get_program_correction",
      "kind": "operation",
      "description": "Read a permanent correction command result",
      "operation_id": "get_program_correction",
      "method": "GET",
      "path": "/program_corrections/{id}",
      "exposure": "read"
    },
    {
      "name": "get_program_enrollment",
      "kind": "operation",
      "description": "Read a permanent enrollment command result",
      "operation_id": "get_program_enrollment",
      "method": "GET",
      "path": "/program_enrollments/{id}",
      "exposure": "read"
    },
    {
      "name": "get_program_succession",
      "kind": "operation",
      "description": "Read a permanent succession command result",
      "operation_id": "get_program_succession",
      "method": "GET",
      "path": "/program_successions/{id}",
      "exposure": "read"
    },
    {
      "name": "get_program_version",
      "kind": "operation",
      "description": "Read an immutable program version",
      "operation_id": "get_program_version",
      "method": "GET",
      "path": "/programs/{id}/versions/{version_id}",
      "exposure": "read"
    },
    {
      "name": "get_projects",
      "kind": "operation",
      "description": "Projects of an organization",
      "operation_id": "get_projects",
      "method": "GET",
      "path": "/projects",
      "exposure": "read"
    },
    {
      "name": "get_projects_id",
      "kind": "operation",
      "description": "One project",
      "operation_id": "get_projects_id",
      "method": "GET",
      "path": "/projects/{id}",
      "exposure": "read"
    },
    {
      "name": "get_projects_id_environments",
      "kind": "operation",
      "description": "Environments of a project",
      "operation_id": "get_projects_id_environments",
      "method": "GET",
      "path": "/projects/{id}/environments",
      "exposure": "read"
    },
    {
      "name": "get_quest",
      "kind": "operation",
      "description": "Read a quest program",
      "operation_id": "get_quest",
      "method": "GET",
      "path": "/quests/{id}",
      "exposure": "read"
    },
    {
      "name": "get_quest_participation",
      "kind": "operation",
      "description": "Read a retained quest participation",
      "operation_id": "get_quest_participation",
      "method": "GET",
      "path": "/quests/{id}/participations/{participation_id}",
      "exposure": "read"
    },
    {
      "name": "get_referral",
      "kind": "operation",
      "description": "Read a referral program. ETag is the program version.",
      "operation_id": "get_referral",
      "method": "GET",
      "path": "/referrals/{id}",
      "exposure": "read"
    },
    {
      "name": "get_referral_settlement",
      "kind": "operation",
      "description": "Read a referral settlement with its status and review state",
      "operation_id": "get_referral_settlement",
      "method": "GET",
      "path": "/referrals/{id}/settlements/{settlement_id}",
      "exposure": "read"
    },
    {
      "name": "get_reward_issuances",
      "kind": "operation",
      "description": "List issuances",
      "operation_id": "get_reward_issuances",
      "method": "GET",
      "path": "/reward_issuances",
      "exposure": "read"
    },
    {
      "name": "get_reward_issuances_id",
      "kind": "operation",
      "description": "One issuance",
      "operation_id": "get_reward_issuances_id",
      "method": "GET",
      "path": "/reward_issuances/{id}",
      "exposure": "read"
    },
    {
      "name": "get_reward_supplier",
      "kind": "operation",
      "description": "One reward supplier",
      "operation_id": "get_reward_supplier",
      "method": "GET",
      "path": "/reward_suppliers/{id}",
      "exposure": "read"
    },
    {
      "name": "get_rewards",
      "kind": "operation",
      "description": "List rewards with issued counts",
      "operation_id": "get_rewards",
      "method": "GET",
      "path": "/rewards",
      "exposure": "read"
    },
    {
      "name": "get_rewards_id",
      "kind": "operation",
      "description": "One reward",
      "operation_id": "get_rewards_id",
      "method": "GET",
      "path": "/rewards/{id}",
      "exposure": "read"
    },
    {
      "name": "get_rules",
      "kind": "operation",
      "description": "List rules",
      "operation_id": "get_rules",
      "method": "GET",
      "path": "/rules",
      "exposure": "read"
    },
    {
      "name": "get_rules_id",
      "kind": "operation",
      "description": "One rule with its active version and draft",
      "operation_id": "get_rules_id",
      "method": "GET",
      "path": "/rules/{id}",
      "exposure": "read"
    },
    {
      "name": "get_rules_id_versions",
      "kind": "operation",
      "description": "Immutable versions, newest first",
      "operation_id": "get_rules_id_versions",
      "method": "GET",
      "path": "/rules/{id}/versions",
      "exposure": "read"
    },
    {
      "name": "get_season",
      "kind": "operation",
      "description": "Read a season",
      "operation_id": "get_season",
      "method": "GET",
      "path": "/seasons/{id}",
      "exposure": "read"
    },
    {
      "name": "get_season_occurrence",
      "kind": "operation",
      "description": "Read a season occurrence",
      "operation_id": "get_season_occurrence",
      "method": "GET",
      "path": "/seasons/{id}/occurrences/{occurrence_id}",
      "exposure": "read"
    },
    {
      "name": "get_season_version",
      "kind": "operation",
      "description": "Read an immutable season version",
      "operation_id": "get_season_version",
      "method": "GET",
      "path": "/seasons/{id}/versions/{version_id}",
      "exposure": "read"
    },
    {
      "name": "get_segments",
      "kind": "operation",
      "description": "List segments",
      "operation_id": "get_segments",
      "method": "GET",
      "path": "/segments",
      "exposure": "read"
    },
    {
      "name": "get_segments_id",
      "kind": "operation",
      "description": "One segment by id or name",
      "operation_id": "get_segments_id",
      "method": "GET",
      "path": "/segments/{id}",
      "exposure": "read"
    },
    {
      "name": "get_segments_id_eligibility_customer_id",
      "kind": "operation",
      "description": "Is this customer in the segment right now (dynamic ones are evaluated for this customer)",
      "operation_id": "get_segments_id_eligibility_customer_id",
      "method": "GET",
      "path": "/segments/{id}/eligibility/{customer_id}",
      "exposure": "read"
    },
    {
      "name": "get_segments_id_members",
      "kind": "operation",
      "description": "Members: static ones, or the materialised members of a dynamic segment",
      "operation_id": "get_segments_id_members",
      "method": "GET",
      "path": "/segments/{id}/members",
      "exposure": "read"
    },
    {
      "name": "get_shop_offer",
      "kind": "operation",
      "description": "Read a shop offer by id or key",
      "operation_id": "get_shop_offer",
      "method": "GET",
      "path": "/shop_offers/{id}",
      "exposure": "read"
    },
    {
      "name": "get_store_credit_application",
      "kind": "operation",
      "description": "One store credit application",
      "operation_id": "get_store_credit_application",
      "method": "GET",
      "path": "/store_credit/applications/{id}",
      "exposure": "read"
    },
    {
      "name": "get_store_credit_reconciliation",
      "kind": "operation",
      "description": "Issued, held, captured, returned, refunded and outstanding credit per wallet",
      "operation_id": "get_store_credit_reconciliation",
      "method": "GET",
      "path": "/store_credit/reconciliation",
      "exposure": "read"
    },
    {
      "name": "get_streak",
      "kind": "operation",
      "description": "Read a streak program",
      "operation_id": "get_streak",
      "method": "GET",
      "path": "/streaks/{id}",
      "exposure": "read"
    },
    {
      "name": "get_streak_participation",
      "kind": "operation",
      "description": "Read a retained streak participation",
      "operation_id": "get_streak_participation",
      "method": "GET",
      "path": "/streaks/{id}/participations/{participation_id}",
      "exposure": "read"
    },
    {
      "name": "get_supplier_settlement",
      "kind": "operation",
      "description": "Settlement for a supplier and period: orders, face value, cost, partner and merchant funded amounts per item and in total; format=csv adds CSV text",
      "operation_id": "get_supplier_settlement",
      "method": "GET",
      "path": "/reward_suppliers/{id}/settlement",
      "exposure": "read"
    },
    {
      "name": "get_team",
      "kind": "operation",
      "description": "Read one team with its owner, invite code and moderation state",
      "operation_id": "get_team",
      "method": "GET",
      "path": "/teams/{id}",
      "exposure": "read"
    },
    {
      "name": "get_team_quest_board",
      "kind": "operation",
      "description": "Rank the teams of a period by progress (ties: earlier completion); the current period by default",
      "operation_id": "get_team_quest_board",
      "method": "GET",
      "path": "/team_quest_definitions/{id}/board",
      "exposure": "read"
    },
    {
      "name": "get_team_quest_contributions",
      "kind": "operation",
      "description": "Read a team quest with what each member and past contributor did and their reward state",
      "operation_id": "get_team_quest_contributions",
      "method": "GET",
      "path": "/team_quests/{id}/contributions",
      "exposure": "read"
    },
    {
      "name": "get_team_quest_definition",
      "kind": "operation",
      "description": "Read one team quest definition by id or key",
      "operation_id": "get_team_quest_definition",
      "method": "GET",
      "path": "/team_quest_definitions/{id}",
      "exposure": "read"
    },
    {
      "name": "get_tier_programs",
      "kind": "operation",
      "description": "List tier programs with levels",
      "operation_id": "get_tier_programs",
      "method": "GET",
      "path": "/tier_programs",
      "exposure": "read"
    },
    {
      "name": "get_tier_programs_id",
      "kind": "operation",
      "description": "One tier program",
      "operation_id": "get_tier_programs_id",
      "method": "GET",
      "path": "/tier_programs/{id}",
      "exposure": "read"
    },
    {
      "name": "get_users_me",
      "kind": "operation",
      "description": "The caller and their memberships",
      "operation_id": "get_users_me",
      "method": "GET",
      "path": "/users/me",
      "exposure": "read"
    },
    {
      "name": "get_webhook_deliveries",
      "kind": "operation",
      "description": "List deliveries (newest first)",
      "operation_id": "get_webhook_deliveries",
      "method": "GET",
      "path": "/webhook_deliveries",
      "exposure": "read"
    },
    {
      "name": "get_webhook_deliveries_id",
      "kind": "operation",
      "description": "One delivery with its envelope and attempt history",
      "operation_id": "get_webhook_deliveries_id",
      "method": "GET",
      "path": "/webhook_deliveries/{id}",
      "exposure": "read"
    },
    {
      "name": "get_webhook_endpoints",
      "kind": "operation",
      "description": "List endpoints (secrets never shown)",
      "operation_id": "get_webhook_endpoints",
      "method": "GET",
      "path": "/webhook_endpoints",
      "exposure": "read"
    },
    {
      "name": "get_webhook_endpoints_id",
      "kind": "operation",
      "description": "One endpoint",
      "operation_id": "get_webhook_endpoints_id",
      "method": "GET",
      "path": "/webhook_endpoints/{id}",
      "exposure": "read"
    },
    {
      "name": "inspect_event_contracts",
      "kind": "composite",
      "description": "The event definitions of this environment (id and name), and the full contract (schema, enforcement, trust, samples) of up to 20 requested event names.",
      "steps": [
        "get_event_definitions",
        "get_event_definitions_id"
      ]
    },
    {
      "name": "inspect_operation",
      "kind": "composite",
      "description": "The full tool description, input schema and output schema of one tool this credential may call. No API call.",
      "steps": []
    },
    {
      "name": "list_badge_grants",
      "kind": "operation",
      "description": "List the grants of a badge participation",
      "operation_id": "list_badge_grants",
      "method": "GET",
      "path": "/badges/{id}/participations/{participation_id}/grants",
      "exposure": "read"
    },
    {
      "name": "list_badge_participations",
      "kind": "operation",
      "description": "List retained badge participations",
      "operation_id": "list_badge_participations",
      "method": "GET",
      "path": "/badges/{id}/participations",
      "exposure": "read"
    },
    {
      "name": "list_badge_revocations",
      "kind": "operation",
      "description": "List the revocations of a badge participation",
      "operation_id": "list_badge_revocations",
      "method": "GET",
      "path": "/badges/{id}/participations/{participation_id}/revocations",
      "exposure": "read"
    },
    {
      "name": "list_badges",
      "kind": "operation",
      "description": "List badge programs",
      "operation_id": "list_badges",
      "method": "GET",
      "path": "/badges",
      "exposure": "read"
    },
    {
      "name": "list_battle_passes",
      "kind": "operation",
      "description": "List battle passes",
      "operation_id": "list_battle_passes",
      "method": "GET",
      "path": "/battle_passes",
      "exposure": "read"
    },
    {
      "name": "list_bulk_operation_items",
      "kind": "operation",
      "description": "List the frozen items of a bulk operation with their status and error",
      "operation_id": "list_bulk_operation_items",
      "method": "GET",
      "path": "/bulk_operations/{id}/items",
      "exposure": "read"
    },
    {
      "name": "list_bulk_operations",
      "kind": "operation",
      "description": "List bulk operations (newest first)",
      "operation_id": "list_bulk_operations",
      "method": "GET",
      "path": "/bulk_operations",
      "exposure": "read"
    },
    {
      "name": "list_change_sets",
      "kind": "operation",
      "description": "List change sets",
      "operation_id": "list_change_sets",
      "method": "GET",
      "path": "/change_sets",
      "exposure": "read"
    },
    {
      "name": "list_connector_receipts",
      "kind": "operation",
      "description": "Recent webhook deliveries of a connector and what became of each",
      "operation_id": "list_connector_receipts",
      "method": "GET",
      "path": "/connectors/{id}/receipts",
      "exposure": "read"
    },
    {
      "name": "list_connectors",
      "kind": "operation",
      "description": "List connector installations (newest first)",
      "operation_id": "list_connectors",
      "method": "GET",
      "path": "/connectors",
      "exposure": "read"
    },
    {
      "name": "list_context_presets",
      "kind": "operation",
      "description": "List the business types with the terminology and mechanic modes each one starts from. Static: the same for every caller, no ETag.",
      "operation_id": "list_context_presets",
      "method": "GET",
      "path": "/context/presets",
      "exposure": "read"
    },
    {
      "name": "list_customer_battle_passes",
      "kind": "operation",
      "description": "Read every active battle pass as a customer's group sees it now",
      "operation_id": "list_customer_battle_passes",
      "method": "GET",
      "path": "/customers/{id}/battle_passes",
      "exposure": "read"
    },
    {
      "name": "list_customer_blocks",
      "kind": "operation",
      "description": "List the players a customer has blocked",
      "operation_id": "list_customer_blocks",
      "method": "GET",
      "path": "/customers/{id}/blocks",
      "exposure": "read"
    },
    {
      "name": "list_customer_energy",
      "kind": "operation",
      "description": "Read a customer's energy at the server's now",
      "operation_id": "list_customer_energy",
      "method": "GET",
      "path": "/customers/{id}/energy",
      "exposure": "read"
    },
    {
      "name": "list_customer_experiments",
      "kind": "operation",
      "description": "A customer's variant in every running experiment",
      "operation_id": "list_customer_experiments",
      "method": "GET",
      "path": "/customers/{id}/experiments",
      "exposure": "read"
    },
    {
      "name": "list_customer_export_section",
      "kind": "operation",
      "description": "One page of one customer export section; follow next_cursor until it is null to read the section completely",
      "operation_id": "list_customer_export_section",
      "method": "GET",
      "path": "/customers/{id}/export/{section}",
      "exposure": "read"
    },
    {
      "name": "list_customer_friends",
      "kind": "operation",
      "description": "List a customer's friends, or their incoming or outgoing friend requests",
      "operation_id": "list_customer_friends",
      "method": "GET",
      "path": "/customers/{id}/friends",
      "exposure": "read"
    },
    {
      "name": "list_customer_inventory",
      "kind": "operation",
      "description": "Read a customer's inventory",
      "operation_id": "list_customer_inventory",
      "method": "GET",
      "path": "/customers/{id}/inventory",
      "exposure": "read"
    },
    {
      "name": "list_customer_inventory_entries",
      "kind": "operation",
      "description": "List a customer's inventory ledger entries, newest first",
      "operation_id": "list_customer_inventory_entries",
      "method": "GET",
      "path": "/customers/{id}/inventory_entries",
      "exposure": "read"
    },
    {
      "name": "list_customer_leagues",
      "kind": "operation",
      "description": "Read a customer's tier, rank and last result in every active league",
      "operation_id": "list_customer_leagues",
      "method": "GET",
      "path": "/customers/{id}/leagues",
      "exposure": "read"
    },
    {
      "name": "list_customer_notification_devices",
      "kind": "operation",
      "description": "List a customer's push devices (never the tokens)",
      "operation_id": "list_customer_notification_devices",
      "method": "GET",
      "path": "/customers/{id}/notification_devices",
      "exposure": "read"
    },
    {
      "name": "list_customer_participations",
      "kind": "operation",
      "description": "List a customer's program participations",
      "operation_id": "list_customer_participations",
      "method": "GET",
      "path": "/customers/{id}/participations",
      "exposure": "read"
    },
    {
      "name": "list_customer_points_transfers",
      "kind": "operation",
      "description": "Transfers a customer sent or received (newest first)",
      "operation_id": "list_customer_points_transfers",
      "method": "GET",
      "path": "/customers/{id}/transfers",
      "exposure": "read"
    },
    {
      "name": "list_customer_store_credit",
      "kind": "operation",
      "description": "A customer's store credit per wallet, with the amount held by open orders",
      "operation_id": "list_customer_store_credit",
      "method": "GET",
      "path": "/customers/{id}/store_credit",
      "exposure": "read"
    },
    {
      "name": "list_energy_definitions",
      "kind": "operation",
      "description": "List energy definitions",
      "operation_id": "list_energy_definitions",
      "method": "GET",
      "path": "/energy_definitions",
      "exposure": "read"
    },
    {
      "name": "list_experiment_templates",
      "kind": "operation",
      "description": "Experiment templates for common goals (streak lift, day 7 retention, purchase conversion): what each measures and which targets to pick",
      "operation_id": "list_experiment_templates",
      "method": "GET",
      "path": "/experiment_templates",
      "exposure": "read"
    },
    {
      "name": "list_experiments",
      "kind": "operation",
      "description": "List experiments, newest first",
      "operation_id": "list_experiments",
      "method": "GET",
      "path": "/experiments",
      "exposure": "read"
    },
    {
      "name": "list_friend_quest_definitions",
      "kind": "operation",
      "description": "List friend quest definitions, newest first",
      "operation_id": "list_friend_quest_definitions",
      "method": "GET",
      "path": "/friend_quest_definitions",
      "exposure": "read"
    },
    {
      "name": "list_friend_quests",
      "kind": "operation",
      "description": "List the quests of a friend quest definition, newest first, with customer ids",
      "operation_id": "list_friend_quests",
      "method": "GET",
      "path": "/friend_quest_definitions/{id}/quests",
      "exposure": "read"
    },
    {
      "name": "list_friend_streak_definitions",
      "kind": "operation",
      "description": "List friend streak definitions, newest first",
      "operation_id": "list_friend_streak_definitions",
      "method": "GET",
      "path": "/friend_streak_definitions",
      "exposure": "read"
    },
    {
      "name": "list_import_rows",
      "kind": "operation",
      "description": "The rows of an import in file order, optionally by status",
      "operation_id": "list_import_rows",
      "method": "GET",
      "path": "/imports/{id}/rows",
      "exposure": "read"
    },
    {
      "name": "list_imports",
      "kind": "operation",
      "description": "List imports (newest first)",
      "operation_id": "list_imports",
      "method": "GET",
      "path": "/imports",
      "exposure": "read"
    },
    {
      "name": "list_items",
      "kind": "operation",
      "description": "List item definitions",
      "operation_id": "list_items",
      "method": "GET",
      "path": "/items",
      "exposure": "read"
    },
    {
      "name": "list_leaderboard_boards",
      "kind": "operation",
      "description": "List leaderboard seasons and scopes",
      "operation_id": "list_leaderboard_boards",
      "method": "GET",
      "path": "/leaderboards/{id}/boards",
      "exposure": "read"
    },
    {
      "name": "list_leaderboard_entries",
      "kind": "operation",
      "description": "Read a board's entries, or one customer's entry",
      "operation_id": "list_leaderboard_entries",
      "method": "GET",
      "path": "/leaderboards/{id}/boards/{board_id}/entries",
      "exposure": "read"
    },
    {
      "name": "list_leaderboard_standings",
      "kind": "operation",
      "description": "Read leaderboard standings",
      "operation_id": "list_leaderboard_standings",
      "method": "GET",
      "path": "/leaderboards/{id}/boards/{board_id}/standings",
      "exposure": "read"
    },
    {
      "name": "list_leaderboards",
      "kind": "operation",
      "description": "List leaderboard programs",
      "operation_id": "list_leaderboards",
      "method": "GET",
      "path": "/leaderboards",
      "exposure": "read"
    },
    {
      "name": "list_league_cohorts",
      "kind": "operation",
      "description": "List the cohorts (groups of about 30) of a league period",
      "operation_id": "list_league_cohorts",
      "method": "GET",
      "path": "/league_periods/{id}/cohorts",
      "exposure": "read"
    },
    {
      "name": "list_league_members",
      "kind": "operation",
      "description": "List the members of a league and the tier each one holds",
      "operation_id": "list_league_members",
      "method": "GET",
      "path": "/leagues/{id}/members",
      "exposure": "read"
    },
    {
      "name": "list_league_periods",
      "kind": "operation",
      "description": "List the periods of a league, newest first, with the configuration each one pinned",
      "operation_id": "list_league_periods",
      "method": "GET",
      "path": "/leagues/{id}/periods",
      "exposure": "read"
    },
    {
      "name": "list_leagues",
      "kind": "operation",
      "description": "List leagues, newest first",
      "operation_id": "list_leagues",
      "method": "GET",
      "path": "/leagues",
      "exposure": "read"
    },
    {
      "name": "list_level_participations",
      "kind": "operation",
      "description": "List retained level participations",
      "operation_id": "list_level_participations",
      "method": "GET",
      "path": "/levels/{id}/participations",
      "exposure": "read"
    },
    {
      "name": "list_levels",
      "kind": "operation",
      "description": "List level programs",
      "operation_id": "list_levels",
      "method": "GET",
      "path": "/levels",
      "exposure": "read"
    },
    {
      "name": "list_loot_tables",
      "kind": "operation",
      "description": "List loot tables",
      "operation_id": "list_loot_tables",
      "method": "GET",
      "path": "/loot_tables",
      "exposure": "read"
    },
    {
      "name": "list_match_profiles",
      "kind": "operation",
      "description": "List match profiles",
      "operation_id": "list_match_profiles",
      "method": "GET",
      "path": "/match_profiles",
      "exposure": "read"
    },
    {
      "name": "list_match_results",
      "kind": "operation",
      "description": "List reported matches, oldest first; status=held is the review queue",
      "operation_id": "list_match_results",
      "method": "GET",
      "path": "/match_results",
      "exposure": "read"
    },
    {
      "name": "list_notification_catalog",
      "kind": "operation",
      "description": "List the message types Orishare knows, their triggers, variables and default copy",
      "operation_id": "list_notification_catalog",
      "method": "GET",
      "path": "/notification_catalog",
      "exposure": "read"
    },
    {
      "name": "list_notification_connectors",
      "kind": "operation",
      "description": "List the connectors to the customer's own messaging tools (never the credentials)",
      "operation_id": "list_notification_connectors",
      "method": "GET",
      "path": "/notification_connectors",
      "exposure": "read"
    },
    {
      "name": "list_notification_message_types",
      "kind": "operation",
      "description": "List the message types this environment sends",
      "operation_id": "list_notification_message_types",
      "method": "GET",
      "path": "/notification_message_types",
      "exposure": "read"
    },
    {
      "name": "list_notification_messages",
      "kind": "operation",
      "description": "List recorded messages and their delivery status, newest first",
      "operation_id": "list_notification_messages",
      "method": "GET",
      "path": "/notification_messages",
      "exposure": "read"
    },
    {
      "name": "list_notification_templates",
      "kind": "operation",
      "description": "List the templates of a message type, per channel and locale",
      "operation_id": "list_notification_templates",
      "method": "GET",
      "path": "/notification_message_types/{id}/templates",
      "exposure": "read"
    },
    {
      "name": "list_participation_contributions",
      "kind": "operation",
      "description": "List a participation's contributions",
      "operation_id": "list_participation_contributions",
      "method": "GET",
      "path": "/program_participations/{id}/contributions",
      "exposure": "read"
    },
    {
      "name": "list_pending_actions",
      "kind": "operation",
      "description": "List the requests waiting for, or decided by, a person (newest first)",
      "operation_id": "list_pending_actions",
      "method": "GET",
      "path": "/pending_actions",
      "exposure": "read"
    },
    {
      "name": "list_playbook_installations",
      "kind": "operation",
      "description": "List playbook installations with the drift of every owned resource",
      "operation_id": "list_playbook_installations",
      "method": "GET",
      "path": "/playbook_installations",
      "exposure": "read"
    },
    {
      "name": "list_playbooks",
      "kind": "operation",
      "description": "List the first-party playbooks with their versions and requirements",
      "operation_id": "list_playbooks",
      "method": "GET",
      "path": "/playbooks",
      "exposure": "read"
    },
    {
      "name": "list_portal_configuration_versions",
      "kind": "operation",
      "description": "List the immutable versions of a portal configuration, newest first",
      "operation_id": "list_portal_configuration_versions",
      "method": "GET",
      "path": "/portal_configurations/{id}/versions",
      "exposure": "read"
    },
    {
      "name": "list_portal_configurations",
      "kind": "operation",
      "description": "List the portal configurations of the environment",
      "operation_id": "list_portal_configurations",
      "method": "GET",
      "path": "/portal_configurations",
      "exposure": "read"
    },
    {
      "name": "list_program_versions",
      "kind": "operation",
      "description": "List immutable program versions",
      "operation_id": "list_program_versions",
      "method": "GET",
      "path": "/programs/{id}/versions",
      "exposure": "read"
    },
    {
      "name": "list_programs",
      "kind": "operation",
      "description": "List programs",
      "operation_id": "list_programs",
      "method": "GET",
      "path": "/programs",
      "exposure": "read"
    },
    {
      "name": "list_quest_participations",
      "kind": "operation",
      "description": "List retained quest participations",
      "operation_id": "list_quest_participations",
      "method": "GET",
      "path": "/quests/{id}/participations",
      "exposure": "read"
    },
    {
      "name": "list_quests",
      "kind": "operation",
      "description": "List quest programs",
      "operation_id": "list_quests",
      "method": "GET",
      "path": "/quests",
      "exposure": "read"
    },
    {
      "name": "list_referral_codes",
      "kind": "operation",
      "description": "List the share codes of a referral program",
      "operation_id": "list_referral_codes",
      "method": "GET",
      "path": "/referrals/{id}/codes",
      "exposure": "read"
    },
    {
      "name": "list_referral_settlements",
      "kind": "operation",
      "description": "List the settlements of a referral program with their status and review state. Risk decisions and correction details are never returned.",
      "operation_id": "list_referral_settlements",
      "method": "GET",
      "path": "/referrals/{id}/settlements",
      "exposure": "read"
    },
    {
      "name": "list_referrals",
      "kind": "operation",
      "description": "List referral programs",
      "operation_id": "list_referrals",
      "method": "GET",
      "path": "/referrals",
      "exposure": "read"
    },
    {
      "name": "list_reward_supplier_links",
      "kind": "operation",
      "description": "List a supplier's links, open and closed (newest first)",
      "operation_id": "list_reward_supplier_links",
      "method": "GET",
      "path": "/reward_suppliers/{id}/links",
      "exposure": "read"
    },
    {
      "name": "list_reward_suppliers",
      "kind": "operation",
      "description": "List reward suppliers (newest first)",
      "operation_id": "list_reward_suppliers",
      "method": "GET",
      "path": "/reward_suppliers",
      "exposure": "read"
    },
    {
      "name": "list_season_occurrences",
      "kind": "operation",
      "description": "List season occurrences",
      "operation_id": "list_season_occurrences",
      "method": "GET",
      "path": "/seasons/{id}/occurrences",
      "exposure": "read"
    },
    {
      "name": "list_season_versions",
      "kind": "operation",
      "description": "List immutable season versions",
      "operation_id": "list_season_versions",
      "method": "GET",
      "path": "/seasons/{id}/versions",
      "exposure": "read"
    },
    {
      "name": "list_seasons",
      "kind": "operation",
      "description": "List seasons",
      "operation_id": "list_seasons",
      "method": "GET",
      "path": "/seasons",
      "exposure": "read"
    },
    {
      "name": "list_shop_offers",
      "kind": "operation",
      "description": "List shop offers",
      "operation_id": "list_shop_offers",
      "method": "GET",
      "path": "/shop_offers",
      "exposure": "read"
    },
    {
      "name": "list_store_credit_applications",
      "kind": "operation",
      "description": "List store credit applications (newest first)",
      "operation_id": "list_store_credit_applications",
      "method": "GET",
      "path": "/store_credit/applications",
      "exposure": "read"
    },
    {
      "name": "list_store_credit_wallets",
      "kind": "operation",
      "description": "List store credit wallets (money valued currencies)",
      "operation_id": "list_store_credit_wallets",
      "method": "GET",
      "path": "/store_credit/wallets",
      "exposure": "read"
    },
    {
      "name": "list_streak_freezes",
      "kind": "operation",
      "description": "List the freeze entries of a streak participation",
      "operation_id": "list_streak_freezes",
      "method": "GET",
      "path": "/streaks/{id}/participations/{participation_id}/freezes",
      "exposure": "read"
    },
    {
      "name": "list_streak_participations",
      "kind": "operation",
      "description": "List retained streak participations",
      "operation_id": "list_streak_participations",
      "method": "GET",
      "path": "/streaks/{id}/participations",
      "exposure": "read"
    },
    {
      "name": "list_streaks",
      "kind": "operation",
      "description": "List streak programs",
      "operation_id": "list_streaks",
      "method": "GET",
      "path": "/streaks",
      "exposure": "read"
    },
    {
      "name": "list_supplier_catalogue_items",
      "kind": "operation",
      "description": "List a supplier's catalogue items (newest first)",
      "operation_id": "list_supplier_catalogue_items",
      "method": "GET",
      "path": "/reward_suppliers/{id}/catalogue_items",
      "exposure": "read"
    },
    {
      "name": "list_supplier_orders",
      "kind": "operation",
      "description": "List the orders placed with a supplier for redemptions (newest first)",
      "operation_id": "list_supplier_orders",
      "method": "GET",
      "path": "/reward_suppliers/{id}/orders",
      "exposure": "read"
    },
    {
      "name": "list_supplier_orders_needing_attention",
      "kind": "operation",
      "description": "Orders that need an operator decision: delivered after the redemption was cancelled, cancelled but possibly held by the supplier, or with an unknown outcome",
      "operation_id": "list_supplier_orders_needing_attention",
      "method": "GET",
      "path": "/reward_suppliers/{id}/reconciliation",
      "exposure": "read"
    },
    {
      "name": "list_team_members",
      "kind": "operation",
      "description": "List the members of a team with their roles and customer ids",
      "operation_id": "list_team_members",
      "method": "GET",
      "path": "/teams/{id}/members",
      "exposure": "read"
    },
    {
      "name": "list_team_quest_definitions",
      "kind": "operation",
      "description": "List team quest definitions, newest first",
      "operation_id": "list_team_quest_definitions",
      "method": "GET",
      "path": "/team_quest_definitions",
      "exposure": "read"
    },
    {
      "name": "list_teams",
      "kind": "operation",
      "description": "List teams, newest first; filter by status or search by name prefix",
      "operation_id": "list_teams",
      "method": "GET",
      "path": "/teams",
      "exposure": "read"
    },
    {
      "name": "post_rules_id_simulate",
      "kind": "operation",
      "description": "Preview a rule using a synthetic input or an authenticated commerce event",
      "operation_id": "post_rules_id_simulate",
      "method": "POST",
      "path": "/rules/{id}/simulate",
      "exposure": "read"
    },
    {
      "name": "preview_change_set",
      "kind": "composite",
      "description": "Propose a configuration change set (create_change_set) and read back its stored plan (get_change_set): diff, digest, effects, flags. This tool applies nothing: a person confirms it in the dashboard, at dashboard_url (<dashboard origin>/change-sets/<id>; absent when no dashboard origin is configured). The body is the create_change_set request body (see inspect_operation). Where the environment's autonomy policy allows, create_change_set_application applies it instead.",
      "steps": [
        "create_change_set",
        "get_change_set"
      ]
    },
    {
      "name": "preview_playbook",
      "kind": "composite",
      "description": "Read one playbook manifest (get_playbook; the latest version unless version is given) and propose its install (create_playbook_preview) with the given parameters, collision choices, prefix and holdout. Returns the manifest summary and the proposed change set, or the API refusal (playbook_refused lists missing requirements, trust, collisions and bounds). Nothing is installed; a person confirms it in the dashboard, at dashboard_url (<dashboard origin>/change-sets/<id>; absent when no dashboard origin is configured).",
      "steps": [
        "get_playbook",
        "create_playbook_preview"
      ]
    },
    {
      "name": "quote_store_credit",
      "kind": "operation",
      "description": "Preview how much store credit an order total can take (changes nothing)",
      "operation_id": "quote_store_credit",
      "method": "GET",
      "path": "/customers/{id}/store_credit/quote",
      "exposure": "read"
    },
    {
      "name": "request_confirmation",
      "kind": "composite",
      "description": "Read one proposed change set (get_change_set) and return the dashboard link where a person confirms it: dashboard_url, <dashboard origin>/change-sets/<id> (absent when no dashboard origin is configured). It never commits.",
      "steps": [
        "get_change_set"
      ]
    },
    {
      "name": "simulate_rule",
      "kind": "composite",
      "description": "Dry-run one rule against an event, fact or draft (post_rules_id_simulate). Commits nothing. The body is the post_rules_id_simulate request body (see inspect_operation).",
      "steps": [
        "post_rules_id_simulate"
      ]
    }
  ],
  "change_set_commands": [
    {
      "type": "attribute_definition.upsert",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "campaign.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "campaigns:write",
          "config:write"
        ],
        "production": [
          "campaigns:write",
          "config:write"
        ]
      }
    },
    {
      "type": "campaign.delete",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "campaigns:write",
          "config:write"
        ],
        "production": [
          "campaigns:write",
          "config:write"
        ]
      }
    },
    {
      "type": "campaign.set_status",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "campaigns:write",
          "config:write"
        ],
        "production": [
          "campaigns:write",
          "config:write"
        ]
      }
    },
    {
      "type": "campaign.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "campaigns:write",
          "config:write"
        ],
        "production": [
          "campaigns:write",
          "config:write"
        ]
      }
    },
    {
      "type": "catalogue.create",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "catalogue.revise",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "challenge.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "challenge.delete",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "challenge.set_status",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "challenge.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "config.apply_document",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "context.update",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "counter_definition.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "rules:write"
        ],
        "production": [
          "config:write",
          "rules:write"
        ]
      }
    },
    {
      "type": "counter_definition.delete",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "rules:write"
        ],
        "production": [
          "config:write",
          "rules:write"
        ]
      }
    },
    {
      "type": "currency.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "currencies:write"
        ],
        "production": [
          "config:write",
          "currencies:write"
        ]
      }
    },
    {
      "type": "currency.delete",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "currencies:write"
        ],
        "production": [
          "config:write",
          "currencies:write"
        ]
      }
    },
    {
      "type": "currency.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "currencies:write"
        ],
        "production": [
          "config:write",
          "currencies:write"
        ]
      }
    },
    {
      "type": "economy_battle_pass.archive",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_battle_pass.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_battle_pass.pause",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_battle_pass.resume",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_battle_pass.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_energy.archive",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_energy.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_energy.pause",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_energy.resume",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_energy.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_item.archive",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_item.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_item.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_loot_table.archive",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_loot_table.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_loot_table.pause",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_loot_table.resume",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_loot_table.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_offer.archive",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_offer.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "economy_offer.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "event_definition.update",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "experiment.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "analytics:write",
          "config:write"
        ],
        "production": [
          "analytics:write",
          "config:write"
        ]
      }
    },
    {
      "type": "experiment.delete",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "analytics:write",
          "config:write"
        ],
        "production": [
          "analytics:write",
          "config:write"
        ]
      }
    },
    {
      "type": "experiment.end",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "analytics:write",
          "config:write"
        ],
        "production": [
          "analytics:write",
          "config:write"
        ]
      }
    },
    {
      "type": "experiment.start",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "analytics:write",
          "config:write"
        ],
        "production": [
          "analytics:write",
          "config:write"
        ]
      }
    },
    {
      "type": "friend_quest_definition.activate",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "friend_quest_definition.archive",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "friend_quest_definition.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "friend_quest_definition.pause",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "friend_quest_definition.resume",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "friend_quest_definition.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "friend_streak_definition.activate",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "friend_streak_definition.archive",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "friend_streak_definition.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "friend_streak_definition.pause",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "friend_streak_definition.resume",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "friend_streak_definition.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "league.activate",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "league.archive",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "league.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "league.pause",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "league.resume",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "league.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "match_profile.archive",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "match_profile.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "match_profile.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "notification_message_type.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "notifications:write"
        ],
        "production": [
          "config:write",
          "notifications:write"
        ]
      }
    },
    {
      "type": "notification_message_type.pause",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "notifications:write"
        ],
        "production": [
          "config:write",
          "notifications:write"
        ]
      }
    },
    {
      "type": "notification_message_type.resume",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "notifications:write"
        ],
        "production": [
          "config:write",
          "notifications:write"
        ]
      }
    },
    {
      "type": "notification_message_type.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "notifications:write"
        ],
        "production": [
          "config:write",
          "notifications:write"
        ]
      }
    },
    {
      "type": "notification_settings.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "notifications:write"
        ],
        "production": [
          "config:write",
          "notifications:write"
        ]
      }
    },
    {
      "type": "notification_template.delete",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "notifications:write"
        ],
        "production": [
          "config:write",
          "notifications:write"
        ]
      }
    },
    {
      "type": "notification_template.put",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "notifications:write"
        ],
        "production": [
          "config:write",
          "notifications:write"
        ]
      }
    },
    {
      "type": "offer.publish",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "offer.publish_terms",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "offer.revoke",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "portal_configuration.activate_version",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "portal_configurations:write"
        ],
        "production": [
          "config:write",
          "portal_configurations:write"
        ]
      }
    },
    {
      "type": "portal_configuration.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "portal_configurations:write"
        ],
        "production": [
          "config:write",
          "portal_configurations:write"
        ]
      }
    },
    {
      "type": "portal_configuration.disable",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "portal_configurations:write"
        ],
        "production": [
          "config:write",
          "portal_configurations:write"
        ]
      }
    },
    {
      "type": "portal_configuration.enable",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "portal_configurations:write"
        ],
        "production": [
          "config:write",
          "portal_configurations:write"
        ]
      }
    },
    {
      "type": "portal_configuration.publish",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "portal_configurations:write"
        ],
        "production": [
          "config:write",
          "portal_configurations:write"
        ]
      }
    },
    {
      "type": "portal_configuration.save_draft",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "portal_configurations:write"
        ],
        "production": [
          "config:write",
          "portal_configurations:write"
        ]
      }
    },
    {
      "type": "presentation.update",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "program.activate",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "program.archive",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "program.create",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "program.pause",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "program.publish_definition",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "program.publish_version",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "program.rename",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "program.save_draft",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "reward.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "reward.delete",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "reward.set_status",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "reward.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "rule.archive",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "rule.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "rules:write"
        ],
        "production": [
          "config:write",
          "rules:write"
        ]
      }
    },
    {
      "type": "rule.pause",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "rules:write"
        ],
        "production": [
          "config:write",
          "rules:write"
        ]
      }
    },
    {
      "type": "rule.publish",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "rule.publish_draft",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "rules:publish_sandbox"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "rule.resume",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "rules:write"
        ],
        "production": [
          "config:write",
          "rules:write"
        ]
      }
    },
    {
      "type": "rule.rollback",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "rules:publish_sandbox"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "rule.save_draft",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "rules:write"
        ],
        "production": [
          "config:write",
          "rules:write"
        ]
      }
    },
    {
      "type": "season.archive",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "season.create",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "season.publish_definition",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "season.publish_version",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "season.set_scheduling",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "segment.create",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "segment.delete",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "segments:write"
        ],
        "production": [
          "config:write",
          "segments:write"
        ]
      }
    },
    {
      "type": "segment.rename",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "segments:write"
        ],
        "production": [
          "config:write",
          "segments:write"
        ]
      }
    },
    {
      "type": "segment.update",
      "kind": "document",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write"
        ],
        "production": [
          "config:write",
          "rules:publish"
        ]
      }
    },
    {
      "type": "team_quest_definition.activate",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "team_quest_definition.archive",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "team_quest_definition.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "team_quest_definition.pause",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "team_quest_definition.resume",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "team_quest_definition.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "tier_program.create",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "tier_program.delete",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "tier_program.set_status",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    },
    {
      "type": "tier_program.update",
      "kind": "operation",
      "proposal": true,
      "required_scopes": {
        "sandbox": [
          "config:write",
          "programs:write"
        ],
        "production": [
          "config:write",
          "programs:write"
        ]
      }
    }
  ],
  "ai_connections": {
    "docs": "https://docs.orishare.com/docs/connect-your-ai",
    "connector_url": "https://api.orishare.com/mcp/connect",
    "mcp_url": "https://api.orishare.com/mcp",
    "oauth": {
      "issuer": "https://api.orishare.com",
      "authorization_server_metadata": "https://api.orishare.com/.well-known/oauth-authorization-server",
      "protected_resource_metadata": [
        "https://api.orishare.com/.well-known/oauth-protected-resource/mcp/connect",
        "https://api.orishare.com/.well-known/oauth-protected-resource/mcp"
      ],
      "authorization_endpoint": "https://api.orishare.com/oauth/authorize",
      "token_endpoint": "https://api.orishare.com/oauth/token",
      "registration_endpoint": "https://api.orishare.com/oauth/register",
      "revocation_endpoint": "https://api.orishare.com/oauth/revoke",
      "registration_methods": [
        "client_id_metadata_document",
        "dynamic_client_registration"
      ],
      "pkce": [
        "S256"
      ],
      "grant_types": [
        "authorization_code",
        "refresh_token"
      ],
      "resources": [
        "https://api.orishare.com/mcp/connect",
        "https://api.orishare.com/mcp",
        "https://api.orishare.com/v1",
        "https://api.orishare.com"
      ],
      "access_token_ttl_seconds": 3600,
      "refresh_token_rotation": true,
      "iss_in_authorization_response": true,
      "loopback_redirect_port_ignored": true
    },
    "access_keys": {
      "prefix": "opat_",
      "header": "Authorization: Bearer opat_...",
      "mcp_url": "https://api.orishare.com/mcp",
      "access_levels": [
        "read_only",
        "full",
        "custom"
      ],
      "expiry_options": [
        "30d",
        "90d",
        "1y",
        "never"
      ],
      "default_environment": "A key or sign-in connection with a default environment acts in it when no X-Orishare-Environment header is sent; any other environment must be one it was granted."
    }
  }
}
